summaryrefslogtreecommitdiffstats
path: root/abs/core/linhes-live/etc/rc.shutdown-live
diff options
context:
space:
mode:
Diffstat (limited to 'abs/core/linhes-live/etc/rc.shutdown-live')
-rwxr-xr-xabs/core/linhes-live/etc/rc.shutdown-live167
1 files changed, 167 insertions, 0 deletions
diff --git a/abs/core/linhes-live/etc/rc.shutdown-live b/abs/core/linhes-live/etc/rc.shutdown-live
new file mode 100755
index 0000000..7fa97e6
--- /dev/null
+++ b/abs/core/linhes-live/etc/rc.shutdown-live
@@ -0,0 +1,167 @@
+#!/bin/bash
+#
+# /etc/rc.shutdown
+#
+
+###
+# Based on initscripts 2008.05-1
+###
+
+. /etc/rc.conf
+. /etc/rc.d/functions
+
+###############################################################
+### These functions have been separated out, so that they can be
+### replaced in linhes live systems.
+
+f_saveclock ()
+{
+ stat_busy "Saving System Clock"
+ if [ "$TIMEZONE" != "" -a -e "/usr/share/zoneinfo/$TIMEZONE" ]; then
+ /bin/rm -f /etc/localtime
+ /bin/cp "/usr/share/zoneinfo/$TIMEZONE" /etc/localtime
+ fi
+
+ HWCLOCK_PARAMS="--systohc"
+ if [ "$HARDWARECLOCK" = "UTC" ]; then
+ HWCLOCK_PARAMS="$HWCLOCK_PARAMS --utc"
+ else
+ HWCLOCK_PARAMS="$HWCLOCK_PARAMS --localtime"
+ fi
+ if [ "$USEDIRECTISA" = "yes" -o "$USEDIRECTISA" = "YES" ]; then
+ HWCLOCK_PARAMS="$HWCLOCK_PARAMS --directisa"
+ fi
+ /sbin/hwclock $HWCLOCK_PARAMS
+ stat_done
+}
+
+f_swapoff ()
+{
+ stat_busy "Deactivating Swap"
+ /sbin/swapoff -a
+ stat_done
+}
+
+f_remountro ()
+{
+ stat_busy "Remounting Root Filesystem Read-only"
+ /bin/mount -n -o remount,ro /
+ stat_done
+}
+
+###############################################################
+
+### Override above functions if running linhes live system
+[ -f /etc/live-shutdown ] && . /etc/live-shutdown
+
+# avoid staircase effect
+/bin/stty onlcr
+
+echo " "
+printhl "Initiating Shutdown..."
+echo " "
+
+# avoid NIS hanging syslog-ng on shutdown by unsetting the domainname
+if [ -x /bin/domainname ]; then
+ /bin/domainname ""
+fi
+
+if [ -x /etc/rc.local.shutdown ]; then
+ /etc/rc.local.shutdown
+fi
+
+if [ "$PREVLEVEL" = "3" -o "$PREVLEVEL" = "5" ]; then
+ # Shutdown daemons
+ let i=${#DAEMONS[@]}
+ while [ $i -ge 0 ]; do
+ if [ "${DAEMONS[$i]:0:1}" != '!' ]; then
+ ck_daemon ${DAEMONS[$i]#@} || /etc/rc.d/${DAEMONS[$i]#@} stop
+ fi
+ let i=i-1
+ done
+ # find any leftover daemons and shut them down in reverse order
+ if [ -d /var/run/daemons ]; then
+ for daemon in $(/bin/ls -1t /var/run/daemons); do
+ /etc/rc.d/$daemon stop
+ done
+ fi
+fi
+
+# Terminate all processes
+stat_busy "Sending SIGTERM To Processes"
+/sbin/killall5 -15 &> /dev/null
+/bin/sleep 5
+stat_done
+
+stat_busy "Sending SIGKILL To Processes"
+/sbin/killall5 -9 &> /dev/null
+/bin/sleep 1
+stat_done
+
+stat_busy "Saving Random Seed"
+/bin/dd if=/dev/urandom of=/var/run/random-seed count=1 bs=512 2> /dev/null
+stat_done
+
+#F Save system time
+f_saveclock
+
+# removing psmouse module to fix some reboot issues on newer laptops
+/sbin/modprobe -r psmouse >/dev/null 2>&1
+
+# Write to wtmp file before unmounting
+/sbin/halt -w
+
+#F Deactivate swaps
+f_swapoff
+
+stat_busy "Unmounting Filesystems"
+/bin/umount -a -t noramfs,notmpfs,nosysfs,noproc
+stat_done
+
+# Kill non-root encrypted partition mappings
+if [ -f /etc/crypttab -a -n "$(/bin/grep -v ^# /etc/crypttab | /bin/grep -v ^$)" ]; then
+ stat_busy "Deactivating encrypted volumes:"
+ CS=/sbin/cryptsetup.static
+ do_uncrypt() {
+ if [ $# -ge 3 ]; then
+ stat_append "${1}.."
+ $CS remove $1 >/dev/null 2>&1
+ if [ $? -ne 0 ]; then
+ stat_append "failed "
+ else
+ stat_append "ok "
+ fi
+ fi
+ }
+ while read line; do
+ eval do_uncrypt "$line"
+ done </etc/crypttab
+ stat_done
+fi
+
+if [ "$USELVM" = "yes" -o "$USELVM" = "YES" ]; then
+ if [ -x /sbin/lvm -a -d /sys/block ]; then
+ stat_busy "Deactivating LVM2 groups"
+ /sbin/lvm vgchange --ignorelockingfailure -an >/dev/null 2>&1
+ stat_done
+ fi
+fi
+
+#F Remount / ro
+f_remountro
+
+# Power off or reboot
+if [ "$RUNLEVEL" = "0" ]; then
+ printsep
+ printhl "${C_H2}POWER OFF"
+ /sbin/poweroff -d -f -h -i
+else
+ printsep
+ printhl "${C_H2}REBOOTING"
+ # if kexec is installed and a kernel is loaded, use it
+ [ -x /sbin/kexec ] && /sbin/kexec -e > /dev/null 2>&1
+ /sbin/reboot -d -f -i
+fi
+
+# vim: set ts=2 sw=2 noet:
+# End