Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #!/bin/bash
- #
- # /etc/rc.shutdown
- #
- . /etc/rc.conf
- . /etc/rc.d/functions
- # avoid staircase effect
- stty onlcr
- echo " "
- printhl "Initiating Shutdown..."
- echo " "
- run_hook shutdown_start
- [[ -x /etc/rc.local.shutdown ]] && /etc/rc.local.shutdown
- stop_all_daemons
- run_hook shutdown_prekillall
- kill_all
- run_hook shutdown_postkillall
- stat_busy "Saving Random Seed"
- RANDOM_SEED=/var/lib/misc/random-seed
- install -TDm 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
- dd if=/dev/urandom of=$RANDOM_SEED count=1 bs=$POOL_SIZE &>/dev/null
- stat_done
- [[ $TIMEZONE ]] &&
- status "Saving Time Zone" \
- cp --remove-destination "/usr/share/zoneinfo/$TIMEZONE" /etc/localtime
- # Write to wtmp file before unmounting
- halt -w
- status "Deactivating Swap" swapoff -a
- # stop monitoring of lvm2 groups before unmounting filesystems
- [[ $USELVM = [Yy][Ee][Ss] && -x $(type -P lvm) && -d /sys/block ]] &&
- status "Deactivating monitoring of LVM2 groups" \
- vgchange --monitor n &>/dev/null
- # if we don't have devtmpfs support, /dev is mounted as tmpfs, so don't unmount it
- status "Unmounting Filesystems" \
- umount -a -r -t nodevtmpfs,notmpfs,nosysfs,noproc,nodevpts -O no_netdev
- run_hook shutdown_postumount
- # Kill non-root encrypted partition mappings
- if [[ -f /etc/crypttab && $CS ]] && grep -q ^[^#] /etc/crypttab; then
- stat_busy "Deactivating encrypted volumes:"
- # Maybe someone has LVM on an encrypted block device
- # executing an extra vgchange is errorless
- [[ $USELVM = [Yy][Ee][Ss] ]] && vgchange --sysinit -a n &>/dev/null
- do_lock() {
- stat_append "${1}.."
- if $CS remove "$1" &>/dev/null; then
- stat_append "ok "
- else
- stat_append "failed "
- fi
- }
- read_crypttab do_lock
- stat_done
- fi
- [[ $USELVM = [Yy][Ee][Ss] && -x $(type -P lvm) && -d /sys/block ]] &&
- status "Deactivating LVM2 groups" vgchange --sysinit -a n &>/dev/null
- status "Remounting Root Filesystem Read-only" \
- mount -n -o remount,ro /
- run_hook shutdown_poweroff
- # Power off or reboot
- printsep
- if [[ $RUNLEVEL = 0 ]]; then
- printhl "${C_H2}POWER OFF"
- poweroff -d -f -h -i
- else
- printhl "${C_H2}REBOOTING"
- # if kexec is installed and a kernel is loaded, use it
- [[ -x $(type -P kexec) ]] && kexec -e &>/dev/null
- reboot -d -f -i
- fi
- # End of file
- # vim: set ts=2 sw=2 noet:
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement