Skip site navigation (1)Skip section navigation (2)

FreeBSD Manual Pages


home | help
INIT(8)			FreeBSD	System Manager's Manual		       INIT(8)

     init -- process control initialization

     init [-fs]

     The init program is the last stage	of the boot process.  It normally exe-
     cutes the sequence	of events described in rc(8) and begins	multi-user op-

     The kernel	may pass the following options to init,	usually	when requested
     by	the boot(8) program:

     -f	     Activate fastboot mode.  This is not currently supported by the
	     OpenBSD kernel.  Instead, use the /fastboot file as explained in
	     the rc(8) manual.

     -s	     Boot directly into	single-user mode.

     Single-user mode is also entered if the boot scripts fail.

     In	single-user mode, the rc(8) script is not run and normal daemons are
     not started, but instead a	super-user shell is started on the system con-
     sole.  If the console entry in the	ttys(5)	file does not contain the
     "secure" flag, then init will require that	the superuser password be en-
     tered before the system will start	a single-user shell.  The password
     check is skipped if the console is	marked as "secure".

     In	single-user mode, the system is	quiescent for maintenance work and may
     later be made to go to multi-user by exiting the single-user shell	(with
     ^D).  This	causes init to run the rc(8) startup command file in fastboot
     mode (skipping disk checks).

     The kernel	securelevel(7) is normally set to 0 while in single-user mode,
     and raised	to 1 when the system begins multi-user operations.  This ac-
     tion will not take	place if the securelevel is -1,	and can	be modified
     via the /etc/rc.securelevel script.

     In	multi-user operation, init maintains processes for the terminal	ports
     found in the file ttys(5).	 init reads this file, and executes the	com-
     mand found	in the second field.  This command is usually getty(8);	getty
     opens and initializes the tty line	and executes the login program.	 The
     login program, when a valid user logs in, executes	a shell	for that user.
     When this shell dies, either because the user logged out or an abnormal
     termination occurred (a signal), the init program wakes up, deletes the
     user from the utmp(5) file	of current users and records the logout	in the
     wtmp file.	 The cycle is then restarted by	init executing a new getty for
     the line.

     Line status (on, off, secure, getty, or window information) may be
     changed in	the ttys file without a	reboot by sending the signal SIGHUP to
     init with the command "kill -s HUP	1".  On	receipt	of this	signal,	init
     re-reads the ttys file.  When a line is turned off	in ttys, init will
     send a SIGHUP signal to the controlling process for the session associ-
     ated with the line.  For any lines	that were previously turned off	in the
     ttys file and are now on, init executes a new getty to enable a new lo-
     gin.  If the getty	or window field	for a line is changed, the change
     takes effect at the end of	the current login session (e.g., the next time
     init starts a process on the line).  If a line is commented out or
     deleted from ttys,	init will not do anything at all to that line.	How-
     ever, it will complain that the relationship between lines	in the ttys
     file and records in the utmp file is out of sync, so this practice	is not

     init will terminate multi-user operations and resume single-user mode if
     sent a terminate (TERM) signal, for example, "kill	-s TERM	1".  If	there
     are processes outstanding that are	deadlocked (because of 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

     init will cease creating new getty(8) and allow the system	to slowly die
     away, if it is sent a terminal stop (TSTP)	signal,	i.e., "kill -s TSTP
     1".  A later hangup will resume full multi-user operations, or a termi-
     nate will start a single-user shell.  This	hook is	used by	reboot(8) and

     init will terminate multi-user operations,	kill all getty(8), and run
     /etc/rc.shutdown if a user-defined	signal 1 (USR1), user-defined signal 2
     (USR2), or	interrupt (INT)	signal is received.  Following this, USR1 will
     halt the system; USR2 will	request	a powerdown; and INT will cause	a re-
     boot.  /etc/rc.shutdown can specify that a	powerdown is requested instead
     of	the action specified by	the signal.

     The role of init is so critical that if it	dies, the system will reboot
     itself automatically.  If,	at bootstrap time, the init process cannot be
     located, the system will panic with the message "panic: init died (signal
     %d, exit %d)".

     When init spawns a	process	it sets	the process priority, umask, and re-
     source limits based on /etc/login.conf.  When starting the	rc(8) files,
     the login class "daemon" is used.	When starting a	window system or
     getty(8), the login class "default" is used.  No resource changes are
     made when entering	single-user mode.

     /dev/console	  system console device
     /dev/tty*		  terminal ports found in ttys
     /etc/rc		  system startup commands
     /etc/rc.securelevel  commands that	run before the security	level changes
     /etc/rc.shutdown	  script run at	shutdown time
     /etc/ttys		  terminal initialization information file
     /fastboot		  tells	rc(8) not to run fsck(8) during	the next boot
     /var/run/utmp	  record of users currently logged in
     /var/log/wtmp	  record of all	logins and logouts

     getty repeating too quickly on port %s, 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.

     some processes would not die; ps axl advised.  A process is hung and
     could not be killed when the system was shutting down.  This condition is
     usually caused by a process that is stuck in a device driver because of a
     persistent	device error condition.

     kill(1), login(1),	sh(1), fbtab(5), login.conf(5),	ttys(5),
     securelevel(7), crash(8), getty(8), halt(8), rc(8), rc.shutdown(8),
     reboot(8),	shutdown(8)

     An	init command appeared in Version 1 AT&T	UNIX.

FreeBSD	13.0		       January 16, 2018			  FreeBSD 13.0


Want to link to this manual page? Use this URL:

home | help