NAME
init - MachTen initialization
SYNOPSIS
/etc/init
DESCRIPTION
Init is the first UNIX process to be executed by MachTen.
Once the
UNIX kernel (vmunix) is loaded, init is loaded and run. Init
first
runs the system initialization command script, rc which
performs
housekeeping operations such as removing temporary files,
mounting
file systems, and starting daemons. If this succeeds, init
begins
multi-user operation. If the rc script fails, init commences
single user operation by giving the superuser a shell on the
console. When such single user operation is terminated by
killing
the single user shell (i.e. by hitting ^D), init begins
multi-user
operation.
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
/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.
DIAGNOSTICS
/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
(won’t 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
NOTES
The /usr/adm/wtmp file is not created during installation of
MachTen. Entries are not added to this file if it does not
exist.
This service can be enabled by creating this file.
BUGS
When the terminate signal is sent to init and the MachTen
window
daemon is running, init will wait forever. If the window
daemon
subsequently terminates, init will terminate.
SEE ALSO
login(1), kill(1), sh(1), ttys(5), getty(8), rc(8),
reboot(8),
halt(8), shutdown(8), windows(1)