diff options
author | Harald Hoyer <harald@redhat.com> | 2008-09-16 10:23:22 +0200 |
---|---|---|
committer | Bill Nottingham <notting@redhat.com> | 2008-09-16 20:13:24 -0400 |
commit | e99add4a34459654609147c8989d41cb450d0117 (patch) | |
tree | 25c1d7688504df9bfd2d570d1d04f06c8f523d8c /rc.d/init.d/halt | |
parent | 0e44773240e01476b2709f9d206b86d5dfecffcf (diff) | |
download | initscripts-e99add4a34459654609147c8989d41cb450d0117.tar initscripts-e99add4a34459654609147c8989d41cb450d0117.tar.gz initscripts-e99add4a34459654609147c8989d41cb450d0117.tar.bz2 initscripts-e99add4a34459654609147c8989d41cb450d0117.tar.xz initscripts-e99add4a34459654609147c8989d41cb450d0117.zip |
https://bugzilla.redhat.com/show_bug.cgi?id=433702
Changes to init scripts to better support stateless:
--rc.sysinit--
- don't update mtab in a r/o root
- mount on sys and /dev/pts returns EBUSY on a readonly root
- [ -n $CLIENTSTATE ] is always returning true, causing an unnecessary timeout
--network--
- /etc/mtab may not have any mount information in the readonly-root
cause, but the root mount is likely to be a network mount. Without
this, nfs hangs the reboot process.
--halt--
- don't try and update a read-only mtab
--rwtab--
- /var/empty/sshd/etc/localtime needs to be overwritten by sshd at
startup
- /var/lib/random-seed is written to at shutdown; this fixes the
error but doesn't return the functionality lost in a r/o /var/lib.
Diffstat (limited to 'rc.d/init.d/halt')
-rwxr-xr-x | rc.d/init.d/halt | 9 |
1 files changed, 6 insertions, 3 deletions
diff --git a/rc.d/init.d/halt b/rc.d/init.d/halt index fc9a6f27..f0353ca3 100755 --- a/rc.d/init.d/halt +++ b/rc.d/init.d/halt @@ -11,6 +11,9 @@ NOLOCALE=1 . /etc/init.d/functions +UMOUNT="umount" +[ ! -w /etc ] && UMOUNT="umount -n" + action() { echo -n "$1 " shift @@ -88,7 +91,7 @@ action $"Saving random seed: " dd if=/dev/urandom of=/var/lib/random-seed count= # Try to unmount tmpfs filesystems to avoid swapping them in. Ignore failures. tmpfs=$(awk '$2 ~ /^\/($|proc|dev)/ { next; } $3 == "tmpfs" { print $2; }' /proc/mounts | sort -r) -[ -n "$tmpfs" ] && fstab-decode umount $tmpfs 2>/dev/null +[ -n "$tmpfs" ] && fstab-decode $UMOUNT $tmpfs 2>/dev/null # Turn off swap, then unmount file systems. [ -f /proc/swaps ] && SWAPS=`awk '! /^Filename/ { print $1 }' /proc/swaps` @@ -127,7 +130,7 @@ LANG=C __umount_loop '$2 ~ /^\/$|^\/proc|^\/dev/{next} $"Unmounting file systems (retry): " \ -f -[ -f /proc/bus/usb/devices ] && umount /proc/bus/usb +[ -f /proc/bus/usb/devices ] && $UMOUNT /proc/bus/usb [ -f /etc/crypttab ] && halt_crypto @@ -139,7 +142,7 @@ rm -f /.autofsck awk '$2 !~ /\/(|dev|proc|selinux|sys)$/ && $1 !~ /^\/dev\/ram/ { print $2 }' \ /proc/mounts | sort -r | \ while read line; do - fstab-decode umount -f $line + fstab-decode $UMOUNT -f $line done if [ -x /sbin/halt.local ]; then |