incorporate bsdi's version of init; this is their version, w/no local changes
other than adding Id strings as appropriate
This commit is contained in:
parent
d1ed63195d
commit
a63ff5217e
|
@ -1,15 +1,13 @@
|
|||
# $Id: Makefile,v 1.6 1993/06/10 01:02:59 cgd Exp $
|
||||
# from: @(#)Makefile 5.3 (Berkeley) 5/11/90
|
||||
# from: BSDI Id: Makefile,v 1.3 1993/06/14 20:06:22 donn Exp
|
||||
# $Id: Makefile,v 1.7 1993/06/18 20:51:45 cgd Exp $
|
||||
|
||||
PROG= init
|
||||
#SRCS= init.c
|
||||
CFLAGS+= -DSECURE_CONSOLE -DUSE_DEVFS
|
||||
MAN8= init.0
|
||||
# XXX fix this when we have KERN_SECURELVL
|
||||
CFLAGS+=-DSECURE -DNOSYSCTL
|
||||
DPADD= ${LIBUTIL}
|
||||
LDADD= -lutil
|
||||
NOMAN=noman
|
||||
LDFLAGS=
|
||||
.ifndef EXPORTABLE_SYSTEM
|
||||
DPADD+= ${LIBCRYPT}
|
||||
LDADD+= -lcrypt
|
||||
.endif
|
||||
BINMODE=500
|
||||
|
||||
.include <bsd.prog.mk>
|
||||
|
|
|
@ -0,0 +1,35 @@
|
|||
This is the source for a version of /sbin/init that runs on 4.4
|
||||
BSD and BSD/386 1.0 systems. I wrote it for BSDI about two years
|
||||
ago and BSDI donated the source to UC Berkeley CSRG, but CSRG didn't
|
||||
get it working in time to include it with the Networking 2 release,
|
||||
although we had hoped it would appear there. Since that time both
|
||||
BSDI and CSRG have worked on it to make it more useful and reliable,
|
||||
and recently the two groups have merged our efforts and produced
|
||||
a common version once more. Since the source is freely redistributable
|
||||
under the terms of the standard BSD copyright, I'm posting it to
|
||||
the net on behalf of BSDI so other folks might get some use from
|
||||
it. Keep in mind that I'm only paid to support this code if you
|
||||
bought a system from BSDI, so I probably won't be able to make very
|
||||
timely responses to random bug reports, but I am interested in
|
||||
seeing them. (More formally: Neither BSDI nor I personally will
|
||||
make any guarantees about the reliability or usefulness of this
|
||||
code, and it's unsupported unless you have a support agreement.)
|
||||
|
||||
I also make no promises that this code will just drop in and work
|
||||
on any particular system. Please don't call me at home to tell me
|
||||
that you compiled and installed init, and now your system won't
|
||||
boot. With a program as sensitive as init, you should always be
|
||||
prepared to fall back to an earlier working version if the new one
|
||||
fails. ALWAYS save your old version before installing, and ALWAYS
|
||||
be prepared to boot from an alternate root (e.g. a floppy) if the
|
||||
new init fails. I strongly advise you to read the man page carefully
|
||||
before you install. One advance warning: I don't think anyone has
|
||||
ever tested the window system start-up code. One of these days...
|
||||
This code is running on my systems at home, and an earlier version
|
||||
is running on hundreds of BSDI systems, so it can't be too broken.
|
||||
|
||||
Enjoy,
|
||||
|
||||
Donn Seeley
|
||||
Berkeley Software Design, Inc. (Salt Lake City)
|
||||
June 14, 1993
|
|
@ -0,0 +1,292 @@
|
|||
.\" Copyright (c) 1980, 1991 Regents of the University of California.
|
||||
.\" All rights reserved.
|
||||
.\"
|
||||
.\" 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.
|
||||
.\" 3. All advertising materials mentioning features or use of this software
|
||||
.\" must display the following acknowledgement:
|
||||
.\" This product includes software developed by the University of
|
||||
.\" California, Berkeley and its contributors.
|
||||
.\" 4. Neither the name of the University nor the names of its contributors
|
||||
.\" 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.
|
||||
.\"
|
||||
.\" from: @(#)init.8 6.7 (Berkeley) 6/2/93
|
||||
.\" $Id: init.8,v 1.1 1993/06/18 20:51:47 cgd Exp $
|
||||
.\"
|
||||
.Dd June 2, 1993
|
||||
.Dt INIT 8
|
||||
.Os BSD 4
|
||||
.Sh NAME
|
||||
.Nm init
|
||||
.Nd process control initialization
|
||||
.Sh SYNOPSIS
|
||||
.Nm init
|
||||
.Sh DESCRIPTION
|
||||
The
|
||||
.Nm init
|
||||
program
|
||||
is the last stage of the boot process.
|
||||
It normally runs the automatic reboot sequence as described in
|
||||
.Xr reboot 8 ,
|
||||
and if this succeeds, begins multi-user operation.
|
||||
If the reboot scripts fail,
|
||||
.Nm init
|
||||
commences single user operation by giving
|
||||
the super-user a shell on the console.
|
||||
The
|
||||
.Nm init
|
||||
program may be passed parameters
|
||||
from the boot program to
|
||||
prevent the system from going multi-user and to instead execute
|
||||
a single user shell without starting the normal daemons.
|
||||
The system is then quiescent for maintenance work and may
|
||||
later be made to go to multi-user by exiting the
|
||||
single-user shell (with ^D).
|
||||
This
|
||||
causes
|
||||
.Nm init
|
||||
to run the
|
||||
.Pa /etc/rc
|
||||
start up command file in fastboot mode (skipping disk checks).
|
||||
.Pp
|
||||
If the
|
||||
.Nm console
|
||||
entry in the
|
||||
.Xr ttys 5
|
||||
file is marked ``insecure'',
|
||||
then
|
||||
.Nm init
|
||||
will require that the superuser password be
|
||||
entered before the system will start a single-user shell.
|
||||
The password check is skipped if the
|
||||
.Nm console
|
||||
is marked as ``secure''.
|
||||
.Pp
|
||||
The kernel runs with four different levels of security.
|
||||
Any superuser process can raise the security level, but only
|
||||
.Nm init
|
||||
can lower it.
|
||||
Security levels are defined as follows:
|
||||
.Bl -tag -width flag
|
||||
.It Ic -1
|
||||
Permanently insecure mode \- always run system in level 0 mode.
|
||||
.It Ic 0
|
||||
Insecure mode \- immutable and append-only flags may be turned off.
|
||||
All devices may be read or written subject to their permissions.
|
||||
.It Ic 1
|
||||
Secure mode \- immutable and append-only flags may not be changed;
|
||||
disks for mounted filesystems,
|
||||
.Pa /dev/mem ,
|
||||
and
|
||||
.Pa /dev/kmem
|
||||
are read-only.
|
||||
.It Ic 2
|
||||
Highly secure mode \- same as secure mode, plus disks are always
|
||||
read-only whether mounted or not.
|
||||
This level precludes tampering with filesystems by unmounting them,
|
||||
but also inhibits running
|
||||
.Xr newfs 8
|
||||
while the system is multi-user.
|
||||
.El
|
||||
.Pp
|
||||
Normally, the system runs in level 0 mode while single user
|
||||
and in level 1 mode while multiuser.
|
||||
If the level 2 mode is desired while running multiuser,
|
||||
it can be set in the startup script
|
||||
.Pa /etc/rc
|
||||
using
|
||||
.Xr sysctl 1 .
|
||||
If it is desired to run the system in level 0 mode while multiuser,
|
||||
the administrator must build a kernel with the variable
|
||||
.Nm securelevel
|
||||
in the kernel source file
|
||||
.Pa /sys/kern/kern_sysctl.c
|
||||
initialized to -1.
|
||||
.Pp
|
||||
In multi-user operation,
|
||||
.Nm init
|
||||
maintains
|
||||
processes for the terminal ports found in the file
|
||||
.Xr ttys 5 .
|
||||
.Nm Init
|
||||
reads this file, and executes the command found in the second field.
|
||||
This command is usually
|
||||
.Xr getty 8 ;
|
||||
.Xr getty
|
||||
opens and initializes the tty line
|
||||
and
|
||||
executes the
|
||||
.Xr login
|
||||
program.
|
||||
The
|
||||
.Xr 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
|
||||
.Nm init
|
||||
program wakes up, deletes the user
|
||||
from the
|
||||
.Xr utmp 5
|
||||
file of current users and records the logout in the
|
||||
.Xr wtmp
|
||||
file.
|
||||
The cycle is
|
||||
then restarted by
|
||||
.Nm init
|
||||
executing a new
|
||||
.Xr getty
|
||||
for the line.
|
||||
.Pp
|
||||
Line status (on, off, secure, getty, or window information)
|
||||
may be changed in the
|
||||
.Xr ttys
|
||||
file without a reboot by sending the signal
|
||||
.Dv SIGHUP
|
||||
to
|
||||
.Nm init
|
||||
with the command
|
||||
.Dq Li "kill -HUP 1" .
|
||||
On receipt of this signal,
|
||||
.Nm init
|
||||
re-reads the
|
||||
.Xr ttys
|
||||
file.
|
||||
When a line is turned off in
|
||||
.Xr ttys ,
|
||||
.Nm init
|
||||
will send a SIGHUP signal to the controlling process
|
||||
for the session associated with the line.
|
||||
For any lines that were previously turned off in the
|
||||
.Xr ttys
|
||||
file and are now on,
|
||||
.Nm init
|
||||
executes a new
|
||||
.Xr getty
|
||||
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
|
||||
login session (e.g., the next time
|
||||
.Nm init
|
||||
starts a process on the line).
|
||||
If a line is commented out or deleted from
|
||||
.Xr ttys ,
|
||||
.Nm init
|
||||
will not do anything at all to that line.
|
||||
However, it will complain that the relationship between lines
|
||||
in the
|
||||
.Xr ttys
|
||||
file and records in the
|
||||
.Xr utmp
|
||||
file is out of sync,
|
||||
so this practice is not recommended.
|
||||
.Pp
|
||||
.Nm Init
|
||||
will terminate multi-user operations and resume single-user mode
|
||||
if sent a terminate
|
||||
.Pq Dv TERM
|
||||
signal, for example,
|
||||
.Dq Li "kill \-TERM 1" .
|
||||
If there are processes outstanding that are deadlocked (because of
|
||||
hardware or software failure),
|
||||
.Xr init
|
||||
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
|
||||
.Nm Init
|
||||
will cease creating new
|
||||
.Xr getty Ns 's
|
||||
and allow the system to slowly die away, if it is sent a terminal stop
|
||||
.Pq Dv TSTP
|
||||
signal, i.e.
|
||||
.Dq Li "kill \-TSTP 1" .
|
||||
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
|
||||
.Nm init
|
||||
is so critical that if it dies, the system will reboot itself
|
||||
automatically.
|
||||
If, at bootstrap time, the
|
||||
.Xr init
|
||||
process cannot be located, the system will panic with the message
|
||||
``panic: "init died (signal %d, exit %d)''.
|
||||
.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."
|
||||
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.
|
||||
.El
|
||||
.Sh FILES
|
||||
.Bl -tag -width /var/log/wtmp -compact
|
||||
.It Pa /dev/console
|
||||
System console device.
|
||||
.It Pa /dev/tty*
|
||||
Terminal ports found in
|
||||
.Xr ttys .
|
||||
.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
|
||||
.Sh SEE ALSO
|
||||
.Xr login 1 ,
|
||||
.Xr kill 1 ,
|
||||
.Xr sh 1 ,
|
||||
.Xr ttys 5 ,
|
||||
.Xr crash 8 ,
|
||||
.Xr getty 8 ,
|
||||
.Xr rc 8 ,
|
||||
.Xr reboot 8 ,
|
||||
.Xr halt 8 ,
|
||||
.Xr shutdown 8
|
||||
.Sh HISTORY
|
||||
A
|
||||
.Nm
|
||||
command appeared in
|
||||
.At v6 .
|
||||
.Sh BUGS
|
||||
Systems without
|
||||
.Xr sysctl
|
||||
behave as though they have security level \-1.
|
1604
sbin/init/init.c
1604
sbin/init/init.c
File diff suppressed because it is too large
Load Diff
|
@ -0,0 +1,43 @@
|
|||
/*-
|
||||
* Copyright (c) 1991 The Regents of the University of California.
|
||||
* All rights reserved.
|
||||
*
|
||||
* This code is derived from software contributed to Berkeley by
|
||||
* Donn Seeley at UUNET Technologies, 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.
|
||||
* 3. All advertising materials mentioning features or use of this software
|
||||
* must display the following acknowledgement:
|
||||
* This product includes software developed by the University of
|
||||
* California, Berkeley and its contributors.
|
||||
* 4. Neither the name of the University nor the names of its contributors
|
||||
* 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.
|
||||
*
|
||||
* from: @(#)pathnames.h 6.1 (Berkeley) 7/2/91
|
||||
* $Id: pathnames.h,v 1.1 1993/06/18 20:51:50 cgd Exp $
|
||||
*/
|
||||
|
||||
#include <paths.h>
|
||||
|
||||
#define _PATH_SLOGGER "/sbin/session_logger"
|
||||
#define _PATH_RUNCOM "/etc/rc"
|
Loading…
Reference in New Issue