142 lines
3.3 KiB
Groff
142 lines
3.3 KiB
Groff
.TH INIT 8
|
|
.SH NAME
|
|
init \- grandparent of all processes
|
|
.SH DESCRIPTION
|
|
The first program started by MINIX 3 is
|
|
.BR init .
|
|
The actions performed by
|
|
.B init
|
|
can be summarized by this pseudo shell program:
|
|
.RS
|
|
.nf
|
|
.if t .ft C
|
|
|
|
# Open 0, 1, 2.
|
|
exec </dev/null >/dev/log 2>&1
|
|
|
|
# Run the system initialization script.
|
|
sh /etc/rc $bootopts
|
|
|
|
>/etc/utmp
|
|
echo reboot >>/usr/adm/wtmp
|
|
|
|
while :; do
|
|
# Wait for a process to exit, but don't always block.
|
|
wait
|
|
|
|
# Record logout. (Not in this dumb way, of course.)
|
|
if "pid is in my tables" $pid
|
|
then
|
|
echo "logout $pid" >/etc/utmp
|
|
echo "logout $pid" >>/usr/adm/wtmp
|
|
fi
|
|
|
|
# Start a new session.
|
|
while read line type getty init
|
|
do
|
|
if idle $line
|
|
then
|
|
$init ... <$tty >$tty
|
|
$getty <$tty >$tty 2>&1 &
|
|
pid=$!
|
|
"add pid to tables" $pid
|
|
echo "login $line $pid" >/etc/utmp
|
|
echo "login $line $pid" >>/usr/adm/wtmp
|
|
fi
|
|
done < /dev/ttytab
|
|
done
|
|
|
|
.if t .ft R
|
|
.fi
|
|
.RE
|
|
The first action of
|
|
.B init
|
|
is to run
|
|
.B /etc/rc
|
|
to initialize the system as described in
|
|
.BR boot (8).
|
|
.B Init
|
|
then enters its main loop where it waits for processes to exit, and starts
|
|
processes on each enabled terminal line. The file
|
|
.B /etc/ttytab
|
|
contains a list of terminal devices, their terminal types, the program to
|
|
execute on them to allow one to login (usually
|
|
.BR getty (8)),
|
|
and the program to execute first to initialize the line (usually
|
|
.BR stty (1)).
|
|
These fields may be left out to indicate that a line is disabled or that
|
|
initialization is not necessary. The commands are searched using the path
|
|
.BR /sbin:/bin:/usr/sbin:/usr/bin .
|
|
.PP
|
|
.B Init
|
|
accepts several signals that must be sent to process id 1. (It is the first
|
|
process, so natually its process id is 1.) The signals are:
|
|
.TP
|
|
.B SIGHUP
|
|
When receiving a hangup signal,
|
|
.B init
|
|
will forget about errors and rescan
|
|
.B ttytab
|
|
for processes to execute.
|
|
.B Init
|
|
normally rescans
|
|
.B ttytab
|
|
each time it feels the need to respawn a process, so the hangup signal is only
|
|
needed if a line has been shut down, or after a terminate signal. Note
|
|
that after turning a line off you will have to kill the process running on
|
|
that line manually,
|
|
.B init
|
|
doesn't do that for you.
|
|
.TP
|
|
.B SIGTERM
|
|
Normally sent by programs that halt or reboot MINIX 3. Causes
|
|
.B init
|
|
to stop spawning new processes.
|
|
.TP
|
|
.B SIGABRT
|
|
Sent by the keyboard driver when the
|
|
.B CTRL-ALT-DEL
|
|
key combination is typed. Causes
|
|
.B init
|
|
to run the
|
|
.B shutdown
|
|
command. A second abort signal makes
|
|
.B init
|
|
halt the system directly with a system call. The keyboard driver halts the
|
|
system, without a sync, after the third CTRL-ALT-DEL.
|
|
.SS "MINIX 3 vs. Minix-vmd"
|
|
There are a few differences between standard MINIX 3 and Minix-vmd on how
|
|
.B init
|
|
is run. The
|
|
.B /etc/rc
|
|
file is executed under standard MINIX 3 with input connected to
|
|
.BR /dev/console ,
|
|
but under Minix-vmd this is still
|
|
.BR /dev/null .
|
|
This means that under Minix-vmd processes must be reconnected to
|
|
.B /dev/console
|
|
with the
|
|
.BR intr (8)
|
|
program if they need user interaction.
|
|
Minix-vmd passes the value of the
|
|
.B bootopts
|
|
boot variable to /etc/rc. Standard MINIX 3 does not.
|
|
.SH FILES
|
|
.TP 25n
|
|
.B /etc/ttytab
|
|
List of terminals devices.
|
|
.TP
|
|
.B /etc/utmp
|
|
List of currently logged in users.
|
|
.TP
|
|
.B /usr/adm/wtmp
|
|
Login/logout history.
|
|
.SH "SEE ALSO"
|
|
.BR ttytab (5),
|
|
.BR utmp (5),
|
|
.BR getty (8),
|
|
.BR stty (1),
|
|
.BR boot (8).
|
|
.SH AUTHOR
|
|
Kees J. Bot (kjb@cs.vu.nl)
|