COHERENT manpages
This page displays the COHERENT manpage for init [System initialization].
List of available manpages
Index
init -- System Administration
System initialization
/etc/init
COHERENT invokes processes in special order. The kernel invokes the
command init as the initial process in the system. init runs as long as
the system remains up. init is the first process that the kernel starts.
The kernel always gives this process identifier 1.
init has two primary tasks: First, it guides the system through the latter
stages of booting and entering multi-user mode. Second, it launches the
appropriate processes so that users can log in and log out of COHERENT
correctly. The rest of this article describes how init performs these
tasks.
Booting and Entering Multi-user Mode
The following that init performs as it guides the system through entering
multi-user mode.
First, if file /usr/adm/wtmp exists, init records there the date and time
at which the system is being booted.
init then executes the shell script /etc/brc. This script usually loads the
keyboard table and invokes the command fsck to check the file systems for
errors If this script returns zero, then init enters multi-user mode; if
not, it spawns the single-user shell.
When the user at the console terminates the single-user shell (usually by
typing <ctrl-D>), init executes script /etc/rc and brings the system
up to the multiuser state. /etc/rc performs such chores as setting the
time zone, removing stale temporary files and lock files, and initializing
the modem. If you wish, it can invoke the command accton to enable process
accounting.
init then reads file /etc/ttys. For every local, enabled line, init spawns
the command getty with two arguments: the name of the port, and its speed
(as given in /etc/ttys). Before it spawns a getty, init sets the group
number for a new process group.
For a remote line, init spawns another copy of itself, which waits for
carrier detect. Each init process spawned for a remote line also spawns
getty when it detects a carrier signal on its port. (Note that this use of
a second init process is unique to COHERENT.)
init then waits for the termination of its child processes. If one of the
getty processes terminates, init respawns it. If another process
terminates, init waits to receive its return value, so the process does not
become a ``zombie''.
Logging In Users
The following describes how init logs users in.
As mentioned in the previous section, init invokes process getty for each
enabled device on the system. getty and passes it as arguments the speed
and the device upon which it should run. getty waits until someone tries
to log in. Under COHERENT, getty sets the tty's line speed and local-edit
characters and prompts the user to log in. It then locks the port, and
invokes login with what the user has typed.
At this point, the command login takes over the task of logging in the
user. login first asks the user for his password. It then reads the
encrypted password from file /etc/passwd. If the password consists of one
asterisk `*', login then reads the encrypted password from file
/etc/shadow. It then compares the retrieved password with what the user has
typed.
If the user has entered his password correctly, login executes various
``housekeeping'' tasks needed to get the user up and running under
COHERENT. These include It records in file /usr/adm/utmp the fact of the
user's logging in, which lets the system keep a running talley of who is
logged into the system. For details on how login manages the task of
logging in, see its entry in the Lexicon.
As its last action, login invokes the program named in /etc/passwd. This
usually is an interactive shell (i.e., sh or ksh), but can also be another
program (e.g., uucico). If login invokes an interactive shell, it does so
with the first character of its argv[0] set to `-', so that the shell knows
that it is a login shell. (For example, if login invokes ksh, its argv[0]
is -ksh.)
The shell first executes file /etc/profile, then $HOME/.profile. Once these
are executed, the shell displays its command-line prompt, and the user is
ready to begin issuing commands to COHERENT
When the login shell terminates, init removes its record from file
/usr/adm/utmp. Then it reopens the appropriate terminal and invokes getty,
as described above. The device is now ready to receive another login.
Signals
init accepts two signals. When it receives SIGQUIT, it re-reads /etc/ttys,
spawns gettys on newly enabled devices, and stops gettys on disabled
devices. The command
kill quit 1
sends SIGQUIT to the init process. When init receives SIGHUP, it sends
SIGKILL to every process and brings the system down to single-user mode.
The command
kill -1 1
sends SIGHUP to the init process.
Files
/dev/console -- Console terminal
/dev/tty?? -- Terminal devices
/etc/rc -- initialization command file
/etc/brc -- Boot command file
/etc/ttys -- Active terminals
/etc/utmp -- Logged in users
/usr/adm/wtmp -- Login accounting data
/usr/spool/uucp/LCK..* -- Terminal locks
See Also
Administering COHERENT,
getty,
kill,
ksh,
login,
sh,
ttys



