INIT(VIII) 2/22/74 INIT(VIII)
NAME
init - process control initialization
SYNOPSIS
/etc/init
DESCRIPTION
Init is invoked inside UNIX as the last step in the boot
procedure. Generally its role is to create a process for
each typewriter on which a user may log in.
First, init checks to see if the console switches contain
173030. (This number is likely to vary between systems.)
If so, the console typewriter /dev/tty8 is opened for
reading and writing and the Shell is invoked immediately.
This feature is used to bring up a single-user system. When
the system is brought up in this way, the getty and login
routines mentioned below and described elsewhere are not
used. If the Shell terminates, init starts over looking for
the console switch setting.
Otherwise, init invokes a Shell, with input taken from the
file /etc/rc. This command file performs housekeeping like
removing temporary files, mounting file systems, and
starting daemons.
Then init reads the file /etc/ttys and forks several times
to create a process for each typewriter specified in the
file. Each of these processes opens the appropriate
typewriter for reading and writing. These channels thus
receive file descriptors 0 and 1, the standard input and
output. Opening the typewriter will usually involve a
delay, since the open is not completed until someone is
dialed up and carrier established on the channel. Then the
process executes the program specified by its line in ttys;
the only program currently specifiable is /etc/getty (q.v.).
Getty reads the user's name and invokes login (q.v.) 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. Then the appropriate typewriter is
reopened and getty is reinvoked.
Init catches the hangup signal (signal #1) and interprets it
to mean that the switches should be examined as in a reboot:
if they indicate a multi-user system, the /etc/ttys file is
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.''
FILES
/dev/tty?, /etc/utmp, /usr/adm/wtmp, /etc/ttys, /etc/rc
SEE ALSO
login (I), kill (I), sh (I), ttys (V), getty (VIII)