summaryrefslogtreecommitdiffstats
path: root/sbin/rc.0
diff options
context:
space:
mode:
Diffstat (limited to 'sbin/rc.0')
-rwxr-xr-xsbin/rc.083
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
+