2007-03-03 09:56:25 +03:00
|
|
|
.\" $NetBSD: init.8,v 1.45 2007/03/03 06:56:25 apb Exp $
|
1995-03-18 17:54:19 +03:00
|
|
|
.\"
|
1994-06-10 22:06:09 +04:00
|
|
|
.\" Copyright (c) 1980, 1991, 1993
|
|
|
|
.\" The Regents of the University of California. All rights reserved.
|
1993-06-19 00:51:45 +04:00
|
|
|
.\"
|
|
|
|
.\" This code is derived from software contributed to Berkeley by
|
|
|
|
.\" Donn Seeley at Berkeley Software Design, Inc.
|
|
|
|
.\"
|
|
|
|
.\" Redistribution and use in source and binary forms, with or without
|
|
|
|
.\" modification, are permitted provided that the following conditions
|
|
|
|
.\" are met:
|
|
|
|
.\" 1. Redistributions of source code must retain the above copyright
|
|
|
|
.\" notice, this list of conditions and the following disclaimer.
|
|
|
|
.\" 2. Redistributions in binary form must reproduce the above copyright
|
|
|
|
.\" notice, this list of conditions and the following disclaimer in the
|
|
|
|
.\" documentation and/or other materials provided with the distribution.
|
2003-08-07 14:04:22 +04:00
|
|
|
.\" 3. Neither the name of the University nor the names of its contributors
|
1993-06-19 00:51:45 +04:00
|
|
|
.\" may be used to endorse or promote products derived from this software
|
|
|
|
.\" without specific prior written permission.
|
|
|
|
.\"
|
|
|
|
.\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
|
|
|
|
.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
|
|
|
.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
|
|
|
.\" ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
|
|
|
|
.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
|
|
|
.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
|
|
|
|
.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
|
|
|
|
.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
|
|
|
|
.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
|
|
|
|
.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
|
|
|
.\" SUCH DAMAGE.
|
|
|
|
.\"
|
1997-07-19 20:51:40 +04:00
|
|
|
.\" @(#)init.8 8.6 (Berkeley) 5/26/95
|
1993-06-19 00:51:45 +04:00
|
|
|
.\"
|
2007-03-02 23:46:23 +03:00
|
|
|
.Dd March 1, 2007
|
1993-06-19 00:51:45 +04:00
|
|
|
.Dt INIT 8
|
2001-06-05 15:22:41 +04:00
|
|
|
.Os
|
1993-06-19 00:51:45 +04:00
|
|
|
.Sh NAME
|
|
|
|
.Nm init
|
|
|
|
.Nd process control initialization
|
|
|
|
.Sh SYNOPSIS
|
1997-09-15 05:56:08 +04:00
|
|
|
.Nm
|
1993-06-19 00:51:45 +04:00
|
|
|
.Sh DESCRIPTION
|
|
|
|
The
|
1997-09-15 05:56:08 +04:00
|
|
|
.Nm
|
2000-04-26 19:01:36 +04:00
|
|
|
program is the last stage of the boot process (after the kernel loads
|
|
|
|
and initializes all the devices).
|
|
|
|
It normally begins multi-user operation.
|
1998-04-29 13:49:10 +04:00
|
|
|
.Pp
|
2000-04-26 19:01:36 +04:00
|
|
|
The following table describes the state machine used by
|
2003-02-25 13:34:36 +03:00
|
|
|
.Nm :
|
2000-04-26 19:01:36 +04:00
|
|
|
.Bl -enum
|
|
|
|
.It
|
|
|
|
Single user shell.
|
1997-09-15 05:56:08 +04:00
|
|
|
.Nm
|
2000-04-26 19:01:36 +04:00
|
|
|
may be passed
|
|
|
|
.Fl s
|
|
|
|
from the boot program to prevent the system from going multi-user and
|
|
|
|
to instead execute a single user shell without starting the normal
|
2002-10-01 17:40:23 +04:00
|
|
|
daemons.
|
|
|
|
The system is then quiescent for maintenance work and may
|
2000-04-26 19:01:36 +04:00
|
|
|
later be made to go to state 2 (multi-user) by exiting the single-user
|
|
|
|
shell (with ^D).
|
|
|
|
.It
|
|
|
|
Multi-user boot (default operation).
|
|
|
|
Executes
|
1993-06-19 00:51:45 +04:00
|
|
|
.Pa /etc/rc
|
2000-04-26 19:01:36 +04:00
|
|
|
(see
|
|
|
|
.Xr rc 8 ) .
|
2000-04-29 04:47:06 +04:00
|
|
|
If this was the first state entered (as opposed to entering here after
|
|
|
|
state 1), then
|
|
|
|
.Pa /etc/rc
|
|
|
|
will be invoked with its first argument being
|
|
|
|
.Sq autoboot .
|
|
|
|
If
|
|
|
|
.Pa /etc/rc
|
|
|
|
exits with a non-zero (error) exit code, commence single user
|
|
|
|
operation by giving the super-user a shell on the console by going
|
|
|
|
to state 1 (single user).
|
2000-04-26 19:01:36 +04:00
|
|
|
Otherwise, proceed to state 3.
|
2006-04-18 15:40:26 +04:00
|
|
|
.Pp
|
|
|
|
If value of the
|
|
|
|
.Dq init.root
|
|
|
|
sysctl node is not equal to
|
|
|
|
.Pa /
|
|
|
|
at this point, the
|
|
|
|
.Pa /etc/rc
|
|
|
|
process will be run inside a
|
|
|
|
.Xr chroot 2
|
|
|
|
indicated by sysctl with the same error handling as above.
|
2000-04-26 19:01:36 +04:00
|
|
|
.It
|
2003-05-14 16:11:03 +04:00
|
|
|
Set up ttys as specified in
|
2000-04-26 19:01:36 +04:00
|
|
|
.Xr ttys 5 .
|
|
|
|
See below for more information.
|
|
|
|
On completion, continue to state 4.
|
2006-04-18 15:40:26 +04:00
|
|
|
If we did chroot in state 2, each
|
|
|
|
.Xr getty 8
|
|
|
|
process will be run in the same
|
|
|
|
.Xr chroot 2
|
|
|
|
path as in 2 (that is, the value of
|
|
|
|
.Dq init.root
|
|
|
|
sysctl is not re-read).
|
2000-04-26 19:01:36 +04:00
|
|
|
.It
|
|
|
|
Multi-user operation.
|
|
|
|
Depending upon the signal received, change state appropriately;
|
|
|
|
on
|
|
|
|
.Dv SIGTERM ,
|
|
|
|
go to state 7;
|
|
|
|
on
|
|
|
|
.Dv SIGHUP ,
|
|
|
|
go to state 5;
|
|
|
|
on
|
|
|
|
.Dv SIGTSTP ,
|
|
|
|
go to state 6.
|
|
|
|
.It
|
|
|
|
Clean-up mode; re-read
|
|
|
|
.Xr ttys 5 ,
|
|
|
|
killing off the controlling processes on lines that are now
|
|
|
|
.Sq off ,
|
|
|
|
and starting processes that are newly
|
|
|
|
.Sq on .
|
|
|
|
On completion, go to state 4.
|
|
|
|
.It
|
|
|
|
.Sq Boring
|
|
|
|
mode; no new sessions.
|
|
|
|
Signals as per state 4.
|
|
|
|
.It
|
|
|
|
Shutdown mode.
|
|
|
|
Send
|
|
|
|
.Dv SIGHUP
|
|
|
|
to all controlling processes, reap the processes for 30 seconds,
|
2005-04-02 00:40:17 +04:00
|
|
|
and then go to state 1 (single user); warning if not all the processes died.
|
2000-04-26 19:01:36 +04:00
|
|
|
.El
|
1993-06-19 00:51:45 +04:00
|
|
|
.Pp
|
|
|
|
If the
|
1997-09-15 05:56:08 +04:00
|
|
|
.Sq console
|
1993-06-19 00:51:45 +04:00
|
|
|
entry in the
|
|
|
|
.Xr ttys 5
|
2003-10-12 11:21:57 +04:00
|
|
|
file is marked
|
|
|
|
.Dq insecure ,
|
|
|
|
then
|
1997-09-15 05:56:08 +04:00
|
|
|
.Nm
|
1993-06-19 00:51:45 +04:00
|
|
|
will require that the superuser password be
|
|
|
|
entered before the system will start a single-user shell.
|
1997-10-11 07:02:36 +04:00
|
|
|
The password check is skipped if the
|
1997-09-15 05:56:08 +04:00
|
|
|
.Sq console
|
2003-10-12 11:21:57 +04:00
|
|
|
is marked as
|
|
|
|
.Dq secure .
|
1993-06-19 00:51:45 +04:00
|
|
|
.Pp
|
2006-04-18 15:40:26 +04:00
|
|
|
It should be noted that while
|
|
|
|
.Nm
|
|
|
|
has the ability to start multi-user operation inside a
|
|
|
|
.Xr chroot 2
|
|
|
|
environment, the
|
|
|
|
.Nm
|
|
|
|
process itself will always run in the
|
|
|
|
.Dq original root directory .
|
|
|
|
This also implies that single-user mode is always started in the original
|
|
|
|
root, giving the possibility to create multi-user sessions in different
|
2006-04-23 20:48:46 +04:00
|
|
|
root directories over time.
|
|
|
|
The
|
2006-04-18 15:40:26 +04:00
|
|
|
.Dq init.root
|
|
|
|
sysctl node is fabricated by
|
|
|
|
.Nm
|
2006-04-23 20:48:46 +04:00
|
|
|
at startup and re-created any time it's found to be missing.
|
|
|
|
Type of the node is string capable of holding full pathname, and
|
|
|
|
is only accessible by the superuser (unless explicitly destroyed
|
|
|
|
and re-created with different specification).
|
2006-04-18 15:40:26 +04:00
|
|
|
.Pp
|
1997-10-11 07:02:36 +04:00
|
|
|
In multi-user operation,
|
1997-09-15 05:56:08 +04:00
|
|
|
.Nm
|
1993-06-19 00:51:45 +04:00
|
|
|
maintains
|
|
|
|
processes for the terminal ports found in the file
|
|
|
|
.Xr ttys 5 .
|
1997-09-15 05:56:08 +04:00
|
|
|
.Nm
|
1993-06-19 00:51:45 +04:00
|
|
|
reads this file, and executes the command found in the second field.
|
|
|
|
This command is usually
|
|
|
|
.Xr getty 8 ;
|
1998-04-29 13:49:10 +04:00
|
|
|
it opens and initializes the tty line and executes the
|
1998-05-25 14:48:12 +04:00
|
|
|
.Xr login 1
|
|
|
|
program.
|
1993-06-19 00:51:45 +04:00
|
|
|
The
|
1998-04-29 13:49:10 +04:00
|
|
|
.Xr login 1
|
|
|
|
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
|
1997-09-15 05:56:08 +04:00
|
|
|
.Nm
|
1998-04-29 13:49:10 +04:00
|
|
|
program wakes up, deletes the user from the
|
1993-06-19 00:51:45 +04:00
|
|
|
.Xr utmp 5
|
|
|
|
file of current users and records the logout in the
|
1998-04-29 13:49:10 +04:00
|
|
|
.Xr wtmp 5
|
1993-06-19 00:51:45 +04:00
|
|
|
file.
|
|
|
|
The cycle is
|
|
|
|
then restarted by
|
1997-09-15 05:56:08 +04:00
|
|
|
.Nm
|
1993-06-19 00:51:45 +04:00
|
|
|
executing a new
|
1998-04-29 13:49:10 +04:00
|
|
|
.Xr getty 8
|
1993-06-19 00:51:45 +04:00
|
|
|
for the line.
|
1997-07-19 20:51:40 +04:00
|
|
|
.pl +1
|
1993-06-19 00:51:45 +04:00
|
|
|
.Pp
|
|
|
|
Line status (on, off, secure, getty, or window information)
|
|
|
|
may be changed in the
|
1998-04-29 13:49:10 +04:00
|
|
|
.Xr ttys 5
|
1993-06-19 00:51:45 +04:00
|
|
|
file without a reboot by sending the signal
|
|
|
|
.Dv SIGHUP
|
|
|
|
to
|
1997-09-15 05:56:08 +04:00
|
|
|
.Nm
|
1993-06-19 00:51:45 +04:00
|
|
|
with the command
|
1994-09-24 03:18:36 +04:00
|
|
|
.Dq Li "kill \-s HUP 1" .
|
2000-04-26 19:01:36 +04:00
|
|
|
This is referenced in the table above as state 5.
|
1993-06-19 00:51:45 +04:00
|
|
|
On receipt of this signal,
|
1997-09-15 05:56:08 +04:00
|
|
|
.Nm
|
1993-06-19 00:51:45 +04:00
|
|
|
re-reads the
|
1998-04-29 13:49:10 +04:00
|
|
|
.Xr ttys 5
|
1993-06-19 00:51:45 +04:00
|
|
|
file.
|
|
|
|
When a line is turned off in
|
1998-04-29 13:49:10 +04:00
|
|
|
.Xr ttys 5 ,
|
1997-09-15 05:56:08 +04:00
|
|
|
.Nm
|
2000-04-26 19:01:36 +04:00
|
|
|
will send a
|
|
|
|
.Dv SIGHUP
|
|
|
|
signal to the controlling process
|
1993-06-19 00:51:45 +04:00
|
|
|
for the session associated with the line.
|
|
|
|
For any lines that were previously turned off in the
|
1998-04-29 13:49:10 +04:00
|
|
|
.Xr ttys 5
|
1993-06-19 00:51:45 +04:00
|
|
|
file and are now on,
|
1997-09-15 05:56:08 +04:00
|
|
|
.Nm
|
1993-06-19 00:51:45 +04:00
|
|
|
executes a new
|
1998-04-29 13:49:10 +04:00
|
|
|
.Xr getty 8
|
1993-06-19 00:51:45 +04:00
|
|
|
to enable a new login.
|
|
|
|
If the getty or window field for a line is changed,
|
|
|
|
the change takes effect at the end of the current
|
1997-10-11 07:02:36 +04:00
|
|
|
login session (e.g., the next time
|
1997-09-15 05:56:08 +04:00
|
|
|
.Nm
|
1993-06-19 00:51:45 +04:00
|
|
|
starts a process on the line).
|
|
|
|
If a line is commented out or deleted from
|
1998-04-29 23:25:25 +04:00
|
|
|
.Xr ttys 5 ,
|
1997-09-15 05:56:08 +04:00
|
|
|
.Nm
|
1993-06-19 00:51:45 +04:00
|
|
|
will not do anything at all to that line.
|
|
|
|
However, it will complain that the relationship between lines
|
|
|
|
in the
|
1998-04-29 13:49:10 +04:00
|
|
|
.Xr ttys 5
|
1993-06-19 00:51:45 +04:00
|
|
|
file and records in the
|
1998-04-29 13:49:10 +04:00
|
|
|
.Xr utmp 5
|
1993-06-19 00:51:45 +04:00
|
|
|
file is out of sync,
|
|
|
|
so this practice is not recommended.
|
|
|
|
.Pp
|
1997-09-15 05:56:08 +04:00
|
|
|
.Nm
|
1993-06-19 00:51:45 +04:00
|
|
|
will terminate multi-user operations and resume single-user mode
|
|
|
|
if sent a terminate
|
|
|
|
.Pq Dv TERM
|
|
|
|
signal, for example,
|
1994-09-24 03:18:36 +04:00
|
|
|
.Dq Li "kill \-s TERM 1" .
|
1993-06-19 00:51:45 +04:00
|
|
|
If there are processes outstanding that are deadlocked (because of
|
|
|
|
hardware or software failure),
|
1998-04-29 13:49:10 +04:00
|
|
|
.Nm
|
1993-06-19 00:51:45 +04:00
|
|
|
will not wait for them all to die (which might take forever), but
|
|
|
|
will time out after 30 seconds and print a warning message.
|
|
|
|
.Pp
|
1997-09-15 05:56:08 +04:00
|
|
|
.Nm
|
1993-06-19 00:51:45 +04:00
|
|
|
will cease creating new
|
1998-04-29 13:49:10 +04:00
|
|
|
.Xr getty 8 Ns 's
|
1993-06-19 00:51:45 +04:00
|
|
|
and allow the system to slowly die away, if it is sent a terminal stop
|
|
|
|
.Pq Dv TSTP
|
|
|
|
signal, i.e.
|
1994-09-24 03:18:36 +04:00
|
|
|
.Dq Li "kill \-s TSTP 1" .
|
1993-06-19 00:51:45 +04:00
|
|
|
A later hangup will resume full
|
|
|
|
multi-user operations, or a terminate will start a single user shell.
|
|
|
|
This hook is used by
|
|
|
|
.Xr reboot 8
|
|
|
|
and
|
|
|
|
.Xr halt 8 .
|
|
|
|
.Pp
|
|
|
|
The role of
|
1997-09-15 05:56:08 +04:00
|
|
|
.Nm
|
1993-06-19 00:51:45 +04:00
|
|
|
is so critical that if it dies, the system will reboot itself
|
|
|
|
automatically.
|
|
|
|
If, at bootstrap time, the
|
1998-04-29 13:49:10 +04:00
|
|
|
.Nm
|
1993-06-19 00:51:45 +04:00
|
|
|
process cannot be located, the system will panic with the message
|
2003-10-12 11:21:57 +04:00
|
|
|
.Dq panic: init died (signal %d, exit %d) .
|
2005-06-30 20:38:06 +04:00
|
|
|
.Pp
|
2005-07-01 01:36:34 +04:00
|
|
|
If
|
|
|
|
.Pa /dev/console
|
|
|
|
does not exist,
|
2005-06-30 20:38:06 +04:00
|
|
|
.Nm
|
2005-07-01 21:07:33 +04:00
|
|
|
will create a MFS (memory based file system) mounted over
|
|
|
|
.Pa /dev .
|
2005-07-01 01:36:34 +04:00
|
|
|
Then it will create a
|
|
|
|
.Pa /dev/console
|
|
|
|
device so you can see things happening.
|
2005-06-30 20:38:06 +04:00
|
|
|
The
|
|
|
|
.Xr MAKEDEV 8
|
2005-07-01 21:07:33 +04:00
|
|
|
and
|
2007-03-01 10:18:07 +03:00
|
|
|
.Xr MAKEDEV.local 8
|
2007-03-03 09:56:25 +03:00
|
|
|
scripts are placed in the new
|
2005-07-01 01:36:34 +04:00
|
|
|
.Pa /dev
|
|
|
|
directory.
|
2005-06-30 20:38:06 +04:00
|
|
|
Then
|
|
|
|
.Nm
|
2005-07-01 01:36:34 +04:00
|
|
|
changes the working directory to
|
|
|
|
.Pa /dev
|
|
|
|
and runs the scripts using the
|
|
|
|
.Dq init
|
|
|
|
special target.
|
2005-07-01 21:07:33 +04:00
|
|
|
This creates the standard devices considered necessary to boot the
|
|
|
|
system.
|
1993-06-19 00:51:45 +04:00
|
|
|
.Sh FILES
|
|
|
|
.Bl -tag -width /var/log/wtmp -compact
|
|
|
|
.It Pa /dev/console
|
|
|
|
System console device.
|
|
|
|
.It Pa /dev/tty*
|
|
|
|
Terminal ports found in
|
1998-04-29 13:49:10 +04:00
|
|
|
.Xr ttys 5 .
|
1993-06-19 00:51:45 +04:00
|
|
|
.It Pa /var/run/utmp
|
|
|
|
Record of Current users on the system.
|
|
|
|
.It Pa /var/log/wtmp
|
|
|
|
Record of all logins and logouts.
|
|
|
|
.It Pa /etc/ttys
|
|
|
|
The terminal initialization information file.
|
|
|
|
.It Pa /etc/rc
|
|
|
|
System startup commands.
|
|
|
|
.El
|
2001-11-16 14:37:04 +03:00
|
|
|
.Sh DIAGNOSTICS
|
|
|
|
.Bl -diag
|
|
|
|
.It "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.
|
|
|
|
.Em "Init will sleep for 10 seconds" ,
|
|
|
|
.Em "then continue trying to start the process" .
|
|
|
|
.Pp
|
|
|
|
.It "some processes would not die; ps axl advised."
|
2003-10-12 11:21:57 +04:00
|
|
|
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.
|
2001-11-16 14:37:04 +03:00
|
|
|
.El
|
1993-06-19 00:51:45 +04:00
|
|
|
.Sh SEE ALSO
|
2005-06-20 17:25:23 +04:00
|
|
|
.Xr config 1 ,
|
1993-06-19 00:51:45 +04:00
|
|
|
.Xr kill 1 ,
|
2001-11-16 14:37:04 +03:00
|
|
|
.Xr login 1 ,
|
1993-06-19 00:51:45 +04:00
|
|
|
.Xr sh 1 ,
|
1997-01-17 05:56:27 +03:00
|
|
|
.Xr options 4 ,
|
1993-06-19 00:51:45 +04:00
|
|
|
.Xr ttys 5 ,
|
2005-07-01 01:36:34 +04:00
|
|
|
.Xr MAKEDEV 8 ,
|
2007-03-03 09:56:25 +03:00
|
|
|
.Xr MAKEDEV.local 8 ,
|
1993-06-19 00:51:45 +04:00
|
|
|
.Xr getty 8 ,
|
1997-10-11 07:02:36 +04:00
|
|
|
.Xr halt 8 ,
|
2005-06-30 20:38:06 +04:00
|
|
|
.Xr mfs 8 ,
|
1993-06-19 00:51:45 +04:00
|
|
|
.Xr rc 8 ,
|
|
|
|
.Xr reboot 8 ,
|
2006-04-18 15:40:26 +04:00
|
|
|
.Xr shutdown 8 ,
|
2006-09-16 00:20:06 +04:00
|
|
|
.Xr sysctl 8 ,
|
|
|
|
.Xr secmodel_bsd44 9
|
1993-06-19 00:51:45 +04:00
|
|
|
.Sh HISTORY
|
|
|
|
A
|
|
|
|
.Nm
|
|
|
|
command appeared in
|
|
|
|
.At v6 .
|