INIT.VM(8)

NAME
init.vm - process control initialization

SYNOPSIS
/etc/init.vm

DESCRIPTION
Init.vm is invoked inside UNIX as the last step in the boot procedure. Generally its role is to create a process for each terminal port on which a user may log in.

init.vm first opens the console terminal /dev/console for reading and writing, and then invokes a Shell. This feature brings up the system in single-user mode. The getty.vm and login routines mentioned below and described elsewhere are not used yet.

When the single-user shell terminates (usually caused by typing an EOT on the console), init invokes another Shell, with input taken from the file /etc/rc. This command file performs housekeeping operations such as removing temporary files, mounting file systems, and starting daemons.

Then init.vm reads the file /etc/ttys and forks several times to create a process for each terminal specified in the file. Each of these processes opens the appropriate terminal for reading and writing. These channels thus receive file descriptors 0 and 1, the standard input and output. Opening the terminal will usually involve a delay, since the open is not completed until someone is dialed up and carrier established on the channel. Then /etc/getty.vm is called with argument as specified by the second character of the ttys file line. Getty.vm reads the user's name and invokes login to log in the user and execute the Shell.

Ultimately the Shell will terminate because of an end-of-file either typed explicitly or generated as a result of hanging up. The main path of init.vm, which has been waiting for such an event, wakes up and removes the appropriate entry from the file utmp, which records current users, and makes an entry in /usr/adm/wtmp, which maintains a history of logins and logouts. Then the appropriate terminal is reopened and getty.vm is reinvoked.

Init.vm catches the hangup signal (signal SIGHUP) and interprets it to mean that the file /etc/ttys should be read again. The Shell process on each line which used to be active in ttys but is no longer there is terminated; a new process is created for each added line; lines unchanged in the file are undisturbed. Thus it is possible to drop or add phone lines without rebooting the system by changing the ttys file and sending a hangup signal to the init process: use `kill -1 1.'

To take the system down to a single user system from multi-user operation, use ``kill 1''.

FILES
/dev/console, /dev/tty?, /etc/utmp, /usr/adm/wtmp, /etc/ttys, /etc/rc

SEE ALSO
login(1), kill(1), sh(1), ttys(5), getty.vm(8)