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