diff options
Diffstat (limited to 'sbin/rc.0')
-rwxr-xr-x | sbin/rc.0 | 83 |
1 files changed, 83 insertions, 0 deletions
diff --git a/sbin/rc.0 b/sbin/rc.0 new file mode 100755 index 0000000..fb546de --- /dev/null +++ b/sbin/rc.0 @@ -0,0 +1,83 @@ +#! /bin/sh +# +# rc.6 This file is executed by init when it goes into runlevel +# 0 (halt) or runlevel 6 (reboot). It kills all processes, +# unmounts file systems and then either halts or reboots. +# +# Version: @(#)/etc/rc.d/rc.6 1.50 1994-01-15 +# +# Author: Miquel van Smoorenburg <miquels@drinkel.nl.mugnet.org> +# Modified by: Patrick J. Volkerding, <volkerdi@ftp.cdrom.com> +# + +# Set the path. +PATH=/sbin:/etc:/bin:/usr/bin:/usr/sbin + +# If there are SystemV init scripts for this runlevel, run them. +if [ -x /sbin/init.d/sysvinit ]; then + /sbin/init.d/sysvinit start +fi + +# Set linefeed mode to avoid staircase effect. +stty onlcr + +echo "Running shutdown script $0:" + +# Find out how we were called. +case "$0" in + *0) + command="halt" + ;; + *6) + command=reboot + ;; + *) + echo "$0: call me as \"rc.0\" or \"rc.6\" please!" + exit 1 + ;; +esac + +# Kill all processes. +# INIT is supposed to handle this entirely now, but this didn't always +# work correctly without this second pass at killing off the processes. +# Since INIT already notified the user that processes were being killed, +# we'll avoid echoing this info this time around. +if [ "$1" != "fast" ]; then # shutdown did not already kill all processes + killall5 -15 + sleep 5 + killall5 -9 +fi + +# Before unmounting file systems write a reboot or halt record to wtmp. +$command -w + +# Syncing data +sync + +# Unmount any remote filesystems: +echo "Unmounting remote filesystems." +umount -na -tnfs + +# Turn off swap, then unmount local file systems. +echo "Turning off swap." +swapoff -a +echo "Unmounting local file systems." +# Don't remount UMSDOS root volumes: +if [ ! "`cat /proc/mounts | head -1 | cut -d ' ' -f 5`" = "umsdos" ]; then + umount -na -t nonfs -t noproc + echo "Remounting root filesystem read-only." + mount -n -o remount,ro / +else + umount -na -t nonfs -t noumsdos -t noproc +fi +# This never hurts: +sync + +# Now halt (poweroff with APM kernels) or reboot. +if [ "$command" = "reboot" ]; then + echo "Rebooting." + reboot -f +else + halt -f -p +fi + |