INIT(8)INIT(8)NAMEinit - process control initialization
SYNOPSIS
/usr/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
reboot(8), and if this succeeds, begins multi-user operation. If the
reboot 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
immediately. 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 executes a command for each terminal
specified in the file. This command will usually be /usr/etc/getty.
Getty opens and initializes the terminal line, 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
logins and logouts. The wtmp entry is made only if a user logged in
successfully on the line. 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
unchanged 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 -HUP
1.'
Init will terminate multi-user operations and resume single-user mode
if sent a terminate (TERM) signal, i.e. ``kill -TERM 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 will cease creating new getty's and allow the system to slowly die
away, if it is sent a terminal stop (TSTP) signal, i.e. ``kill -TSTP
1''. A later hangup will resume full multi-user operations, or a
terminate will initiate a single user shell. This hook is used by
reboot(8) and halt(8).
Init's role is so critical that if it dies, the system will reboot
itself automatically. If, at bootstrap time, the init process cannot
be located, the system will loop in user mode at location 0x13.
DIAGNOSTICS
/usr/etc/getty gettyargs failing, sleeping. A process being started to
service a line is exiting quickly each time it is started. This is
often caused by a ringing or noisy terminal line. Init will sleep for
30 seconds, then continue trying to start the process.
WARNING: Something is hung (wont die); ps axl advised. A process is
hung and could not be killed when the system was shutting down. This
is usually caused by a process which is stuck in a device driver due to
a persistent device error condition.
FILES
/dev/console, /dev/tty*, /etc/utmp, /usr/adm/wtmp, /etc/ttys, /etc/rc
SEE ALSOlogin(1), kill(1), sh(1), ttys(5), crash(8V), getty(8), rc(8),
reboot(8), halt(8), shutdown(8)4th Berkeley Distribution May 22, 1986 INIT(8)