index.txt
INIT(8) System Manager's Manual INIT(8) NAME init - process control initialization SYNOPSIS /etc/init DESCRIPTION Init is invoked inside Unix as the last step in the boot procedure. It normally then runs the automatic reboot sequence as described in re‐ boot(8), and if this succeeds, begins multi-user operation. If the re‐ boot fails, it commences single user operation by giving the super-user a shell on the console. It is possible to pass parameters from the boot program to init so that single user operation is commenced immedi‐ ately. When such single user operation is terminated by killing the single-user shell (i.e. by hitting ^D), init runs /etc/rc without the reboot parameter. This command file performs housekeeping operations such as removing temporary files, mounting file systems, and starting daemons. In multi-user operation, init's role is to create a process for each terminal port on which a user may log in. To begin such operations, it reads the file /etc/ttys and forks to create a process for each termi‐ nal specified in the file. Each of these processes opens the appropri‐ ate terminal for reading and writing on file descriptors 0, 1, 2, and 3 (the standard input and output, the diagnostic output and /dev/tty). Opening the terminal will usually involve a delay, since the open is not completed until someone dials and carrier is established on the channel. Then /etc/getty is called with argument as specified by the second character of the ttys file line. Getty 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, 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 lo‐ gins and logouts. Then the appropriate terminal is reopened and getty is reinvoked. Init 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 un‐ changed in the file are undisturbed. Thus it is possible to drop or add terminal lines without rebooting the system by changing the ttys file and sending a hangup signal to the init process: use `kill -1 1.' Init will terminate multi-user operations and resume single-user mode if sent a terminate (SIGTERM, the default) signal, i.e. `kill 1'. If there are processes outstanding which are deadlocked (due to hardware or software failure), init will not wait for them all to die (which might take forever), but will time out after 30 seconds and print a warning message. Init's role is so critical that if it dies, the system will reboot it‐ self automatically. If, at bootstrap time, the init process cannot be located, the system will loop in user mode at location 0x13. FILES /dev/console, /dev/tty?, /etc/utmp, /usr/adm/wtmp, /etc/ttys, /etc/rc SEE ALSO login(8), kill(1), sh(1), ttys(5), getty(8), rc(8), reboot(8) INIT(8)