aboutsummaryrefslogtreecommitdiffstats
path: root/rc.d/init.d/halt
diff options
context:
space:
mode:
Diffstat (limited to 'rc.d/init.d/halt')
-rwxr-xr-xrc.d/init.d/halt9
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