#!/bin/bash # # /etc/rc.shutdown # . /etc/rc.conf . /etc/rc.d/functions run_hook shutdown_start # avoid staircase effect /bin/stty onlcr echo " " printhl "Initiating Shutdown..." echo " " [[ -x /etc/rc.local.shutdown ]] && /etc/rc.local.shutdown kill_everything shutdown stat_busy "Saving Random Seed" RANDOM_SEED=/var/lib/misc/random-seed [[ -d ${RANDOM_SEED%/*} ]] || mkdir -p ${RANDOM_SEED%/*} : > $RANDOM_SEED /bin/chmod 0600 $RANDOM_SEED POOL_FILE=/proc/sys/kernel/random/poolsize if [[ -r $POOL_FILE ]]; then read POOL_SIZE <$POOL_FILE else POOL_SIZE=512 fi /bin/dd if=/dev/urandom of=$RANDOM_SEED count=1 bs=$POOL_SIZE &> /dev/null stat_done if [[ $TIMEZONE && -e /usr/share/zoneinfo/$TIMEZONE ]]; then /bin/rm -f /etc/localtime status "Saving Time Zone" \ /bin/cp "/usr/share/zoneinfo/$TIMEZONE" /etc/localtime fi # Write to wtmp file before unmounting /sbin/halt -w stat_busy "Deactivating Swap" /sbin/swapoff -a stat_done # stop monitoring of lvm2 groups before unmounting filesystems if [[ $USELVM =~ yes|YES && -x /sbin/lvm && -d /sys/block ]]; then stat_busy "Deactivating monitoring of LVM2 groups" /sbin/vgchange --monitor n >/dev/null 2>&1 stat_done fi stat_busy "Unmounting Filesystems" /bin/umount -a -r -t noramfs,notmpfs,nosysfs,noproc,nodevtmpfs -O no_netdev stat_done # Kill non-root encrypted partition mappings if [[ -f /etc/crypttab && -n $CS ]] && /bin/grep -q ^[^#] /etc/crypttab; then stat_busy "Deactivating encrypted volumes:" do_lock() { stat_append "${1}.." if $CS remove "$1" >/dev/null 2>&1; then stat_append "ok " else stat_append "failed " fi } read_crypttab do_lock stat_done fi if [[ $USELVM =~ yes|YES && -x /sbin/lvm && -d /sys/block ]]; then stat_busy "Deactivating LVM2 groups" /sbin/vgchange --sysinit -a n >/dev/null 2>&1 stat_done fi stat_busy "Remounting Root Filesystem Read-only" /bin/mount -n -o remount,ro / stat_done run_hook shutdown_poweroff # Power off or reboot printsep if [[ $RUNLEVEL = 0 ]]; then printhl "${C_H2}POWER OFF" /sbin/poweroff -d -f -h -i else 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 # End of file # vim: set ts=2 sw=2 noet: