mirror of https://github.com/GnoConsortium/gno.git
initial checkin
This commit is contained in:
parent
75e4ffde40
commit
3f66072e30
|
@ -0,0 +1,11 @@
|
||||||
|
# @(#)Makefile 8.1 (Berkeley) 7/19/93
|
||||||
|
|
||||||
|
PROG= init
|
||||||
|
MAN8= init.8
|
||||||
|
DPADD= ${LIBUTIL}
|
||||||
|
LDADD= -lutil -lcrypt
|
||||||
|
BINMODE=500
|
||||||
|
INSTALLFLAGS=-fschg
|
||||||
|
CFLAGS+=-DDEBUGSHELL -DSECURE
|
||||||
|
|
||||||
|
.include <bsd.prog.mk>
|
|
@ -0,0 +1,112 @@
|
||||||
|
POSIX and init:
|
||||||
|
--------------
|
||||||
|
|
||||||
|
POSIX.1 does not define 'init' but it mentions it in a few places.
|
||||||
|
|
||||||
|
B.2.2.2, p205 line 873:
|
||||||
|
|
||||||
|
This is part of the extensive 'job control' glossary entry.
|
||||||
|
This specific reference says that 'init' must by default provide
|
||||||
|
protection from job control signals to jobs it starts --
|
||||||
|
it sets SIGTSTP, SIGTTIN and SIGTTOU to SIG_IGN.
|
||||||
|
|
||||||
|
B.2.2.2, p206 line 889:
|
||||||
|
|
||||||
|
Here is a reference to 'vhangup'. It says, 'POSIX.1 does
|
||||||
|
not specify how controlling terminal access is affected by
|
||||||
|
a user logging out (that is, by a controlling process
|
||||||
|
terminating).' vhangup() is recognized as one way to handle
|
||||||
|
the problem. I'm not clear what happens in Reno; I have
|
||||||
|
the impression that when the controlling process terminates,
|
||||||
|
references to the controlling terminal are converted to
|
||||||
|
references to a 'dead' vnode. I don't know whether vhangup()
|
||||||
|
is required.
|
||||||
|
|
||||||
|
B.2.2.2, p206 line 921:
|
||||||
|
|
||||||
|
Orphaned process groups bear indirectly on this issue. A
|
||||||
|
session leader's process group is considered to be orphaned;
|
||||||
|
that is, it's immune to job control signals from the terminal.
|
||||||
|
|
||||||
|
B.2.2.2, p233 line 2055:
|
||||||
|
|
||||||
|
'Historically, the implementation-dependent process that
|
||||||
|
inherits children whose parents have terminated without
|
||||||
|
waiting on them is called "init" and has a process ID of 1.'
|
||||||
|
|
||||||
|
It goes on to note that it used to be the case that 'init'
|
||||||
|
was responsible for sending SIGHUP to the foreground process
|
||||||
|
group of a tty whose controlling process has exited, using
|
||||||
|
vhangup(). It is now the responsibility of the kernel to
|
||||||
|
do this when the controlling process calls _exit(). The
|
||||||
|
kernel is also responsible for sending SIGCONT to stopped
|
||||||
|
process groups that become orphaned. This is like old BSD
|
||||||
|
but entire process groups are signaled instead of individual
|
||||||
|
processes.
|
||||||
|
|
||||||
|
In general it appears that the kernel now automatically
|
||||||
|
takes care of orphans, relieving 'init' of any responsibility.
|
||||||
|
Specifics are listed on the _exit() page (p50).
|
||||||
|
|
||||||
|
On setsid():
|
||||||
|
-----------
|
||||||
|
|
||||||
|
It appears that neither getty nor login call setsid(), so init must
|
||||||
|
do this -- seems reasonable. B.4.3.2 p 248 implies that this is the
|
||||||
|
way that 'init' should work; it says that setsid() should be called
|
||||||
|
after forking.
|
||||||
|
|
||||||
|
Process group leaders cannot call setsid() -- another reason to
|
||||||
|
fork! Of course setsid() causes the current process to become a
|
||||||
|
process group leader, so we can only call setsid() once. Note that
|
||||||
|
the controlling terminal acquires the session leader's process
|
||||||
|
group when opened.
|
||||||
|
|
||||||
|
Controlling terminals:
|
||||||
|
---------------------
|
||||||
|
|
||||||
|
B.7.1.1.3 p276: 'POSIX.1 does not specify a mechanism by which to
|
||||||
|
allocate a controlling terminal. This is normally done by a system
|
||||||
|
utility (such as 'getty') and is considered ... outside the scope
|
||||||
|
of POSIX.1.' It goes on to say that historically the first open()
|
||||||
|
of a tty in a session sets the controlling terminal. P130 has the
|
||||||
|
full details; nothing particularly surprising.
|
||||||
|
|
||||||
|
The glossary p12 describes a 'controlling process' as the first
|
||||||
|
process in a session that acquires a controlling terminal. Access
|
||||||
|
to the terminal from the session is revoked if the controlling
|
||||||
|
process exits (see p50, in the discussion of process termination).
|
||||||
|
|
||||||
|
Design notes:
|
||||||
|
------------
|
||||||
|
|
||||||
|
your generic finite state machine
|
||||||
|
we are fascist about which signals we elect to receive,
|
||||||
|
even signals purportedly generated by hardware
|
||||||
|
handle fatal errors gracefully if possible (we reboot if we goof!!)
|
||||||
|
if we get a segmentation fault etc., print a message on the console
|
||||||
|
and spin for a while before rebooting
|
||||||
|
(this at least decreases the amount of paper consumed :-)
|
||||||
|
apply hysteresis to rapidly exiting gettys
|
||||||
|
check wait status of children we reap
|
||||||
|
don't wait for stopped children
|
||||||
|
don't use SIGCHILD, it's too expensive
|
||||||
|
but it may close windows and avoid races, sigh
|
||||||
|
look for EINTR in case we need to change state
|
||||||
|
init is responsible for utmp and wtmp maintenance (ick)
|
||||||
|
maybe now we can consider replacements? maintain them in parallel
|
||||||
|
init only removes utmp and closes out wtmp entries...
|
||||||
|
|
||||||
|
necessary states and state transitions (gleaned from the man page):
|
||||||
|
1: single user shell (with password checking?); on exit, go to 2
|
||||||
|
2: rc script: on exit 0, go to 3; on exit N (error), go to 1
|
||||||
|
3: read ttys file: on completion, go to 4
|
||||||
|
4: multi-user operation: on SIGTERM, go to 7; on SIGHUP, go to 5;
|
||||||
|
on SIGTSTP, go to 6
|
||||||
|
5: clean up mode (re-read ttys file, killing off controlling processes
|
||||||
|
on lines that are now 'off', starting them on lines newly 'on')
|
||||||
|
on completion, go to 4
|
||||||
|
6: boring mode (no new sessions); signals as in 4
|
||||||
|
7: death: send SIGHUP to all controlling processes, reap for 30 seconds,
|
||||||
|
then go to 1 (warn if not all processes died, i.e. wait blocks)
|
||||||
|
Given the -s flag, we start at state 1; otherwise state 2
|
|
@ -0,0 +1,296 @@
|
||||||
|
.\" Copyright (c) 1980, 1991, 1993
|
||||||
|
.\" The 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.
|
||||||
|
.\"
|
||||||
|
.\" @(#)init.8 8.3 (Berkeley) 4/18/94
|
||||||
|
.\"
|
||||||
|
.\" $Id: init.8,v 1.1 1997/10/04 05:23:51 gdr Exp $
|
||||||
|
.\"
|
||||||
|
.TH INIT 8 "4 October 1997" GNO "System Administration"
|
||||||
|
.SH NAME
|
||||||
|
.BR init
|
||||||
|
\- process control initialization
|
||||||
|
.SH SYNOPSIS
|
||||||
|
.BR init
|
||||||
|
.SH DESCRIPTION
|
||||||
|
The
|
||||||
|
.BR init
|
||||||
|
program
|
||||||
|
is the last stage of the boot process.
|
||||||
|
It normally runs the automatic reboot sequence as described in
|
||||||
|
.BR reboot (8),
|
||||||
|
and if this succeeds, begins multi-user operation.
|
||||||
|
If the reboot scripts fail,
|
||||||
|
.BR init
|
||||||
|
commences single user operation by giving
|
||||||
|
the super-user a shell on the console.
|
||||||
|
The
|
||||||
|
.BR 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
|
||||||
|
.BR init
|
||||||
|
to run the
|
||||||
|
.BR /etc/rc
|
||||||
|
start up command file in fastboot mode (skipping disk checks).
|
||||||
|
.LP
|
||||||
|
If the
|
||||||
|
.BR console
|
||||||
|
entry in the
|
||||||
|
.BR ttys (5)
|
||||||
|
file is marked ``insecure'',
|
||||||
|
then
|
||||||
|
.BR 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
|
||||||
|
.BR console
|
||||||
|
is marked as ``secure''.
|
||||||
|
.LP
|
||||||
|
The kernel runs with four different levels of security.
|
||||||
|
Any superuser process can raise the security level, but only
|
||||||
|
.BR init
|
||||||
|
can lower it.
|
||||||
|
Security levels are defined as follows:
|
||||||
|
.RS
|
||||||
|
.IP \fB-1\fR
|
||||||
|
Permanently insecure mode \- always run system in level 0 mode.
|
||||||
|
.IP \fB0\fR
|
||||||
|
Insecure mode \- immutable and append-only flags may be turned off.
|
||||||
|
All devices may be read or written subject to their permissions.
|
||||||
|
.IP \fB1\fR
|
||||||
|
Secure mode \- immutable and append-only flags may not be changed;
|
||||||
|
disks for mounted filesystems,
|
||||||
|
.BR /dev/mem ,
|
||||||
|
and
|
||||||
|
.BR /dev/kmem
|
||||||
|
are read-only.
|
||||||
|
.IP \fB2\fR
|
||||||
|
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
|
||||||
|
.BR newfs (8)
|
||||||
|
while the system is multi-user.
|
||||||
|
.RE
|
||||||
|
.LP
|
||||||
|
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
|
||||||
|
.BR /etc/rc
|
||||||
|
using
|
||||||
|
.BR sysctl (8).
|
||||||
|
If it is desired to run the system in level 0 mode while multiuser,
|
||||||
|
the administrator must build a kernel with the variable
|
||||||
|
.BR securelevel
|
||||||
|
defined in the file
|
||||||
|
.BR /sys/compile/MACHINE/param.c
|
||||||
|
and initialize it to -1.
|
||||||
|
.LP
|
||||||
|
In multi-user operation,
|
||||||
|
.BR init
|
||||||
|
maintains
|
||||||
|
processes for the terminal ports found in the file
|
||||||
|
.BR ttys (5).
|
||||||
|
.BR Init
|
||||||
|
reads this file, and executes the command found in the second field.
|
||||||
|
This command is usually
|
||||||
|
.BR getty (8);
|
||||||
|
.BR getty
|
||||||
|
opens and initializes the tty line
|
||||||
|
and
|
||||||
|
executes the
|
||||||
|
.BR login
|
||||||
|
program.
|
||||||
|
The
|
||||||
|
.BR 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
|
||||||
|
.BR init
|
||||||
|
program wakes up, deletes the user
|
||||||
|
from the
|
||||||
|
.BR utmp (5)
|
||||||
|
file of current users and records the logout in the
|
||||||
|
.BR wtmp
|
||||||
|
file.
|
||||||
|
The cycle is
|
||||||
|
then restarted by
|
||||||
|
.BR init
|
||||||
|
executing a new
|
||||||
|
.BR getty
|
||||||
|
for the line.
|
||||||
|
.LP
|
||||||
|
Line status (on, off, secure, getty, or window information)
|
||||||
|
may be changed in the
|
||||||
|
.BR ttys
|
||||||
|
file without a reboot by sending the signal
|
||||||
|
.BR SIGHUP
|
||||||
|
to
|
||||||
|
.BR init
|
||||||
|
with the command
|
||||||
|
.B "kill -HUP 1" .
|
||||||
|
On receipt of this signal,
|
||||||
|
.BR init
|
||||||
|
re-reads the
|
||||||
|
.BR ttys
|
||||||
|
file.
|
||||||
|
When a line is turned off in
|
||||||
|
.BR ttys ,
|
||||||
|
.BR 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
|
||||||
|
.BR ttys
|
||||||
|
file and are now on,
|
||||||
|
.BR init
|
||||||
|
executes a new
|
||||||
|
.BR 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
|
||||||
|
.BR init
|
||||||
|
starts a process on the line).
|
||||||
|
If a line is commented out or deleted from
|
||||||
|
.BR ttys ,
|
||||||
|
.BR init
|
||||||
|
will not do anything at all to that line.
|
||||||
|
However, it will complain that the relationship between lines
|
||||||
|
in the
|
||||||
|
.BR ttys
|
||||||
|
file and records in the
|
||||||
|
.BR utmp
|
||||||
|
file is out of sync,
|
||||||
|
so this practice is not recommended.
|
||||||
|
.LP
|
||||||
|
.BR Init
|
||||||
|
will terminate multi-user operations and resume single-user mode
|
||||||
|
if sent a terminate TERM
|
||||||
|
signal, for example,
|
||||||
|
.BR "kill \-TERM 1" .
|
||||||
|
If there are processes outstanding that are deadlocked (because of
|
||||||
|
hardware or software failure),
|
||||||
|
.BR 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.
|
||||||
|
.LP
|
||||||
|
.BR Init
|
||||||
|
will cease creating new
|
||||||
|
.BR getty Ns's
|
||||||
|
and allow the system to slowly die away, if it is sent a terminal stop
|
||||||
|
TSTP signal, i.e.
|
||||||
|
.BR "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
|
||||||
|
.BR reboot (8)
|
||||||
|
and
|
||||||
|
.BR halt (8).
|
||||||
|
.LP
|
||||||
|
.BR Init
|
||||||
|
will terminate all possible processes (again, it will not wait
|
||||||
|
for deadlocked processes) and reboot the machine if sent the interrupt
|
||||||
|
INT signal, i.e.
|
||||||
|
.BR "kill \-INT 1" .
|
||||||
|
This is useful for shutting the machine down cleanly from inside the kernel
|
||||||
|
or from X when the machines appears to be hung.
|
||||||
|
.LP
|
||||||
|
The role of
|
||||||
|
.BR init
|
||||||
|
is so critical that if it dies, the system will reboot itself
|
||||||
|
automatically.
|
||||||
|
If, at bootstrap time, the
|
||||||
|
.BR init
|
||||||
|
process cannot be located, the system will panic with the message
|
||||||
|
``panic: "init died (signal %d, exit %d)''.
|
||||||
|
.SH DIAGNOSTICS
|
||||||
|
.RS
|
||||||
|
.IP "\fIgetty repeating too quickly on port %s, sleeping\fR"
|
||||||
|
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.
|
||||||
|
.IR "Init will sleep for 10 seconds" ,
|
||||||
|
.IR "then continue trying to start the process" .
|
||||||
|
.LP
|
||||||
|
.IP "\fIsome processes would not die; ps axl advised.\fR"
|
||||||
|
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.
|
||||||
|
.RE
|
||||||
|
.SH FILES
|
||||||
|
.RS
|
||||||
|
.IP \fB/dev/console\fR
|
||||||
|
System console device.
|
||||||
|
.IP \fB/dev/tty*\fR
|
||||||
|
Terminal ports found in
|
||||||
|
.BR ttys .
|
||||||
|
.IP \fB/var/run/utmp\fR
|
||||||
|
Record of Current users on the system.
|
||||||
|
.IP \fB/var/log/wtmp\fR
|
||||||
|
Record of all logins and logouts.
|
||||||
|
.IP \fB/etc/ttys\fR
|
||||||
|
The terminal initialization information file.
|
||||||
|
.IP \fB/etc/rc\fR
|
||||||
|
System startup commands.
|
||||||
|
.RE
|
||||||
|
.SH SEE ALSO
|
||||||
|
.BR login (1),
|
||||||
|
.BR kill (1),
|
||||||
|
.BR sh (1),
|
||||||
|
.BR ttys (5),
|
||||||
|
.BR crash (8),
|
||||||
|
.BR getty (8),
|
||||||
|
.BR rc (8),
|
||||||
|
.BR reboot (8),
|
||||||
|
.BR halt (8),
|
||||||
|
.BR shutdown (8)
|
||||||
|
.SH HISTORY
|
||||||
|
A
|
||||||
|
.BR init
|
||||||
|
command appeared in Version 6 AT&T UNIX.
|
||||||
|
.SH BUGS
|
||||||
|
Systems without
|
||||||
|
.BR sysctl
|
||||||
|
behave as though they have security level \-1.
|
File diff suppressed because it is too large
Load Diff
|
@ -0,0 +1,42 @@
|
||||||
|
/*-
|
||||||
|
* Copyright (c) 1991, 1993
|
||||||
|
* The 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.
|
||||||
|
*
|
||||||
|
* @(#)pathnames.h 8.1 (Berkeley) 6/5/93
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include <paths.h>
|
||||||
|
|
||||||
|
#define _PATH_SLOGGER "/sbin/session_logger"
|
||||||
|
#define _PATH_RUNCOM "/etc/rc"
|
|
@ -0,0 +1,26 @@
|
||||||
|
# @(#)Makefile 8.1 (Berkeley) 6/5/93
|
||||||
|
|
||||||
|
PROG= reboot
|
||||||
|
DPADD= ${LIBUTIL}
|
||||||
|
LDADD= -lutil
|
||||||
|
MAN8= reboot.8 boot_hp300.8 boot_i386.8 boot_sparc.8 boot_tahoe.8 boot_vax.8
|
||||||
|
MLINKS= reboot.8 halt.8 reboot.8 fastboot.8 reboot.8 fasthalt.8
|
||||||
|
|
||||||
|
ARCH!= uname -m
|
||||||
|
|
||||||
|
.if exists (${.CURDIR}/boot_${ARCH}.8)
|
||||||
|
MLINKS+= boot_${ARCH}.8 boot.8
|
||||||
|
.endif
|
||||||
|
|
||||||
|
LINKS= ${BINDIR}/reboot ${BINDIR}/halt ${BINDIR}/reboot ${BINDIR}/fastboot \
|
||||||
|
${BINDIR}/reboot ${BINDIR}/fasthalt
|
||||||
|
|
||||||
|
XXXBROKENafterinstall:
|
||||||
|
${MINSTALL} boot_hp300.8 ${DESTDIR}${MANDIR}8/hp300/boot.8
|
||||||
|
${MINSTALL} boot_i386.8 ${DESTDIR}${MANDIR}8/i386/boot.8
|
||||||
|
${MINSTALL} boot_sparc.8 ${DESTDIR}${MANDIR}8/sparc/boot.8
|
||||||
|
${MINSTALL} boot_tahoe.8 ${DESTDIR}${MANDIR}8/tahoe/boot.8
|
||||||
|
${MINSTALL} boot_vax.8 ${DESTDIR}${MANDIR}8/vax/boot.8
|
||||||
|
|
||||||
|
.include <bsd.man.mk>
|
||||||
|
.include <bsd.prog.mk>
|
|
@ -0,0 +1,117 @@
|
||||||
|
.\" Copyright (c) 1990, 1991, 1993
|
||||||
|
.\" The Regents of the University of California. All rights reserved.
|
||||||
|
.\"
|
||||||
|
.\" This code is derived from software contributed to Berkeley by
|
||||||
|
.\" the Systems Programming Group of the University of Utah Computer
|
||||||
|
.\" Science Department.
|
||||||
|
.\"
|
||||||
|
.\" 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.
|
||||||
|
.\"
|
||||||
|
.\" @(#)boot_hp300.8 8.2 (Berkeley) 4/19/94
|
||||||
|
.\"
|
||||||
|
.Dd April 19, 1994
|
||||||
|
.Dt BOOT_HP300 8 hp300
|
||||||
|
.Os
|
||||||
|
.Sh NAME
|
||||||
|
.Nm boot
|
||||||
|
.Nd
|
||||||
|
system bootstrapping procedures
|
||||||
|
.Sh DESCRIPTION
|
||||||
|
.Sy Power fail and crash recovery.
|
||||||
|
Normally, the system will reboot itself at power-up or after crashes.
|
||||||
|
An automatic consistency check of the file systems will be performed,
|
||||||
|
and unless this fails, the system will resume multi-user operations.
|
||||||
|
.Pp
|
||||||
|
.Sy Cold starts.
|
||||||
|
On an HP300, the boot procedure uses the boot ROM to load a boot program
|
||||||
|
from an
|
||||||
|
.Tn LIF
|
||||||
|
format directory at the beginning of an attached disk.
|
||||||
|
The
|
||||||
|
.Pa /usr/mdec
|
||||||
|
directory contains a disk boot programs which should be placed in a
|
||||||
|
new pack automatically by
|
||||||
|
.Xr newfs 8
|
||||||
|
when the ``a'' partition file system on the pack is created.
|
||||||
|
.Pp
|
||||||
|
This
|
||||||
|
.Em boot
|
||||||
|
program
|
||||||
|
finds the corresponding file on the given device
|
||||||
|
.Pf ( Ar kernel
|
||||||
|
by default),
|
||||||
|
loads that file into memory,
|
||||||
|
and starts the program at the entry address specified in the program header.
|
||||||
|
.Pp
|
||||||
|
The boot program can be interrupted by typing `^C' (ctrl-C).
|
||||||
|
This will force the boot program to interactively prompt for a system to boot.
|
||||||
|
If not interrupted, it will boot from the device from which the boot
|
||||||
|
program itself was loaded.
|
||||||
|
.Pp
|
||||||
|
The file specifications used for an interactive boot are of the form:
|
||||||
|
.Pp
|
||||||
|
.Dl device(unit, minor)
|
||||||
|
.Pp
|
||||||
|
where
|
||||||
|
.Ar device
|
||||||
|
is the type of the device to be searched,
|
||||||
|
.Ar unit
|
||||||
|
is 8 * the hpib number plus the unit number of the disk or tape,
|
||||||
|
and
|
||||||
|
.Ar minor
|
||||||
|
is the disk partition or tape file number.
|
||||||
|
Normal line editing characters can be used when typing the file specification.
|
||||||
|
Currently, ``rd'' and ``sd'' are the only valid
|
||||||
|
.Ar device
|
||||||
|
specifiers.
|
||||||
|
.Pp
|
||||||
|
For example,
|
||||||
|
to boot from the `a' file system of unit 0 on HP-IB 2,
|
||||||
|
type
|
||||||
|
.Ql rd(16, 0)kernel
|
||||||
|
to the boot prompt.
|
||||||
|
For tapes, the minor device number gives a file offset.
|
||||||
|
.Pp
|
||||||
|
In an emergency, the bootstrap methods described in the paper
|
||||||
|
.%T Installing 4.3bsd on the HP300
|
||||||
|
can be used to boot from a distribution tape.
|
||||||
|
.Sh FILES
|
||||||
|
.Bl -tag -width /usr/mdec/installboot -compact
|
||||||
|
.It Pa /kernel
|
||||||
|
system code
|
||||||
|
.It Pa /usr/mdec/bootrd
|
||||||
|
.Tn LIF
|
||||||
|
format boot block
|
||||||
|
.It Pa /usr/mdec/installboot
|
||||||
|
program to install boot blocks
|
||||||
|
.El
|
||||||
|
.Sh SEE ALSO
|
||||||
|
.Xr halt 8 ,
|
||||||
|
.Xr reboot 8 ,
|
||||||
|
.Xr shutdown 8
|
|
@ -0,0 +1,169 @@
|
||||||
|
.\" Copyright (c) 1991, 1993
|
||||||
|
.\" The Regents of the University of California. All rights reserved.
|
||||||
|
.\"
|
||||||
|
.\" This code is derived from software written and contributed
|
||||||
|
.\" to Berkeley by William Jolitz.
|
||||||
|
.\"
|
||||||
|
.\" Almost completely rewritten for FreeBSD 2.1 by Joerg Wunsch.
|
||||||
|
.\"
|
||||||
|
.\" 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.
|
||||||
|
.\"
|
||||||
|
.\" @(#)boot_i386.8 8.2 (Berkeley) 4/19/94
|
||||||
|
.\"
|
||||||
|
.\" $Id: boot.i386.8,v 1.1 1997/10/04 05:23:54 gdr Exp $
|
||||||
|
.\"
|
||||||
|
.Dd April 19, 1994
|
||||||
|
.Dt BOOT 8 i386
|
||||||
|
.Os
|
||||||
|
.Sh NAME
|
||||||
|
.Nm boot
|
||||||
|
.Nd
|
||||||
|
system bootstrapping procedures
|
||||||
|
.Sh DESCRIPTION
|
||||||
|
.Sy Power fail and crash recovery.
|
||||||
|
Normally, the system will reboot itself at power-up or after crashes.
|
||||||
|
An automatic consistency check of the file systems will be performed,
|
||||||
|
and unless this fails, the system will resume multi-user operations.
|
||||||
|
.Pp
|
||||||
|
.Sy Cold starts.
|
||||||
|
Most 386
|
||||||
|
.Tn "PC AT"
|
||||||
|
clones attempt to boot the floppy disk drive 0 (otherwise known as
|
||||||
|
drive A:) first, and failing that, attempt to boot the hard disk
|
||||||
|
controller 1, drive 0 (otherwise known as drive C:, or drive 0x80 in
|
||||||
|
the BIOS). The automatic boot will attempt to load
|
||||||
|
.Pa /kernel
|
||||||
|
from partition
|
||||||
|
.Ql a
|
||||||
|
of either the floppy or the hard disk.
|
||||||
|
This boot may be aborted by typing any character on the keyboard
|
||||||
|
at the
|
||||||
|
.Ql Boot:
|
||||||
|
prompt. At this time, the following input will be accepted:
|
||||||
|
.Bl -tag -offset indent -width 10x
|
||||||
|
.It \&?
|
||||||
|
Give a short listing of the files in the root directory of the default
|
||||||
|
boot device, as a hint about available boot files.
|
||||||
|
.It Op ctrlr(unit,part) Op /filename Op Fl abcCdhrsv
|
||||||
|
Specify boot file and flags.
|
||||||
|
.Bl -tag -offset indent -width 10x -compact
|
||||||
|
.It ctrlr
|
||||||
|
The controller to boot from. Note that the controller is required
|
||||||
|
to have BIOS support since the BIOS services are used to load the
|
||||||
|
boot file image.
|
||||||
|
.Pp
|
||||||
|
Common controller names are:
|
||||||
|
.Bl -tag -offset indent -width "wdXX" -compact
|
||||||
|
.It wd
|
||||||
|
ST506, IDE, ESDI, RLL disks on a WD100[2367] or lookalike
|
||||||
|
controller
|
||||||
|
.It fd
|
||||||
|
5 1/4" or 3 1/2" High density floppies
|
||||||
|
.It sd
|
||||||
|
SCSI disk on any supported SCSI controller
|
||||||
|
.It cd
|
||||||
|
boot from CDROM
|
||||||
|
.It hd
|
||||||
|
Pseudo-controller, must be used to specify that unit number
|
||||||
|
1 (known to the BIOS as drive 0x81) is on a different controller
|
||||||
|
than unit number 0. This can happen for the wd vs. sd case.
|
||||||
|
.El
|
||||||
|
.It unit
|
||||||
|
The unit number of the drive on the controller being used. Either 0
|
||||||
|
or 1 for the wd and fd and most sd controllers, between 0 and 6 for
|
||||||
|
some newer sd controllers.
|
||||||
|
.It part
|
||||||
|
The partition letter inside the BSD portion of the disk. See
|
||||||
|
.Xr disklabel 8 .
|
||||||
|
By convention, only partition
|
||||||
|
.Ql a
|
||||||
|
contains a bootable image. If sliced disks are used
|
||||||
|
.Pq Dq fdisk partitions ,
|
||||||
|
only the first BSD slice can be used to boot from. The partition
|
||||||
|
letter does always refer to this slice then.
|
||||||
|
.It /filename
|
||||||
|
The pathname of the file to boot; must be inside the root directory
|
||||||
|
of the specified partition. Defaults to
|
||||||
|
.Pa /kernel .
|
||||||
|
Symbolic links are not supported (hard links are).
|
||||||
|
.It Fl abcCdhrsv
|
||||||
|
Boot flags:
|
||||||
|
.Bl -tag -offset indent -width "-CXX" -compact
|
||||||
|
.It Fl a
|
||||||
|
ask for the device to install as root file system during kernel
|
||||||
|
initialization
|
||||||
|
.It Fl b
|
||||||
|
do not automatically reboot after shutdown or crash
|
||||||
|
.It Fl c
|
||||||
|
run UserConfig to modify hardware parameters for the loaded
|
||||||
|
kernel
|
||||||
|
.It Fl C
|
||||||
|
boot from CDROM
|
||||||
|
.It Fl d
|
||||||
|
enter the DDB kernel debugger
|
||||||
|
.Pq see Xr ddb 4
|
||||||
|
before configuring any device (except the system's console)
|
||||||
|
.It Fl h
|
||||||
|
toggle serial/graphics console
|
||||||
|
.It Fl r
|
||||||
|
do not establish the root directory of the file system
|
||||||
|
hierarchy on the device where the boot file is being loaded
|
||||||
|
from
|
||||||
|
.It Fl s
|
||||||
|
boot into single-user mode; if the console is marked as
|
||||||
|
.Dq insecure
|
||||||
|
.Pq see Xr ttys 5 ,
|
||||||
|
the root password must be entered
|
||||||
|
.It Fl v
|
||||||
|
be verbose during device probing
|
||||||
|
.El
|
||||||
|
.El
|
||||||
|
.El
|
||||||
|
.Sh FILES
|
||||||
|
.Bl -tag -width /kernelxx -compact
|
||||||
|
.It Pa /kernel
|
||||||
|
system code
|
||||||
|
.\" .It Pa /boot
|
||||||
|
.\" system bootstrap
|
||||||
|
.El
|
||||||
|
.Sh SEE ALSO
|
||||||
|
.Xr ddb 4 ,
|
||||||
|
.Xr ttys 5 ,
|
||||||
|
.Xr halt 8 ,
|
||||||
|
.Xr reboot 8 ,
|
||||||
|
.Xr shutdown 8 ,
|
||||||
|
.Xr disklabel 8 .
|
||||||
|
.Sh BUGS
|
||||||
|
The disklabel format used by this version of
|
||||||
|
.Bx
|
||||||
|
is quite
|
||||||
|
different from that of other architectures.
|
||||||
|
.Pp
|
||||||
|
The boot flags are not very self-explanatory, and the alphabet has
|
||||||
|
too few characters to implement every potentially useful boot option.
|
|
@ -0,0 +1,89 @@
|
||||||
|
.\" Copyright (c) 1992, 1993
|
||||||
|
.\" The Regents of the University of California. All rights reserved.
|
||||||
|
.\"
|
||||||
|
.\" 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.
|
||||||
|
.\"
|
||||||
|
.\" @(#)boot_sparc.8 8.2 (Berkeley) 4/19/94
|
||||||
|
.\"
|
||||||
|
.Dd April 19, 1994
|
||||||
|
.Dt REBOOT 8 sparc
|
||||||
|
.Os
|
||||||
|
.Sh NAME
|
||||||
|
.Nm reboot
|
||||||
|
.Nd
|
||||||
|
.Tn UNIX
|
||||||
|
bootstrapping procedures
|
||||||
|
.Sh SYNOPSIS
|
||||||
|
.Nm reboot
|
||||||
|
.Op Fl n
|
||||||
|
.Op Fl q
|
||||||
|
.Sh DESCRIPTION
|
||||||
|
.Sy Power fail and crash recovery.
|
||||||
|
Normally, the system will reboot itself at power-up or after crashes.
|
||||||
|
An automatic consistency check of the file systems will be performed
|
||||||
|
as described in
|
||||||
|
.Xr fsck 8 .
|
||||||
|
and unless this fails, the system will resume multi-user operations.
|
||||||
|
.Pp
|
||||||
|
.Sy Cold starts
|
||||||
|
The SPARC system currently uses the SunOS bootstrap loaders.
|
||||||
|
This will be changed in a future version of the system.
|
||||||
|
The SunOS boot will attempt to load
|
||||||
|
.Pa kernel
|
||||||
|
from partition A of the boot device,
|
||||||
|
which must currently be an ``sd'' disk.
|
||||||
|
.Pp
|
||||||
|
The
|
||||||
|
.Op Fl s
|
||||||
|
flag to the SunOS boot loader will being the system up in single-user mode.
|
||||||
|
The
|
||||||
|
.Op Fl d
|
||||||
|
flag to the SunOS boot loader will bring the system up in debug mode.
|
||||||
|
Here it waits for a kernel debugger connect; see
|
||||||
|
.Xr kgdb 8 .
|
||||||
|
Other flags are currently ignored.
|
||||||
|
.Sh FILES
|
||||||
|
.Bl -tag -width /kernelxx -compact
|
||||||
|
.It Pa /kernel
|
||||||
|
system code
|
||||||
|
.It Pa /boot
|
||||||
|
system bootstrap
|
||||||
|
.El
|
||||||
|
.Sh SEE ALSO
|
||||||
|
.Xr crash 8 ,
|
||||||
|
.Xr disklabel 8 ,
|
||||||
|
.Xr fsck 8 ,
|
||||||
|
.Xr halt 8 ,
|
||||||
|
.Xr init 8 ,
|
||||||
|
.Xr rc 8 ,
|
||||||
|
.Xr shutdown 8 ,
|
||||||
|
.Xr syslogd 8
|
||||||
|
.Sh BUGS
|
||||||
|
The use of Sun disk labels, without the ability to write them,
|
||||||
|
is problematic.
|
|
@ -0,0 +1,152 @@
|
||||||
|
.\" Copyright (c) 1980, 1991, 1993
|
||||||
|
.\" The Regents of the University of California. All rights reserved.
|
||||||
|
.\"
|
||||||
|
.\" 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.
|
||||||
|
.\"
|
||||||
|
.\" @(#)boot_tahoe.8 8.2 (Berkeley) 4/19/94
|
||||||
|
.\"
|
||||||
|
.Dd April 19, 1994
|
||||||
|
.Dt BOOT 8 tahoe
|
||||||
|
.Os
|
||||||
|
.Sh NAME
|
||||||
|
.Nm boot
|
||||||
|
.Nd
|
||||||
|
system bootstrapping procedures
|
||||||
|
.Sh DESCRIPTION
|
||||||
|
.Sy Power fail and crash recovery.
|
||||||
|
Normally, the system will reboot itself at power-up or after crashes.
|
||||||
|
An automatic consistency check of the file systems will be performed,
|
||||||
|
and unless this fails, the system will resume multi-user operations.
|
||||||
|
.Pp
|
||||||
|
.Sy Cold starts.
|
||||||
|
These are processor-type dependent.
|
||||||
|
On the
|
||||||
|
.Tn CCI
|
||||||
|
Power 6/32 and related processors,
|
||||||
|
the system will do a standard autoboot from drive 0
|
||||||
|
upon power-up or reset.
|
||||||
|
This automatic boot may be cancelled by typing a
|
||||||
|
.Ql \&#
|
||||||
|
in the first few seconds after reset.
|
||||||
|
This enters console mode; the console prompt is
|
||||||
|
.Ql >
|
||||||
|
or
|
||||||
|
.Ql \&# .
|
||||||
|
The boot flags can be set to any hexadecimal value
|
||||||
|
.Fl n
|
||||||
|
with the command
|
||||||
|
.Pp
|
||||||
|
.Bd -filled -offset indent -compact
|
||||||
|
.Li \&#> p23
|
||||||
|
.Ar n .
|
||||||
|
.Ed
|
||||||
|
.Pp
|
||||||
|
The default device may be examined or set; see the Diagnostics and Debugging
|
||||||
|
manual for the processor for details on device naming and syntax.
|
||||||
|
After setting the boot flags and/or device,
|
||||||
|
a bootstrap sequence can be initiated with
|
||||||
|
.Pp
|
||||||
|
.Dl #> fb
|
||||||
|
.Pp
|
||||||
|
A specific device or bootstrap file may be used; for example,
|
||||||
|
.Pp
|
||||||
|
.Dl \&#> \&fb xfd(1,0)
|
||||||
|
.Pp
|
||||||
|
would boot from the `a' partition on
|
||||||
|
.Tn XFD
|
||||||
|
drive 1.
|
||||||
|
.Pp
|
||||||
|
The file specifications used for the boostrap
|
||||||
|
when loaded with the
|
||||||
|
.Dq askme
|
||||||
|
flag
|
||||||
|
(register 23 set to 1 or 3)
|
||||||
|
are of the form:
|
||||||
|
.Pp
|
||||||
|
.Dl device(adaptor,controller,unit,minor)
|
||||||
|
.Pp
|
||||||
|
where
|
||||||
|
.Ar device
|
||||||
|
is the type of the device to be searched,
|
||||||
|
.Ar adaptor
|
||||||
|
is number of the
|
||||||
|
.Tn VERSAbus
|
||||||
|
(or
|
||||||
|
.Tn VMEbus )
|
||||||
|
to which the device is attached,
|
||||||
|
.Ar controller
|
||||||
|
is the unit number of the controller on that buss,
|
||||||
|
.Ar unit
|
||||||
|
is the unit number of the disk or tape,
|
||||||
|
and
|
||||||
|
.Ar minor
|
||||||
|
is the disk partition or tape file number.
|
||||||
|
Leading adaptor or controller numbers default to 0.
|
||||||
|
Normal line editing characters can be used when typing the file specification.
|
||||||
|
The following list of supported devices may vary from installation to
|
||||||
|
installation:
|
||||||
|
.Pp
|
||||||
|
.Bd -unfilled -offset indent -compact
|
||||||
|
dk SMD or ESDI disks on VDDC or SMD-E
|
||||||
|
cy tape on Ciprico Tapemaster controller
|
||||||
|
.Ed
|
||||||
|
.Pp
|
||||||
|
For example,
|
||||||
|
to boot from a file system which starts at cylinder 0
|
||||||
|
of unit 0 of an
|
||||||
|
.Tn SMD-E
|
||||||
|
disk, type
|
||||||
|
.Ql dk(0,0)kernel
|
||||||
|
to the boot prompt;
|
||||||
|
.Ql dk(2,1,0)kernel
|
||||||
|
would specify drive 1 on
|
||||||
|
.Tn SMD-E
|
||||||
|
controller 2.
|
||||||
|
.Pp
|
||||||
|
In an emergency, the bootstrap methods described in the paper
|
||||||
|
.%T "Installing and Operating 4.3 BSD-tahoe UNIX on the Tahoe"
|
||||||
|
can be used
|
||||||
|
to boot from a distribution tape.
|
||||||
|
.Sh FILES
|
||||||
|
.Bl -tag -width /kernel -compact
|
||||||
|
.It Pa /kernel
|
||||||
|
system code
|
||||||
|
.It Pa /boot
|
||||||
|
system bootstrap
|
||||||
|
.El
|
||||||
|
.Sh SEE ALSO
|
||||||
|
.Xr halt 8 ,
|
||||||
|
.Xr reboot 8 ,
|
||||||
|
.Xr shutdown 8
|
||||||
|
.Sh BUGS
|
||||||
|
The disklabel format used by some versions of the console processor
|
||||||
|
is different than the format used by
|
||||||
|
.Tn UNIX
|
||||||
|
and the bootstrap.
|
||||||
|
.Sh HISTORY
|
|
@ -0,0 +1,322 @@
|
||||||
|
.\" Copyright (c) 1980, 1991, 1993
|
||||||
|
.\" The Regents of the University of California. All rights reserved.
|
||||||
|
.\"
|
||||||
|
.\" 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.
|
||||||
|
.\"
|
||||||
|
.\" @(#)boot_vax.8 8.2 (Berkeley) 4/19/94
|
||||||
|
.\"
|
||||||
|
.Dd April 19, 1994
|
||||||
|
.Dt BOOT 8 vax
|
||||||
|
.Os
|
||||||
|
.Sh NAME
|
||||||
|
.Nm boot
|
||||||
|
.Nd
|
||||||
|
system bootstrapping procedures
|
||||||
|
.Sh DESCRIPTION
|
||||||
|
.Sy Power fail and crash recovery.
|
||||||
|
Normally, the system will reboot itself at power-up or after crashes.
|
||||||
|
Provided the auto-restart is enabled on the machine front panel,
|
||||||
|
an automatic consistency check of the file systems will be performed,
|
||||||
|
and unless this fails, the system will resume multi-user operations.
|
||||||
|
.Pp
|
||||||
|
.Sy Cold starts.
|
||||||
|
These are processor-type dependent.
|
||||||
|
On an 11/780, there are two floppy files for each disk controller,
|
||||||
|
both of which cause boots from unit 0 of the root file system
|
||||||
|
of a controller located on mba0 or uba0.
|
||||||
|
One gives a single user shell, while the other invokes the multi-user
|
||||||
|
automatic reboot.
|
||||||
|
Thus these files are
|
||||||
|
.Tn HPS
|
||||||
|
and
|
||||||
|
.Tn HPM
|
||||||
|
for the single
|
||||||
|
and multi-user boot from
|
||||||
|
.Tn MASSBUS
|
||||||
|
RP06/RM03/RM05 disks,
|
||||||
|
.Tn UPS
|
||||||
|
and
|
||||||
|
.Tn UPM
|
||||||
|
for
|
||||||
|
.Tn UNIBUS
|
||||||
|
storage module controller and disks
|
||||||
|
such as the
|
||||||
|
.Tn EMULEX
|
||||||
|
SC-21
|
||||||
|
and
|
||||||
|
.Tn AMPEX
|
||||||
|
9300 pair,
|
||||||
|
.Tn RAS
|
||||||
|
and
|
||||||
|
.Tn RAM
|
||||||
|
to boot from
|
||||||
|
.Tn MSCP
|
||||||
|
controllers and disks such as the RA81,
|
||||||
|
or
|
||||||
|
.Tn HKS
|
||||||
|
and
|
||||||
|
.Tn HKM
|
||||||
|
for RK07 disks.
|
||||||
|
There is also a script for booting from the default device,
|
||||||
|
which is normally a copy of one of the standard multi-user boot scripts,
|
||||||
|
but which may be modified to perform other actions
|
||||||
|
or to boot from a different unit.
|
||||||
|
The situation on the 8600 is similar, with scripts loaded from the console RL02.
|
||||||
|
.Pp
|
||||||
|
Giving the command
|
||||||
|
.Pp
|
||||||
|
.Dl >>>BOOT HPM
|
||||||
|
.Pp
|
||||||
|
would boot the system from (e.g.) an RP06 and run the automatic consistency
|
||||||
|
check as described in
|
||||||
|
.Xr fsck 8 .
|
||||||
|
(Note that it may
|
||||||
|
be necessary to type control-P
|
||||||
|
and halt the processor
|
||||||
|
to gain the attention of the
|
||||||
|
.Tn LSI-11
|
||||||
|
before getting the >>> prompt.)
|
||||||
|
The command
|
||||||
|
.Pp
|
||||||
|
.Dl >>>BOOT ANY
|
||||||
|
.Pp
|
||||||
|
invokes a version of the boot program in a way which allows you to
|
||||||
|
specify any system as the system to be booted.
|
||||||
|
It reads from the console a device specification (see below) followed
|
||||||
|
immediately by a pathname.
|
||||||
|
.Pp
|
||||||
|
The scripts may be modified for local configuration if necessary.
|
||||||
|
The flags are placed in register 11 (as defined in
|
||||||
|
.Aq Pa sys/reboot.h ) .
|
||||||
|
The boot device is specified in register 10.
|
||||||
|
The encoding of this register is also defined in
|
||||||
|
.Aq Pa sys/reboot.h .
|
||||||
|
The current encoding has a historical basis, and is shown in the following
|
||||||
|
table:
|
||||||
|
.Pp
|
||||||
|
.Bd -unfilled -offset indent -compact
|
||||||
|
bits usage
|
||||||
|
0-7 boot device type (the device major number)
|
||||||
|
8-15 disk partition
|
||||||
|
16-19 drive unit
|
||||||
|
20-23 controller number
|
||||||
|
24-27 adaptor number (UNIBUS or MASSBUS as appropriate)
|
||||||
|
.Ed
|
||||||
|
.Pp
|
||||||
|
The adaptor number corresponds to the normal configuration on the 11/750,
|
||||||
|
and to the order in which adaptors are found on the 11/780 and 8600
|
||||||
|
(generally the same as the numbers used by
|
||||||
|
.Tn UNIX ) .
|
||||||
|
.Pp
|
||||||
|
On an 11/750, the reset button will boot from the device
|
||||||
|
selected by the front panel boot device switch. In systems
|
||||||
|
with RK07's, position B normally selects the RK07 for boot.
|
||||||
|
This will boot multi-user. To boot from RK07 with boot flags you
|
||||||
|
may specify
|
||||||
|
.Pp
|
||||||
|
.Bd -unfilled -offset indent -compact
|
||||||
|
.Li \&>>>B/ Ns Fl n No DMA0
|
||||||
|
.Ed
|
||||||
|
.Pp
|
||||||
|
where, giving a
|
||||||
|
.Ar n
|
||||||
|
of 1 causes the boot program
|
||||||
|
to ask for the name of the system to be bootstrapped,
|
||||||
|
giving a
|
||||||
|
.Ar n
|
||||||
|
of 2 causes the boot program to come up single
|
||||||
|
user, and a
|
||||||
|
.Ar n
|
||||||
|
of 3 causes both of these actions to occur.
|
||||||
|
The ``DM'' specifies RK07, the ``A'' represents the adaptor number
|
||||||
|
.Pf ( Tn UNIBUS
|
||||||
|
or
|
||||||
|
.Tn MASSBUS ) ,
|
||||||
|
and the ``0'' is the drive unit number.
|
||||||
|
Other disk types which may be used are DB
|
||||||
|
.Pq Tn MASSBUS ,
|
||||||
|
DD (TU58),
|
||||||
|
and DU
|
||||||
|
.Pf ( Tn UDA-50/RA
|
||||||
|
disk).
|
||||||
|
A non-zero disk partition can be used by adding (partition times 1000 hex)
|
||||||
|
to
|
||||||
|
.Ar n .
|
||||||
|
.Pp
|
||||||
|
The boot procedure on the Micro
|
||||||
|
.Tn VAX
|
||||||
|
II
|
||||||
|
is similar.
|
||||||
|
A switch on the back panel sets the power-up action
|
||||||
|
to autoboot or to halt.
|
||||||
|
When halted, the processor may be booted using the same syntax
|
||||||
|
as on the 11/750.
|
||||||
|
.Pp
|
||||||
|
The 11/750 boot procedure uses the boot roms to load block 0 off of
|
||||||
|
the specified device. The /usr/mdec directory contains a number
|
||||||
|
of bootstrap programs for the various disks which should be placed
|
||||||
|
in a new pack by
|
||||||
|
.Xr disklabel 8 .
|
||||||
|
Similarly, the Micro
|
||||||
|
.Tn VAX
|
||||||
|
II boot procedure loads a boot parameter block
|
||||||
|
from block 0 of the disk.
|
||||||
|
The
|
||||||
|
.Xr rdboot
|
||||||
|
.Dq bootstrap
|
||||||
|
contains the correct parameters for an
|
||||||
|
.Tn MSCP
|
||||||
|
disk such
|
||||||
|
as the RD53.
|
||||||
|
.Pp
|
||||||
|
On any processor, the
|
||||||
|
.Em boot
|
||||||
|
program
|
||||||
|
finds the corresponding file on the given device
|
||||||
|
.Pf ( Pa kernel
|
||||||
|
by default), loads that file
|
||||||
|
into memory location zero, and starts the program at the entry address
|
||||||
|
specified in the program header (after clearing off the high bit
|
||||||
|
of the specified entry address).
|
||||||
|
.Pp
|
||||||
|
The file specifications used with
|
||||||
|
.Dq BOOT ANY
|
||||||
|
or
|
||||||
|
.Dq \&B/3
|
||||||
|
are of the form:
|
||||||
|
.Pp
|
||||||
|
.Dl device(adaptor,controller,unit,minor)
|
||||||
|
.Pp
|
||||||
|
where
|
||||||
|
.Ar device
|
||||||
|
is the type of the device to be searched,
|
||||||
|
.Ar adaptor
|
||||||
|
is the
|
||||||
|
.Tn UNIBUS
|
||||||
|
or
|
||||||
|
.Tn MASSBUS
|
||||||
|
number of the adaptor to which the device is attached,
|
||||||
|
.Ar controller
|
||||||
|
is the unit number of the controller or
|
||||||
|
.Tn MASSBUS
|
||||||
|
tape formatter on that adaptor,
|
||||||
|
.Ar unit
|
||||||
|
is the unit number of the disk or transport slave unit of the tape,
|
||||||
|
and
|
||||||
|
.Ar minor
|
||||||
|
is the disk partition or tape file number.
|
||||||
|
Leading adaptor or controller numbers default to 0.
|
||||||
|
Normal line editing characters can be used when typing the file specification.
|
||||||
|
The following list of supported devices may vary from installation to
|
||||||
|
installation:
|
||||||
|
.Pp
|
||||||
|
.Bd -unfilled -offset indent -compact
|
||||||
|
hp MASSBUS disk drive
|
||||||
|
up UNIBUS storage module drive
|
||||||
|
ht TE16,TU45,TU77 on MASSBUS
|
||||||
|
kra storage module on a KDB50
|
||||||
|
mt TU78 on MASSBUS
|
||||||
|
hk RK07 on UNIBUS
|
||||||
|
ra storage module on a MSCP-compatible UNIBUS controller
|
||||||
|
rb storage module on a 730 IDC
|
||||||
|
rl RL02 on UNIBUS
|
||||||
|
tm TM11 emulation tape drives on UNIBUS
|
||||||
|
tms TMSCP-compatible tape
|
||||||
|
ts TS11 on UNIBUS
|
||||||
|
ut UNIBUS TU45 emulator
|
||||||
|
.Ed
|
||||||
|
.Pp
|
||||||
|
For example,
|
||||||
|
to boot from a file system which starts at cylinder 0
|
||||||
|
of unit 0 of a
|
||||||
|
.Tn MASSBUS
|
||||||
|
disk, type
|
||||||
|
.Ql hp(0,0)kernel
|
||||||
|
to the boot prompt;
|
||||||
|
.Ql hp(2,0,1,0)kernel
|
||||||
|
would specify drive 1 on
|
||||||
|
.Tn MASSBUS
|
||||||
|
adaptor 2;
|
||||||
|
.Ql up(0,0)kernel
|
||||||
|
would specify a
|
||||||
|
.Tn UNIBUS
|
||||||
|
drive,
|
||||||
|
.Ql hk(0,0)kernel
|
||||||
|
would specify
|
||||||
|
an RK07 disk drive,
|
||||||
|
.Ql ra(1,0,0,0)kernel
|
||||||
|
would specify a
|
||||||
|
.Tn UDA50
|
||||||
|
disk drive on a second
|
||||||
|
.Tn UNIBUS ,
|
||||||
|
and
|
||||||
|
.Ql rb(0,0)kernel
|
||||||
|
would specify a
|
||||||
|
disk on a 730
|
||||||
|
.Tn IDC .
|
||||||
|
For tapes, the minor device number gives a file offset;
|
||||||
|
.Ql mt(1,2,3,4)
|
||||||
|
would specify the fifth file on slave 3 of the formatter
|
||||||
|
at
|
||||||
|
.Ql drive
|
||||||
|
2 on mba 1.
|
||||||
|
.Pp
|
||||||
|
On an 11/750 with patchable control store,
|
||||||
|
microcode patches will be installed by
|
||||||
|
.Em boot
|
||||||
|
if the file
|
||||||
|
.Pa psc750.bin
|
||||||
|
exists in the root of the filesystem from which the system is booted.
|
||||||
|
.Pp
|
||||||
|
In an emergency, the bootstrap methods described in the paper
|
||||||
|
.%T Installing and Operating 4.3bsd
|
||||||
|
can be used to boot from a distribution tape.
|
||||||
|
.Sh FILES
|
||||||
|
.Bl -tag -width /usr/mdec/xxboot -compact
|
||||||
|
.It Pa /kernel
|
||||||
|
system code
|
||||||
|
.It Pa /boot
|
||||||
|
system bootstrap
|
||||||
|
.It Pa /usr/mdec/xxboot
|
||||||
|
sector-0 boot block for 750, xx is disk type
|
||||||
|
.It Pa /usr/mdec/bootxx
|
||||||
|
second-stage boot for 750, xx is disk type
|
||||||
|
.It Pa /pcs750.bin
|
||||||
|
microcode patch file on 750
|
||||||
|
.El
|
||||||
|
.Sh SEE ALSO
|
||||||
|
.Xr arff 8 ,
|
||||||
|
.Xr halt 8 ,
|
||||||
|
.Xr reboot 8 ,
|
||||||
|
.Xr shutdown 8
|
||||||
|
.Sh HISTORY
|
||||||
|
The
|
||||||
|
.Nm
|
||||||
|
command appeared in
|
||||||
|
.Bx 4.0 .
|
|
@ -0,0 +1,97 @@
|
||||||
|
.\" Copyright (c) 1990, 1991, 1993
|
||||||
|
.\" The Regents of the University of California. All rights reserved.
|
||||||
|
.\"
|
||||||
|
.\" 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.
|
||||||
|
.\"
|
||||||
|
.\" @(#)reboot.8 8.1 (Berkeley) 6/9/93
|
||||||
|
.\"
|
||||||
|
.TH REBOOT 8 "4 October 1997" GNO "System Administration"
|
||||||
|
.SH NAME
|
||||||
|
.BR reboot ,
|
||||||
|
.BR halt
|
||||||
|
\- stopping and restarting the system
|
||||||
|
.SH SYNOPSIS
|
||||||
|
.BR "halt -nq"
|
||||||
|
.br
|
||||||
|
.BR "reboot -nq"
|
||||||
|
.br
|
||||||
|
.BR "fasthalt -nq"
|
||||||
|
.br
|
||||||
|
.BR "fastboot -nq"
|
||||||
|
.SH DESCRIPTION
|
||||||
|
The
|
||||||
|
.BR halt
|
||||||
|
and
|
||||||
|
.BR reboot
|
||||||
|
utilities flush the file system cache to disk, send all running processes
|
||||||
|
a SIGTERM (and subsequently a SIGKILL) and, respectively, halt or restart
|
||||||
|
the system.
|
||||||
|
The action is logged, including entering a shutdown record into the login
|
||||||
|
accounting file.
|
||||||
|
.LP
|
||||||
|
The options are as follows:
|
||||||
|
.RS
|
||||||
|
.IP \fBn\fR
|
||||||
|
If the
|
||||||
|
.BR n
|
||||||
|
option is specified,
|
||||||
|
the file system cache is not flushed.
|
||||||
|
This option should probably not be used.
|
||||||
|
.IP \fBq\fR
|
||||||
|
If the
|
||||||
|
.B q
|
||||||
|
option is specified,
|
||||||
|
the system is halted or restarted quickly and ungracefully, and only
|
||||||
|
the flushing of the file system cache is performed.
|
||||||
|
This option should probably not be used.
|
||||||
|
.RE
|
||||||
|
.LP
|
||||||
|
The
|
||||||
|
.BR fasthalt
|
||||||
|
and
|
||||||
|
.BR fastboot
|
||||||
|
utilities are nothing more than aliases for the
|
||||||
|
.BR halt
|
||||||
|
and
|
||||||
|
.BR reboot
|
||||||
|
utilities.
|
||||||
|
.LP
|
||||||
|
Normally, the
|
||||||
|
.BR shutdown (8)
|
||||||
|
utility is used when the system needs to be halted or restarted, giving
|
||||||
|
users advance warning of their impending doom.
|
||||||
|
.SH SEE ALSO
|
||||||
|
.BR utmp (5),
|
||||||
|
.BR boot (8),
|
||||||
|
.BR shutdown (8),
|
||||||
|
.BR sync (8)
|
||||||
|
.SH HISTORY
|
||||||
|
A
|
||||||
|
.BR reboot
|
||||||
|
command appeared in Version 6 AT&T UNIX.
|
|
@ -0,0 +1,204 @@
|
||||||
|
/*
|
||||||
|
* Copyright (c) 1980, 1986, 1993
|
||||||
|
* The Regents of the University of California. All rights reserved.
|
||||||
|
*
|
||||||
|
* 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.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef lint
|
||||||
|
static char copyright[] =
|
||||||
|
"@(#) Copyright (c) 1980, 1986, 1993\n\
|
||||||
|
The Regents of the University of California. All rights reserved.\n";
|
||||||
|
#endif /* not lint */
|
||||||
|
|
||||||
|
#ifndef lint
|
||||||
|
static char sccsid[] = "@(#)reboot.c 8.1 (Berkeley) 6/5/93";
|
||||||
|
#endif /* not lint */
|
||||||
|
|
||||||
|
#include <sys/reboot.h>
|
||||||
|
#include <signal.h>
|
||||||
|
#include <pwd.h>
|
||||||
|
#include <errno.h>
|
||||||
|
#include <syslog.h>
|
||||||
|
#include <unistd.h>
|
||||||
|
#include <stdio.h>
|
||||||
|
#include <stdlib.h>
|
||||||
|
#include <string.h>
|
||||||
|
|
||||||
|
void err __P((const char *fmt, ...));
|
||||||
|
void usage __P((void));
|
||||||
|
|
||||||
|
int dohalt;
|
||||||
|
|
||||||
|
int
|
||||||
|
main(argc, argv)
|
||||||
|
int argc;
|
||||||
|
char *argv[];
|
||||||
|
{
|
||||||
|
register int i;
|
||||||
|
struct passwd *pw;
|
||||||
|
int ch, howto, lflag, nflag, qflag, sverrno;
|
||||||
|
char *p, *user;
|
||||||
|
|
||||||
|
if (strstr((p = rindex(*argv, '/')) ? p + 1 : *argv, "halt")) {
|
||||||
|
dohalt = 1;
|
||||||
|
howto = RB_HALT;
|
||||||
|
} else
|
||||||
|
howto = 0;
|
||||||
|
lflag = nflag = qflag = 0;
|
||||||
|
while ((ch = getopt(argc, argv, "lnq")) != EOF)
|
||||||
|
switch(ch) {
|
||||||
|
case 'l': /* Undocumented; used by shutdown. */
|
||||||
|
lflag = 1;
|
||||||
|
break;
|
||||||
|
case 'n':
|
||||||
|
nflag = 1;
|
||||||
|
howto |= RB_NOSYNC;
|
||||||
|
break;
|
||||||
|
case 'q':
|
||||||
|
qflag = 1;
|
||||||
|
break;
|
||||||
|
case '?':
|
||||||
|
default:
|
||||||
|
usage();
|
||||||
|
}
|
||||||
|
argc -= optind;
|
||||||
|
argv += optind;
|
||||||
|
|
||||||
|
if (geteuid())
|
||||||
|
err("%s", strerror(EPERM));
|
||||||
|
|
||||||
|
if (qflag) {
|
||||||
|
reboot(howto);
|
||||||
|
err("%s", strerror(errno));
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Log the reboot. */
|
||||||
|
if (!lflag) {
|
||||||
|
if ((user = getlogin()) == NULL)
|
||||||
|
user = (pw = getpwuid(getuid())) ?
|
||||||
|
pw->pw_name : "???";
|
||||||
|
if (dohalt) {
|
||||||
|
openlog("halt", 0, LOG_AUTH | LOG_CONS);
|
||||||
|
syslog(LOG_CRIT, "halted by %s", user);
|
||||||
|
} else {
|
||||||
|
openlog("reboot", 0, LOG_AUTH | LOG_CONS);
|
||||||
|
syslog(LOG_CRIT, "rebooted by %s", user);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
logwtmp("~", "shutdown", "");
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Do a sync early on, so disks start transfers while we're off
|
||||||
|
* killing processes. Don't worry about writes done before the
|
||||||
|
* processes die, the reboot system call syncs the disks.
|
||||||
|
*/
|
||||||
|
if (!nflag)
|
||||||
|
sync();
|
||||||
|
|
||||||
|
/* Just stop init -- if we fail, we'll restart it. */
|
||||||
|
if (kill(1, SIGTSTP) == -1)
|
||||||
|
err("SIGTSTP init: %s", strerror(errno));
|
||||||
|
|
||||||
|
/* Ignore the SIGHUP we get when our parent shell dies. */
|
||||||
|
(void)signal(SIGHUP, SIG_IGN);
|
||||||
|
|
||||||
|
/* Send a SIGTERM first, a chance to save the buffers. */
|
||||||
|
if (kill(-1, SIGTERM) == -1)
|
||||||
|
err("SIGTERM processes: %s", strerror(errno));
|
||||||
|
|
||||||
|
/*
|
||||||
|
* After the processes receive the signal, start the rest of the
|
||||||
|
* buffers on their way. Wait 5 seconds between the SIGTERM and
|
||||||
|
* the SIGKILL to give everybody a chance.
|
||||||
|
*/
|
||||||
|
sleep(2);
|
||||||
|
if (!nflag)
|
||||||
|
sync();
|
||||||
|
sleep(3);
|
||||||
|
|
||||||
|
for (i = 1;; ++i) {
|
||||||
|
if (kill(-1, SIGKILL) == -1) {
|
||||||
|
if (errno == ESRCH)
|
||||||
|
break;
|
||||||
|
goto restart;
|
||||||
|
}
|
||||||
|
if (i > 5) {
|
||||||
|
(void)fprintf(stderr,
|
||||||
|
"WARNING: some process(es) wouldn't die\n");
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
(void)sleep(2 * i);
|
||||||
|
}
|
||||||
|
|
||||||
|
reboot(howto);
|
||||||
|
/* FALLTHROUGH */
|
||||||
|
|
||||||
|
restart:
|
||||||
|
sverrno = errno;
|
||||||
|
err("%s%s", kill(1, SIGHUP) == -1 ? "(can't restart init): " : "",
|
||||||
|
strerror(sverrno));
|
||||||
|
/* NOTREACHED */
|
||||||
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
usage()
|
||||||
|
{
|
||||||
|
(void)fprintf(stderr, "usage: %s [-nq]\n", dohalt ? "halt" : "reboot");
|
||||||
|
exit(1);
|
||||||
|
}
|
||||||
|
|
||||||
|
#if __STDC__
|
||||||
|
#include <stdarg.h>
|
||||||
|
#else
|
||||||
|
#include <varargs.h>
|
||||||
|
#endif
|
||||||
|
|
||||||
|
void
|
||||||
|
#if __STDC__
|
||||||
|
err(const char *fmt, ...)
|
||||||
|
#else
|
||||||
|
err(fmt, va_alist)
|
||||||
|
char *fmt;
|
||||||
|
va_dcl
|
||||||
|
#endif
|
||||||
|
{
|
||||||
|
va_list ap;
|
||||||
|
#if __STDC__
|
||||||
|
va_start(ap, fmt);
|
||||||
|
#else
|
||||||
|
va_start(ap);
|
||||||
|
#endif
|
||||||
|
(void)fprintf(stderr, "%s: ", dohalt ? "halt" : "reboot");
|
||||||
|
(void)vfprintf(stderr, fmt, ap);
|
||||||
|
va_end(ap);
|
||||||
|
(void)fprintf(stderr, "\n");
|
||||||
|
exit(1);
|
||||||
|
/* NOTREACHED */
|
||||||
|
}
|
|
@ -0,0 +1,9 @@
|
||||||
|
# @(#)Makefile 8.1 (Berkeley) 6/5/93
|
||||||
|
|
||||||
|
PROG= shutdown
|
||||||
|
MAN8= shutdown.8
|
||||||
|
BINOWN= root
|
||||||
|
BINGRP= operator
|
||||||
|
BINMODE=4550
|
||||||
|
|
||||||
|
.include <bsd.prog.mk>
|
|
@ -0,0 +1,41 @@
|
||||||
|
/*
|
||||||
|
* Copyright (c) 1989, 1993
|
||||||
|
* The Regents of the University of California. All rights reserved.
|
||||||
|
*
|
||||||
|
* 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.
|
||||||
|
*
|
||||||
|
* @(#)pathnames.h 8.1 (Berkeley) 6/5/93
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include <paths.h>
|
||||||
|
|
||||||
|
#define _PATH_FASTBOOT "/fastboot"
|
||||||
|
#define _PATH_HALT "/sbin/halt"
|
||||||
|
#define _PATH_REBOOT "/sbin/reboot"
|
||||||
|
#define _PATH_WALL "/usr/bin/wall"
|
|
@ -0,0 +1,148 @@
|
||||||
|
.\" Copyright (c) 1988, 1991, 1993
|
||||||
|
.\" The Regents of the University of California. All rights reserved.
|
||||||
|
.\"
|
||||||
|
.\" 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.
|
||||||
|
.\"
|
||||||
|
.\" @(#)shutdown.8 8.1 (Berkeley) 6/5/93
|
||||||
|
.\"
|
||||||
|
.TH SHUTDOWN 8 "4 October 1997" GNO "System Administration"
|
||||||
|
.SH NAME
|
||||||
|
.BR shutdown
|
||||||
|
\- close down the system at a given time
|
||||||
|
.SH SYNOPSIS
|
||||||
|
.BR shutdown
|
||||||
|
[
|
||||||
|
.B -
|
||||||
|
] [
|
||||||
|
.BR -hkrn
|
||||||
|
]
|
||||||
|
.I time
|
||||||
|
.I "warning-message ..."
|
||||||
|
.SH DESCRIPTION
|
||||||
|
.BR Shutdown
|
||||||
|
provides an automated shutdown procedure for super-users
|
||||||
|
to nicely notify users when the system is shutting down,
|
||||||
|
saving them from system administrators, hackers, and gurus, who
|
||||||
|
would otherwise not bother with such niceties.
|
||||||
|
.LP
|
||||||
|
Available friendlinesses:
|
||||||
|
.RS
|
||||||
|
.IP \fBh\fR
|
||||||
|
The system is halted at the specified
|
||||||
|
.BR time
|
||||||
|
when
|
||||||
|
.BR shutdown
|
||||||
|
execs
|
||||||
|
.BR halt (8).
|
||||||
|
.IP \fBk\fR
|
||||||
|
Kick every body off.
|
||||||
|
The
|
||||||
|
.B k
|
||||||
|
option
|
||||||
|
does not actually halt the system, but leaves the
|
||||||
|
system multi-user with logins disabled (for all but super-user).
|
||||||
|
.IP \fBn\fR
|
||||||
|
Prevent the normal
|
||||||
|
.BR sync (2)
|
||||||
|
before stopping.
|
||||||
|
.IP \fBr\fR
|
||||||
|
.BR Shutdown
|
||||||
|
execs
|
||||||
|
.BR reboot (8)
|
||||||
|
at the specified
|
||||||
|
.BR time .
|
||||||
|
.IP \fItime\fR
|
||||||
|
.BR Time
|
||||||
|
is the time at which
|
||||||
|
.BR shutdown
|
||||||
|
will bring the system down and
|
||||||
|
may be the word
|
||||||
|
.BR now
|
||||||
|
(indicating an immediate shutdown) or
|
||||||
|
specify a future time in one of two formats:
|
||||||
|
.BR +number ,
|
||||||
|
or
|
||||||
|
.BR yymmddhhmm ,
|
||||||
|
where the year, month, and day may be defaulted
|
||||||
|
to the current system values. The first form brings the system down in
|
||||||
|
.BR number
|
||||||
|
minutes and the second at the absolute time specified.
|
||||||
|
.IP \fIwarning-message\fR
|
||||||
|
Any other arguments comprise the warning message that is broadcast
|
||||||
|
to users currently logged into the system.
|
||||||
|
.IP \fB-\fR
|
||||||
|
If
|
||||||
|
.BR -
|
||||||
|
is supplied as an option, the warning message is read from the standard
|
||||||
|
input.
|
||||||
|
.RE
|
||||||
|
.LP
|
||||||
|
At intervals, becoming more frequent as apocalypse approaches
|
||||||
|
and starting at ten hours before shutdown, warning messages are displayed
|
||||||
|
on the terminals of all users logged in. Five minutes before
|
||||||
|
shutdown, or immediately if shutdown is in less than 5 minutes,
|
||||||
|
logins are disabled by creating
|
||||||
|
.B /etc/nologin
|
||||||
|
and copying the
|
||||||
|
warning message there. If this file exists when a user attempts to
|
||||||
|
log in,
|
||||||
|
.BR login (1)
|
||||||
|
prints its contents and exits. The file is
|
||||||
|
removed just before
|
||||||
|
.BR shutdown
|
||||||
|
exits.
|
||||||
|
.LP
|
||||||
|
At shutdown time a message is written in the system log, containing the
|
||||||
|
time of shutdown, who initiated the shutdown and the reason.
|
||||||
|
A terminate
|
||||||
|
signal is then sent to
|
||||||
|
.BR init
|
||||||
|
to bring the system down to single-user state (depending on above
|
||||||
|
options).
|
||||||
|
The time of the shutdown and the warning message
|
||||||
|
are placed in
|
||||||
|
.B /etc/nologin
|
||||||
|
and should be used to
|
||||||
|
inform the users about when the system will be back up
|
||||||
|
and why it is going down (or anything else).
|
||||||
|
.SH FILES
|
||||||
|
.IP \fB/etc/nologin\fR
|
||||||
|
tells login not to let anyone log in
|
||||||
|
.SH SEE ALSO
|
||||||
|
.BR login (1),
|
||||||
|
.BR wall (1),
|
||||||
|
.BR halt (8),
|
||||||
|
.BR reboot (8)
|
||||||
|
.SH BACKWARD COMPATIBILITY
|
||||||
|
The hours and minutes in the second time format may be separated by
|
||||||
|
a colon (``:'') for backward compatibility.
|
||||||
|
.SH HISTORY
|
||||||
|
The
|
||||||
|
.BR shutdown
|
||||||
|
command appeared in 4.0BSD.
|
|
@ -0,0 +1,468 @@
|
||||||
|
/*
|
||||||
|
* Copyright (c) 1988, 1990, 1993
|
||||||
|
* The Regents of the University of California. All rights reserved.
|
||||||
|
*
|
||||||
|
* 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.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef lint
|
||||||
|
static char copyright[] =
|
||||||
|
"@(#) Copyright (c) 1988, 1990, 1993\n\
|
||||||
|
The Regents of the University of California. All rights reserved.\n";
|
||||||
|
#endif /* not lint */
|
||||||
|
|
||||||
|
#ifndef lint
|
||||||
|
static char sccsid[] = "@(#)shutdown.c 8.2 (Berkeley) 2/16/94";
|
||||||
|
#endif /* not lint */
|
||||||
|
|
||||||
|
#include <sys/param.h>
|
||||||
|
#include <sys/time.h>
|
||||||
|
#include <sys/resource.h>
|
||||||
|
#include <sys/syslog.h>
|
||||||
|
|
||||||
|
#include <ctype.h>
|
||||||
|
#include <fcntl.h>
|
||||||
|
#include <pwd.h>
|
||||||
|
#include <setjmp.h>
|
||||||
|
#include <signal.h>
|
||||||
|
#include <stdio.h>
|
||||||
|
#include <stdlib.h>
|
||||||
|
#include <string.h>
|
||||||
|
#include <unistd.h>
|
||||||
|
|
||||||
|
#include "pathnames.h"
|
||||||
|
|
||||||
|
#ifdef DEBUG
|
||||||
|
#undef _PATH_NOLOGIN
|
||||||
|
#define _PATH_NOLOGIN "./nologin"
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#define H *60*60
|
||||||
|
#define M *60
|
||||||
|
#define S *1
|
||||||
|
#define NOLOG_TIME 5*60
|
||||||
|
struct interval {
|
||||||
|
int timeleft, timetowait;
|
||||||
|
} tlist[] = {
|
||||||
|
10 H, 5 H, 5 H, 3 H, 2 H, 1 H, 1 H, 30 M,
|
||||||
|
30 M, 10 M, 20 M, 10 M, 10 M, 5 M, 5 M, 3 M,
|
||||||
|
2 M, 1 M, 1 M, 30 S, 30 S, 30 S,
|
||||||
|
0, 0,
|
||||||
|
};
|
||||||
|
#undef H
|
||||||
|
#undef M
|
||||||
|
#undef S
|
||||||
|
|
||||||
|
static time_t offset, shuttime;
|
||||||
|
static int dohalt, doreboot, killflg, mbuflen;
|
||||||
|
static char *nosync, *whom, mbuf[BUFSIZ];
|
||||||
|
|
||||||
|
void badtime __P((void));
|
||||||
|
void die_you_gravy_sucking_pig_dog __P((void));
|
||||||
|
void finish __P((int));
|
||||||
|
void getoffset __P((char *));
|
||||||
|
void loop __P((void));
|
||||||
|
void nolog __P((void));
|
||||||
|
void timeout __P((int));
|
||||||
|
void timewarn __P((int));
|
||||||
|
void usage __P((void));
|
||||||
|
|
||||||
|
int
|
||||||
|
main(argc, argv)
|
||||||
|
int argc;
|
||||||
|
char *argv[];
|
||||||
|
{
|
||||||
|
extern int optind;
|
||||||
|
register char *p, *endp;
|
||||||
|
struct passwd *pw;
|
||||||
|
int arglen, ch, len, readstdin;
|
||||||
|
|
||||||
|
#ifndef DEBUG
|
||||||
|
if (geteuid()) {
|
||||||
|
(void)fprintf(stderr, "shutdown: NOT super-user\n");
|
||||||
|
exit(1);
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
nosync = NULL;
|
||||||
|
readstdin = 0;
|
||||||
|
while ((ch = getopt(argc, argv, "-hknr")) != EOF)
|
||||||
|
switch (ch) {
|
||||||
|
case '-':
|
||||||
|
readstdin = 1;
|
||||||
|
break;
|
||||||
|
case 'h':
|
||||||
|
dohalt = 1;
|
||||||
|
break;
|
||||||
|
case 'k':
|
||||||
|
killflg = 1;
|
||||||
|
break;
|
||||||
|
case 'n':
|
||||||
|
nosync = "-n";
|
||||||
|
break;
|
||||||
|
case 'r':
|
||||||
|
doreboot = 1;
|
||||||
|
break;
|
||||||
|
case '?':
|
||||||
|
default:
|
||||||
|
usage();
|
||||||
|
}
|
||||||
|
argc -= optind;
|
||||||
|
argv += optind;
|
||||||
|
|
||||||
|
if (argc < 1)
|
||||||
|
usage();
|
||||||
|
|
||||||
|
if (nosync) {
|
||||||
|
(void)fprintf(stderr,
|
||||||
|
"shutdown: incompatible switches -f and -n.\n");
|
||||||
|
usage();
|
||||||
|
}
|
||||||
|
if (doreboot && dohalt) {
|
||||||
|
(void)fprintf(stderr,
|
||||||
|
"shutdown: incompatible switches -h and -r.\n");
|
||||||
|
usage();
|
||||||
|
}
|
||||||
|
getoffset(*argv++);
|
||||||
|
|
||||||
|
if (*argv) {
|
||||||
|
for (p = mbuf, len = sizeof(mbuf); *argv; ++argv) {
|
||||||
|
arglen = strlen(*argv);
|
||||||
|
if ((len -= arglen) <= 2)
|
||||||
|
break;
|
||||||
|
if (p != mbuf)
|
||||||
|
*p++ = ' ';
|
||||||
|
bcopy(*argv, p, arglen);
|
||||||
|
p += arglen;
|
||||||
|
}
|
||||||
|
*p = '\n';
|
||||||
|
*++p = '\0';
|
||||||
|
}
|
||||||
|
|
||||||
|
if (readstdin) {
|
||||||
|
p = mbuf;
|
||||||
|
endp = mbuf + sizeof(mbuf) - 2;
|
||||||
|
for (;;) {
|
||||||
|
if (!fgets(p, endp - p + 1, stdin))
|
||||||
|
break;
|
||||||
|
for (; *p && p < endp; ++p);
|
||||||
|
if (p == endp) {
|
||||||
|
*p = '\n';
|
||||||
|
*++p = '\0';
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
mbuflen = strlen(mbuf);
|
||||||
|
|
||||||
|
if (offset)
|
||||||
|
(void)printf("Shutdown at %.24s.\n", ctime(&shuttime));
|
||||||
|
else
|
||||||
|
(void)printf("Shutdown NOW!\n");
|
||||||
|
|
||||||
|
if (!(whom = getlogin()))
|
||||||
|
whom = (pw = getpwuid(getuid())) ? pw->pw_name : "???";
|
||||||
|
|
||||||
|
#ifdef DEBUG
|
||||||
|
(void)putc('\n', stdout);
|
||||||
|
#else
|
||||||
|
(void)setpriority(PRIO_PROCESS, 0, PRIO_MIN);
|
||||||
|
{
|
||||||
|
int forkpid;
|
||||||
|
|
||||||
|
forkpid = fork();
|
||||||
|
if (forkpid == -1) {
|
||||||
|
perror("shutdown: fork");
|
||||||
|
exit(1);
|
||||||
|
}
|
||||||
|
if (forkpid) {
|
||||||
|
(void)printf("shutdown: [pid %d]\n", forkpid);
|
||||||
|
exit(0);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
openlog("shutdown", LOG_CONS, LOG_AUTH);
|
||||||
|
loop();
|
||||||
|
/* NOTREACHED */
|
||||||
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
loop()
|
||||||
|
{
|
||||||
|
struct interval *tp;
|
||||||
|
u_int sltime;
|
||||||
|
int logged;
|
||||||
|
|
||||||
|
if (offset <= NOLOG_TIME) {
|
||||||
|
logged = 1;
|
||||||
|
nolog();
|
||||||
|
}
|
||||||
|
else
|
||||||
|
logged = 0;
|
||||||
|
tp = tlist;
|
||||||
|
if (tp->timeleft < offset)
|
||||||
|
(void)sleep((u_int)(offset - tp->timeleft));
|
||||||
|
else {
|
||||||
|
while (offset < tp->timeleft)
|
||||||
|
++tp;
|
||||||
|
/*
|
||||||
|
* Warn now, if going to sleep more than a fifth of
|
||||||
|
* the next wait time.
|
||||||
|
*/
|
||||||
|
if (sltime = offset - tp->timeleft) {
|
||||||
|
if (sltime > tp->timetowait / 5)
|
||||||
|
timewarn(offset);
|
||||||
|
(void)sleep(sltime);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
for (;; ++tp) {
|
||||||
|
timewarn(tp->timeleft);
|
||||||
|
if (!logged && tp->timeleft <= NOLOG_TIME) {
|
||||||
|
logged = 1;
|
||||||
|
nolog();
|
||||||
|
}
|
||||||
|
(void)sleep((u_int)tp->timetowait);
|
||||||
|
if (!tp->timeleft)
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
die_you_gravy_sucking_pig_dog();
|
||||||
|
}
|
||||||
|
|
||||||
|
static jmp_buf alarmbuf;
|
||||||
|
|
||||||
|
void
|
||||||
|
timewarn(timeleft)
|
||||||
|
int timeleft;
|
||||||
|
{
|
||||||
|
static int first;
|
||||||
|
static char hostname[MAXHOSTNAMELEN + 1];
|
||||||
|
FILE *pf;
|
||||||
|
char wcmd[MAXPATHLEN + 4];
|
||||||
|
|
||||||
|
if (!first++)
|
||||||
|
(void)gethostname(hostname, sizeof(hostname));
|
||||||
|
|
||||||
|
/* undoc -n option to wall suppresses normal wall banner */
|
||||||
|
(void)snprintf(wcmd, sizeof(wcmd), "%s -n", _PATH_WALL);
|
||||||
|
if (!(pf = popen(wcmd, "w"))) {
|
||||||
|
syslog(LOG_ERR, "shutdown: can't find %s: %m", _PATH_WALL);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
(void)fprintf(pf,
|
||||||
|
"\007*** %sSystem shutdown message from %s@%s ***\007\n",
|
||||||
|
timeleft ? "": "FINAL ", whom, hostname);
|
||||||
|
|
||||||
|
if (timeleft > 10*60)
|
||||||
|
(void)fprintf(pf, "System going down at %5.5s\n\n",
|
||||||
|
ctime(&shuttime) + 11);
|
||||||
|
else if (timeleft > 59)
|
||||||
|
(void)fprintf(pf, "System going down in %d minute%s\n\n",
|
||||||
|
timeleft / 60, (timeleft > 60) ? "s" : "");
|
||||||
|
else if (timeleft)
|
||||||
|
(void)fprintf(pf, "System going down in 30 seconds\n\n");
|
||||||
|
else
|
||||||
|
(void)fprintf(pf, "System going down IMMEDIATELY\n\n");
|
||||||
|
|
||||||
|
if (mbuflen)
|
||||||
|
(void)fwrite(mbuf, sizeof(*mbuf), mbuflen, pf);
|
||||||
|
|
||||||
|
/*
|
||||||
|
* play some games, just in case wall doesn't come back
|
||||||
|
* probably unecessary, given that wall is careful.
|
||||||
|
*/
|
||||||
|
if (!setjmp(alarmbuf)) {
|
||||||
|
(void)signal(SIGALRM, timeout);
|
||||||
|
(void)alarm((u_int)30);
|
||||||
|
(void)pclose(pf);
|
||||||
|
(void)alarm((u_int)0);
|
||||||
|
(void)signal(SIGALRM, SIG_DFL);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
timeout(signo)
|
||||||
|
int signo;
|
||||||
|
{
|
||||||
|
longjmp(alarmbuf, 1);
|
||||||
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
die_you_gravy_sucking_pig_dog()
|
||||||
|
{
|
||||||
|
|
||||||
|
syslog(LOG_NOTICE, "%s by %s: %s",
|
||||||
|
doreboot ? "reboot" : dohalt ? "halt" : "shutdown", whom, mbuf);
|
||||||
|
(void)sleep(2);
|
||||||
|
|
||||||
|
(void)printf("\r\nSystem shutdown time has arrived\007\007\r\n");
|
||||||
|
if (killflg) {
|
||||||
|
(void)printf("\rbut you'll have to do it yourself\r\n");
|
||||||
|
exit(0);
|
||||||
|
}
|
||||||
|
#ifdef DEBUG
|
||||||
|
if (doreboot)
|
||||||
|
(void)printf("reboot");
|
||||||
|
else if (dohalt)
|
||||||
|
(void)printf("halt");
|
||||||
|
if (nosync)
|
||||||
|
(void)printf(" no sync");
|
||||||
|
(void)printf("\nkill -HUP 1\n");
|
||||||
|
#else
|
||||||
|
if (doreboot) {
|
||||||
|
execle(_PATH_REBOOT, "reboot", "-l", nosync, 0);
|
||||||
|
syslog(LOG_ERR, "shutdown: can't exec %s: %m.", _PATH_REBOOT);
|
||||||
|
perror("shutdown");
|
||||||
|
}
|
||||||
|
else if (dohalt) {
|
||||||
|
execle(_PATH_HALT, "halt", "-l", nosync, 0);
|
||||||
|
syslog(LOG_ERR, "shutdown: can't exec %s: %m.", _PATH_HALT);
|
||||||
|
perror("shutdown");
|
||||||
|
}
|
||||||
|
(void)kill(1, SIGTERM); /* to single user */
|
||||||
|
#endif
|
||||||
|
finish(0);
|
||||||
|
}
|
||||||
|
|
||||||
|
#define ATOI2(p) (p[0] - '0') * 10 + (p[1] - '0'); p += 2;
|
||||||
|
|
||||||
|
void
|
||||||
|
getoffset(timearg)
|
||||||
|
register char *timearg;
|
||||||
|
{
|
||||||
|
register struct tm *lt;
|
||||||
|
register char *p;
|
||||||
|
time_t now;
|
||||||
|
|
||||||
|
if (!strcasecmp(timearg, "now")) { /* now */
|
||||||
|
offset = 0;
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
(void)time(&now);
|
||||||
|
if (*timearg == '+') { /* +minutes */
|
||||||
|
if (!isdigit(*++timearg))
|
||||||
|
badtime();
|
||||||
|
offset = atoi(timearg) * 60;
|
||||||
|
shuttime = now + offset;
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* handle hh:mm by getting rid of the colon */
|
||||||
|
for (p = timearg; *p; ++p)
|
||||||
|
if (!isascii(*p) || !isdigit(*p))
|
||||||
|
if (*p == ':' && strlen(p) == 3) {
|
||||||
|
p[0] = p[1];
|
||||||
|
p[1] = p[2];
|
||||||
|
p[2] = '\0';
|
||||||
|
}
|
||||||
|
else
|
||||||
|
badtime();
|
||||||
|
|
||||||
|
unsetenv("TZ"); /* OUR timezone */
|
||||||
|
lt = localtime(&now); /* current time val */
|
||||||
|
|
||||||
|
switch(strlen(timearg)) {
|
||||||
|
case 10:
|
||||||
|
lt->tm_year = ATOI2(timearg);
|
||||||
|
/* FALLTHROUGH */
|
||||||
|
case 8:
|
||||||
|
lt->tm_mon = ATOI2(timearg);
|
||||||
|
if (--lt->tm_mon < 0 || lt->tm_mon > 11)
|
||||||
|
badtime();
|
||||||
|
/* FALLTHROUGH */
|
||||||
|
case 6:
|
||||||
|
lt->tm_mday = ATOI2(timearg);
|
||||||
|
if (lt->tm_mday < 1 || lt->tm_mday > 31)
|
||||||
|
badtime();
|
||||||
|
/* FALLTHROUGH */
|
||||||
|
case 4:
|
||||||
|
lt->tm_hour = ATOI2(timearg);
|
||||||
|
if (lt->tm_hour < 0 || lt->tm_hour > 23)
|
||||||
|
badtime();
|
||||||
|
lt->tm_min = ATOI2(timearg);
|
||||||
|
if (lt->tm_min < 0 || lt->tm_min > 59)
|
||||||
|
badtime();
|
||||||
|
lt->tm_sec = 0;
|
||||||
|
if ((shuttime = mktime(lt)) == -1)
|
||||||
|
badtime();
|
||||||
|
if ((offset = shuttime - now) < 0) {
|
||||||
|
(void)fprintf(stderr,
|
||||||
|
"shutdown: that time is already past.\n");
|
||||||
|
exit(1);
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
badtime();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
#define NOMSG "\n\nNO LOGINS: System going down at "
|
||||||
|
void
|
||||||
|
nolog()
|
||||||
|
{
|
||||||
|
int logfd;
|
||||||
|
char *ct;
|
||||||
|
|
||||||
|
(void)unlink(_PATH_NOLOGIN); /* in case linked to another file */
|
||||||
|
(void)signal(SIGINT, finish);
|
||||||
|
(void)signal(SIGHUP, finish);
|
||||||
|
(void)signal(SIGQUIT, finish);
|
||||||
|
(void)signal(SIGTERM, finish);
|
||||||
|
if ((logfd = open(_PATH_NOLOGIN, O_WRONLY|O_CREAT|O_TRUNC,
|
||||||
|
0664)) >= 0) {
|
||||||
|
(void)write(logfd, NOMSG, sizeof(NOMSG) - 1);
|
||||||
|
ct = ctime(&shuttime);
|
||||||
|
(void)write(logfd, ct + 11, 5);
|
||||||
|
(void)write(logfd, "\n\n", 2);
|
||||||
|
(void)write(logfd, mbuf, strlen(mbuf));
|
||||||
|
(void)close(logfd);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
finish(signo)
|
||||||
|
int signo;
|
||||||
|
{
|
||||||
|
(void)unlink(_PATH_NOLOGIN);
|
||||||
|
exit(0);
|
||||||
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
badtime()
|
||||||
|
{
|
||||||
|
(void)fprintf(stderr, "shutdown: bad time format.\n");
|
||||||
|
exit(1);
|
||||||
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
usage()
|
||||||
|
{
|
||||||
|
fprintf(stderr, "usage: shutdown [-hknr] shutdowntime [ message ]\n");
|
||||||
|
exit(1);
|
||||||
|
}
|
|
@ -0,0 +1,9 @@
|
||||||
|
# @(#)Makefile 8.1 (Berkeley) 6/6/93
|
||||||
|
|
||||||
|
PROG= syslogd
|
||||||
|
SRCS= syslogd.c ttymsg.c
|
||||||
|
.PATH: ${.CURDIR}/../../usr.bin/wall
|
||||||
|
MAN5= syslog.conf.5
|
||||||
|
MAN8= syslogd.8
|
||||||
|
|
||||||
|
.include <bsd.prog.mk>
|
|
@ -0,0 +1,40 @@
|
||||||
|
/*
|
||||||
|
* Copyright (c) 1989, 1993
|
||||||
|
* The Regents of the University of California. All rights reserved.
|
||||||
|
*
|
||||||
|
* 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.
|
||||||
|
*
|
||||||
|
* @(#)pathnames.h 8.1 (Berkeley) 6/6/93
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include <paths.h>
|
||||||
|
|
||||||
|
#define _PATH_KLOG "/dev/klog"
|
||||||
|
#define _PATH_LOGCONF "/etc/syslog.conf"
|
||||||
|
#define _PATH_LOGPID "/var/run/syslog.pid"
|
|
@ -0,0 +1,251 @@
|
||||||
|
.\" Copyright (c) 1990, 1991, 1993
|
||||||
|
.\" The Regents of the University of California. All rights reserved.
|
||||||
|
.\"
|
||||||
|
.\" 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.
|
||||||
|
.\"
|
||||||
|
.\" @(#)syslog.conf.5 8.1 (Berkeley) 6/9/93
|
||||||
|
.\"
|
||||||
|
.TH SYSLOG.CONF 5 "4 October 1997" GNO "File Formats"
|
||||||
|
.SH NAME
|
||||||
|
.BR syslog.conf \-
|
||||||
|
.BR syslogd (8)
|
||||||
|
configuration file
|
||||||
|
.SH DESCRIPTION
|
||||||
|
The
|
||||||
|
.BR syslog.conf
|
||||||
|
file is the configuration file for the
|
||||||
|
.BR syslogd (8)
|
||||||
|
program.
|
||||||
|
It consists of
|
||||||
|
blocks of lines separated by
|
||||||
|
.IR program
|
||||||
|
specifications,
|
||||||
|
with each line containing two fields: the
|
||||||
|
.IR selector
|
||||||
|
field which specifies the types of messages and priorities to which the
|
||||||
|
line applies, and an
|
||||||
|
.IR action
|
||||||
|
field which specifies the action to be taken if a message
|
||||||
|
.BR syslogd
|
||||||
|
receives matches the selection criteria.
|
||||||
|
The
|
||||||
|
.IR selector
|
||||||
|
field is separated from the
|
||||||
|
.IR action
|
||||||
|
field by one or more tab characters.
|
||||||
|
.LP
|
||||||
|
The
|
||||||
|
.IR Selectors
|
||||||
|
function
|
||||||
|
are encoded as a
|
||||||
|
.IR facility ,
|
||||||
|
a period (``.''), and a
|
||||||
|
.IR level ,
|
||||||
|
with no intervening white-space.
|
||||||
|
Both the
|
||||||
|
.IR facility
|
||||||
|
and the
|
||||||
|
.IR level
|
||||||
|
are case insensitive.
|
||||||
|
.LP
|
||||||
|
The
|
||||||
|
.IR facility
|
||||||
|
describes the part of the system generating the message, and is one of
|
||||||
|
the following keywords: auth, authpriv, cron, daemon, kern, lpr, mail,
|
||||||
|
mark, news, syslog, user, uucp and local0 through local7.
|
||||||
|
These keywords (with the exception of mark) correspond to the
|
||||||
|
similar
|
||||||
|
.B LOG_
|
||||||
|
values specified to the
|
||||||
|
.BR openlog (3)
|
||||||
|
and
|
||||||
|
.BR syslog (3)
|
||||||
|
library routines.
|
||||||
|
.LP
|
||||||
|
The
|
||||||
|
.IR level
|
||||||
|
describes the severity of the message, and is a keyword from the
|
||||||
|
following ordered list (higher to lower): emerg, alert, crit, err,
|
||||||
|
warning, notice and debug.
|
||||||
|
These keywords correspond to the
|
||||||
|
similar
|
||||||
|
.B LOG_
|
||||||
|
values specified to the
|
||||||
|
.BR syslog
|
||||||
|
library routine.
|
||||||
|
.LP
|
||||||
|
Each block of lines is separated from the previous block by a tag. The tag
|
||||||
|
is a line beginning with
|
||||||
|
.IR #!prog
|
||||||
|
or
|
||||||
|
.IR !prog
|
||||||
|
(the former is for compatibility with the previous syslogd, if one is sharing
|
||||||
|
syslog.conf files, for example)
|
||||||
|
and each block will be associated with calls to syslog from that specific
|
||||||
|
program.
|
||||||
|
.LP
|
||||||
|
See
|
||||||
|
.BR syslog (3)
|
||||||
|
for a further descriptions of both the
|
||||||
|
.IR facility
|
||||||
|
and
|
||||||
|
.IR level
|
||||||
|
keywords and their significance. It's preferred that selections be made on
|
||||||
|
.IR facility
|
||||||
|
rather than
|
||||||
|
.IR program ,
|
||||||
|
since the latter can easily vary in a networked environment. In some cases,
|
||||||
|
though, an appropriate
|
||||||
|
.IR facility
|
||||||
|
simply doesn't exist (for example,
|
||||||
|
.IR ftpd
|
||||||
|
logs under LOG_DAEMON along with a myriad other programs).
|
||||||
|
.LP
|
||||||
|
If a received message matches the specified
|
||||||
|
.IR facility
|
||||||
|
and is of the specified
|
||||||
|
.IR level
|
||||||
|
.IR (or "a higher level) ,"
|
||||||
|
and the first word in the message after the date matches the
|
||||||
|
.IR program ,
|
||||||
|
the action specified in the
|
||||||
|
.IR action
|
||||||
|
field will be taken.
|
||||||
|
.LP
|
||||||
|
Multiple
|
||||||
|
.IR selectors
|
||||||
|
may be specified for a single
|
||||||
|
.IR action
|
||||||
|
by separating them with semicolon (``;'') characters.
|
||||||
|
It is important to note, however, that each
|
||||||
|
.IR selector
|
||||||
|
can modify the ones preceding it.
|
||||||
|
.LP
|
||||||
|
Multiple
|
||||||
|
.IR facilities
|
||||||
|
may be specified for a single
|
||||||
|
.IR level
|
||||||
|
by separating them with comma (``,'') characters.
|
||||||
|
.LP
|
||||||
|
An asterisk (``*'') can be used to specify all
|
||||||
|
.IR facilities
|
||||||
|
all
|
||||||
|
.IR levels
|
||||||
|
or all
|
||||||
|
.IR programs .
|
||||||
|
.LP
|
||||||
|
The special
|
||||||
|
.IR facility
|
||||||
|
``mark'' receives a message at priority ``info'' every 20 minutes
|
||||||
|
(see
|
||||||
|
.BR syslogd (8)).
|
||||||
|
This is not enabled by a
|
||||||
|
.IR facility
|
||||||
|
field containing an asterisk.
|
||||||
|
.LP
|
||||||
|
The special
|
||||||
|
.IR level
|
||||||
|
``none'' disables a particular
|
||||||
|
.IR facility .
|
||||||
|
.LP
|
||||||
|
The
|
||||||
|
.IR action
|
||||||
|
field of each line specifies the action to be taken when the
|
||||||
|
.IR selector
|
||||||
|
field selects a message.
|
||||||
|
There are four forms:
|
||||||
|
.RS
|
||||||
|
A pathname (beginning with a leading slash).
|
||||||
|
Selected messages are appended to the file.
|
||||||
|
.LP
|
||||||
|
A hostname (preceded by an at (``@'') sign).
|
||||||
|
Selected messages are forwarded to the
|
||||||
|
.BR syslogd
|
||||||
|
program on the named host.
|
||||||
|
.LP
|
||||||
|
A comma separated list of users.
|
||||||
|
Selected messages are written to those users
|
||||||
|
if they are logged in.
|
||||||
|
.LP
|
||||||
|
An asterisk.
|
||||||
|
Selected messages are written to all logged-in users.
|
||||||
|
.RE
|
||||||
|
.LP
|
||||||
|
Blank lines and lines whose first non-blank character is a hash (``#'')
|
||||||
|
character are ignored.
|
||||||
|
.SH EXAMPLES
|
||||||
|
.LP
|
||||||
|
A configuration file might appear as follows:
|
||||||
|
.nf
|
||||||
|
# Log all kernel messages, authentication messages of
|
||||||
|
# level notice or higher and anything of level err or
|
||||||
|
# higher to the console.
|
||||||
|
# Don't log private authentication messages!
|
||||||
|
*.err;kern.*;auth.notice;authpriv.none /dev/console
|
||||||
|
|
||||||
|
# Log anything (except mail) of level info or higher.
|
||||||
|
# Don't log private authentication messages!
|
||||||
|
*.info;mail.none;authpriv.none /var/log/messages
|
||||||
|
|
||||||
|
# The authpriv file has restricted access.
|
||||||
|
authpriv.* /var/log/secure
|
||||||
|
|
||||||
|
# Log all the mail messages in one place.
|
||||||
|
mail.* /var/log/maillog
|
||||||
|
|
||||||
|
# Everybody gets emergency messages, plus log them on another
|
||||||
|
# machine.
|
||||||
|
*.emerg *
|
||||||
|
*.emerg @arpa.berkeley.edu
|
||||||
|
|
||||||
|
# Root and Eric get alert and higher messages.
|
||||||
|
*.alert root,eric
|
||||||
|
|
||||||
|
# Save mail and news errors of level err and higher in a
|
||||||
|
# special file.
|
||||||
|
uucp,news.crit /var/log/spoolerr
|
||||||
|
|
||||||
|
# Save ftpd transactions along with mail and news
|
||||||
|
!ftpd
|
||||||
|
*.* /var/log/spoolerr
|
||||||
|
.fi
|
||||||
|
.SH FILES
|
||||||
|
.RS
|
||||||
|
.IP \fB/etc/syslog.conf\fR
|
||||||
|
The
|
||||||
|
.BR syslogd (8)
|
||||||
|
configuration file.
|
||||||
|
.RE
|
||||||
|
.SH BUGS
|
||||||
|
The effects of multiple selectors are sometimes not intuitive.
|
||||||
|
For example ``mail.crit,*.err'' will select ``mail'' facility messages at
|
||||||
|
the level of ``err'' or higher, not at the level of ``crit'' or higher.
|
||||||
|
.SH SEE ALSO
|
||||||
|
.BR syslog (3),
|
||||||
|
.BR syslogd (8)
|
|
@ -0,0 +1,127 @@
|
||||||
|
.\" Copyright (c) 1983, 1986, 1991, 1993
|
||||||
|
.\" The Regents of the University of California. All rights reserved.
|
||||||
|
.\"
|
||||||
|
.\" 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.
|
||||||
|
.\"
|
||||||
|
.\" @(#)syslogd.8 8.1 (Berkeley) 6/6/93
|
||||||
|
.\"
|
||||||
|
.TH SYSLOGD 8 "4 October 1997" GNO "System Administration"
|
||||||
|
.SH NAME
|
||||||
|
.BR syslogd
|
||||||
|
\- log systems messages
|
||||||
|
.SH SYNOPSIS
|
||||||
|
.BR syslogd
|
||||||
|
[
|
||||||
|
.BR -f
|
||||||
|
.I config_file
|
||||||
|
] [
|
||||||
|
.BR -m
|
||||||
|
.I mark_interval
|
||||||
|
] [
|
||||||
|
.BR -p
|
||||||
|
.I log_socket
|
||||||
|
]
|
||||||
|
.SH DESCRIPTION
|
||||||
|
.BR Syslogd
|
||||||
|
reads and logs messages to the system console, log files, other
|
||||||
|
machines and/or users as specified by its configuration file.
|
||||||
|
The options are as follows:
|
||||||
|
.RS
|
||||||
|
.IP \fB-f\fR
|
||||||
|
Specify the pathname of an alternate configuration file;
|
||||||
|
the default is
|
||||||
|
.BR /etc/syslog.conf .
|
||||||
|
.IP \fB-m\fR
|
||||||
|
Select the number of minutes between ``mark'' messages;
|
||||||
|
the default is 20 minutes.
|
||||||
|
.IP \fB-p\fR
|
||||||
|
Specify the pathname of an alternate log socket;
|
||||||
|
the default is
|
||||||
|
.BR /dev/log .
|
||||||
|
.RE
|
||||||
|
.LP
|
||||||
|
.BR Syslogd
|
||||||
|
reads its configuration file when it starts up and whenever it
|
||||||
|
receives a hangup signal.
|
||||||
|
For information on the format of the configuration file,
|
||||||
|
see
|
||||||
|
.BR syslog.conf (5).
|
||||||
|
.LP
|
||||||
|
.BR Syslogd
|
||||||
|
reads messages from the
|
||||||
|
.B UNIX
|
||||||
|
domain socket
|
||||||
|
.BR /dev/log ,
|
||||||
|
from an Internet domain socket specified in
|
||||||
|
.BR /etc/services ,
|
||||||
|
and from the special device
|
||||||
|
.BR /dev/klog
|
||||||
|
(to read kernel messages).
|
||||||
|
.LP
|
||||||
|
.BR Syslogd
|
||||||
|
creates the file
|
||||||
|
.BR /var/run/syslog.pid ,
|
||||||
|
and stores its process
|
||||||
|
id there.
|
||||||
|
This can be used to kill or reconfigure
|
||||||
|
.BR syslogd .
|
||||||
|
.LP
|
||||||
|
The message sent to
|
||||||
|
.BR syslogd
|
||||||
|
should consist of a single line.
|
||||||
|
The message can contain a priority code, which should be a preceding
|
||||||
|
decimal number in angle braces, for example,
|
||||||
|
.BR 5 .
|
||||||
|
This priority code should map into the priorities defined in the
|
||||||
|
include file
|
||||||
|
.BR <sys/syslog.h> .
|
||||||
|
.SH FILES
|
||||||
|
.RS
|
||||||
|
.IP \fB/etc/syslog.conf\fR
|
||||||
|
The configuration file.
|
||||||
|
.IP \fB/var/run/syslog.pid\fR
|
||||||
|
The process id of current
|
||||||
|
.BR syslogd .
|
||||||
|
.IP \fB/dev/log\fR
|
||||||
|
Name of the
|
||||||
|
.B UNIX
|
||||||
|
domain datagram log socket.
|
||||||
|
.IP \fB/dev/klog\fR
|
||||||
|
The kernel log device.
|
||||||
|
.RE
|
||||||
|
.SH SEE ALSO
|
||||||
|
.BR logger (1),
|
||||||
|
.BR syslog (3),
|
||||||
|
.BR services (5),
|
||||||
|
.BR syslog.conf (5)
|
||||||
|
.SH HISTORY
|
||||||
|
The
|
||||||
|
.BR syslogd
|
||||||
|
command appeared in
|
||||||
|
BSD 4.3.
|
File diff suppressed because it is too large
Load Diff
Loading…
Reference in New Issue