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)
 |