INIT(8) GENIX Programmer'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
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 parame-
ters from the boot program to init so that single user operation is
commenced immediately. When such single user operation is ter-
minated by killing the single-user shell (i.e. by hitting ^D), init
runs /etc/rc without the reboot parameter. This command file per-
forms 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 several times to create a pro-
cess 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, 1 and 2, the stan-
dard input and output and the diagnostic output. Opening the termi-
nal will usually involve a delay, since the open is not completed
until someone is dialed up and carrier established on the channel.
If a terminal exists but an error occurs when trying to open the
terminal init complains by writing a message to the system console;
the message is repeated every 10 minutes for each such terminal
until the terminal is shut off in /etc/ttys and init notified (by a
hangup, as described below), or the terminal becomes accessible
(init checks again every minute). After an open succeeds,
/etc/getty is called with argument as specified by the second char-
acter 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 logins and logouts. The wtmp entry is made only if a
user logged in successfully on the line. Then the appropriate ter-
minal 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 pro-
cess 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
Printed 11/16/83 1
INIT(8) GENIX Programmer's Manual INIT(8)
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
-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 can-
not be located, the system will loop in user mode at location 0x13.
DIAGNOSTICS
init: tty: cannot open. A terminal which is turned on in the rc
file cannot be opened, likely because the requisite lines are either
not configured into the system or the associated device was not
attached during boot-time system configuration.
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 ALSO
login(1), kill(1), sh(1), ttys(5), crash(8), getty(8), rc(8),
reboot(8), halt(8), shutdown(8)
Printed 11/16/83 2