Commit Graph

28 Commits

Author SHA1 Message Date
Ralf S. Engelschall
62bb1d78fe Improve the RC framework for the clean booting/shutdown of Jails:
1. Feature: for flexibility reasons and as a prerequisite to clean
   shutdowns, allow the configuration of a stop/shutdown command
   via rc.conf variable "jail_<name>_exec_stop" in addition to the
   start/boot command (rc.conf variable "jail_<name>_exec_start"). For
   backward compatibility reasons, rc.conf variable "jail_<name>_exec"
   is still supported, too.

2. Debug: Add the used boot/shutdown commands to the debug output of
   the /etc/rc.d/jail script, too.

3. Security: Run the Jail start/boot command in a cleaned environment
   to not leak information from the host to the Jail during startup.

4. Feature: Run the Jail stop/shutdown command "jail_<name>_exec_stop" on
   "/etc/rc.d/jail stop <name>" to allow a graceful shutdown of the Jail
   before its processes are just killed.

5. Bugfix: When killing the remaining Jail processes give the processes
   time to actually perform their termination sequence. Without this the
   subsequent umount(8) operations usually fail because the resources
   are still in use. Additionally, if after trying to TERM-inate the
   processes there are still processes hanging around, finally just KILL
   them.

6. Bugfix: In rc.shutdown, if running inside a Jail, skip the /etc/rc.d/*
   scripts which are flagged with the KEYWORD "nojail" to allow the
   correct operation of rc.shutdown under jail_<name>_exec_stop="/bin/sh
   /etc/rc.shutdown". This is analogous to what /etc/rc does inside a Jail.

Now the following typical host-configuration for two Jails works as
expected and correctly boots and shutdowns the Jails:

-----------------------------------------------------------
#  /etc/rc.conf:
jail_enable="YES"
jail_list="foo bar"
jail_foo_rootdir="/j/foo"
jail_foo_hostname="foo.example.com"
jail_foo_ip="192.168.0.1"
jail_foo_devfs_enable="YES"
jail_foo_mount_enable="YES"
jail_foo_exec_start="/bin/sh /etc/rc"
jail_foo_exec_stop="/bin/sh /etc/rc.shutdown"
jail_bar_rootdir="/j/bar"
jail_bar_hostname="bar.example.com"
jail_bar_ip="192.168.0.2"
jail_bar_devfs_enable="YES"
jail_bar_mount_enable="YES"
jail_bar_exec_start="/path/to/kjailer -v"
jail_bar_exec_stop="/bin/sh -c 'killall kjailer && sleep 60'"
-----------------------------------------------------------
#  /etc/fstab.foo
/v/foo /j/foo/v/foo nullfs rw 0 0
-----------------------------------------------------------
#  /etc/fstab.bar
/v/bar /j/bar/v/bar nullfs rw 0 0
-----------------------------------------------------------

Reviewed by:	freebsd-hackers
MFC after:	2 weeks
2004-12-14 14:36:35 +00:00
Jens Schweikhardt
336f47d061 Fix a bogus variable assignment. You can't expect
_msg="a" \
        " b"
to concat the strings. Use
   _msg="a"
   _msg="$_msg b"
instead (intent is to not exceed 80 chars per line).

MFC after:	1 week
2004-10-17 13:39:42 +00:00
Mike Makonnen
337338ee00 Remove the requirement for the FreeBSD keyword as it no longer
makes any sense.

Discussed with: dougb, brooks
MFC after: 3 days
2004-10-07 13:55:26 +00:00
Mike Makonnen
3621fa11d7 Make the stop command respect the 'fast' prefix.
Most notably, this cleans up messages when shutting down from
single user. In such a case there are usually no daemons running,
but their pid files are still in /var/run. This causes rc.d to
output diagnostics about daemons with pidfiles, but that are
not running.
2004-06-26 09:27:30 +00:00
Jens Schweikhardt
d8beb0fd3b Removed whitespace at BOF, EOL & EOF. 2004-06-06 11:46:29 +00:00
Mike Makonnen
8381e05812 Remove last vestiges of the old rc. 2003-07-08 02:52:14 +00:00
Gordon Tetlow
2c7db4fbc2 Quiet warnings on shutdown. 2002-09-19 20:14:50 +00:00
Gordon Tetlow
825bb04125 Add the final bits that allow the use of rc.d. Note that you can toggle
between rc.d and the classic boot scripts based on the rcng variable in
your rc.conf. Defaults to classic boot scripts.

Submitted by:	Mike Makonnen
2002-06-13 22:30:02 +00:00
Gordon Tetlow
6395b411cb Fix the order of shutdown scripts so it not only reverses the order of the
files in each ${local_startup} directory, it also reverses the order of the
directories.

Suggested by:	jhb
Reviewed by:	jake
Approved by:	dougb
MFC after:	1 week
2002-05-18 00:26:10 +00:00
Peter Pentchev
1e106575d2 Set the script_name_sep variable to a safe value if it is not
already set (e.g. a failed/skipped mergemaster run during an upgrade).
Without this, if script_name_sep was not set in the rc.conf files,
local scripts will not be executed on startup or shutdown.

PR:		misc/32687
Submitted by:	Nicholas Paufler <echofox@discordia.ca> (the problem)
		Sheldon Hearn (the idea behind the fix)
Reviewed by:	sheldonh
MFC after:	1 week
2001-12-12 10:12:20 +00:00
Darren Reed
2129325c09 second part of the patches to complete ipf changes to rc
PR:		multiple
Submitted by:	Arjan de Vet <devet@devet.org>
2001-11-24 15:36:30 +00:00
Darren Reed
639e6db6e7 Put in place for using ipfs use on shutdown and startup.
PR:		27070
2001-10-20 04:33:02 +00:00
Peter Pentchev
1d17292c23 Add a script_name_sep rc.conf knob to specify the IFS character
for separating the startup scripts' list into individual filenames.

Run the shutdown scripts in reverse alphabetical order, so dependent
services are stopped before the services they depend upon.

Reviewed by:	-arch, -audit
MFC after:	3 weeks
2001-07-17 14:33:52 +00:00
Doug Barton
e14563a3f3 Apply a more consistent style to the echo statements in /etc/ scripts.
* Put quotes around each line
* Single quotes for lines with no variable interpolation
* Double quotes if there is
* Capitalize each word that begins a line
* Make echo -n 'Doing foo:' ... echo '.' more of a standard

No functionality changes
2000-12-17 08:16:06 +00:00
Andrey A. Chernov
7e290fd42a Back out increasing entropy file size workaround and wait for real fix instead.
Requested by: markm
2000-10-20 20:26:05 +00:00
Andrey A. Chernov
2af8bc5b22 Increase entropy file size from 4096 to 16384 because 4096 actually is not
enough to cause reseeding
2000-10-20 16:32:05 +00:00
John W. De Boskey
bfb80de42d Having played with this commit request for a few hours, I've
convinced myself that it's better then what we have, but still
not perfect.

/etc/rc  : Attempt to seed /dev/random with multiple backoffs.

/etc/rc.shutdown : Attempt to write the entropy_file.

In debugging the above changes, I've run into some
inconsistancies... rc.shutdown is run via 'init 6', but
does not appear to be run via '/sbin/reboot'. Thus, this
set of changes improves life depending on the mechanism
used to shut the system down.

Submitted by:	Doug Barton <DougB@gorean.org>
Approved by:	markm
2000-10-16 04:44:35 +00:00
David E. O'Brien
a1c43e3fbb Add copyright notices. Other systems have been barrowing our /etc files
w/o giving any credit.
2000-10-08 19:20:36 +00:00
Sheldon Hearn
af6e10cfa6 Remove an unwanted space from the "Shutting down daemon processes"
message.

PR:		20692
Submitted by:	Andre Albsmeier <andre.albsmeier@mchp.siemens.de>
2000-08-18 10:34:11 +00:00
Sheldon Hearn
0e2c115b95 Close a window of readability when creating the entropy seed file,
which must not be world-readable.
2000-07-24 15:14:47 +00:00
Andrey A. Chernov
e3b66023f2 dd is too verbose writting entropy, redirect its output to /dev/null
Add period at the end of sentence
2000-07-20 19:25:12 +00:00
Sheldon Hearn
7a414e32d7 Improve on previous commit:
Don't inhibit the trailing newline for entropy-related messages.
Try harder to save the seed file on shutdown.

Reviewed by:	markm
2000-07-17 13:39:48 +00:00
Mark Murray
b74aa5644c Add entropy caching. With this, some entropy is cached at shutdown
time, and this is used to reseed the random number generator at
boot time.

NOTE - this has no hope of working if you halt(); you need to
execute rc.shutdown to get the entropy stash.
2000-07-17 12:28:58 +00:00
Thomas Gellekum
f873f0c768 Now that the scripts in our ports support this, call the scripts
in ${local_startup} with the `stop' option on shutdown.
2000-07-05 12:40:26 +00:00
Matthew Dillon
a69497d73f Finish up umntall support. init now passed an argument to the
rundown script 'reboot' or 'single'.  ISO support (which never
    worked) has been removed from mount_nfs.  mount_nfs and umount
    now use mounttab, which allows umntall to work properly.  The
    rc scripts now call umntall as appropriate.

Submitted by:	Martin Blapp <mb@imp.ch>
1999-11-22 04:23:11 +00:00
Sheldon Hearn
321704296f Apply a consistent style to most of the etc scripts. Particularly, use
case instead of test where appropriate, since case allows case is a sh
builtin and (as a side-effect) allows case-insensitivity.

Changes discussed on freebsd-hackers.

Submitted by:	Doug Barton <Doug@gorean.org>
1999-09-13 15:44:20 +00:00
Peter Wemm
9b7a44a60e $Id$ -> $FreeBSD$ 1999-08-27 23:37:10 +00:00
David Nugent
8889c700f3 Add /etc/rc.shutdown capability to init.
Add sample /etc/rc.shutdown (which is just a shell for now).
Submitted by:	Ollivier Robert <roberto@keltia.freenix.fr>
1997-08-02 00:22:52 +00:00