# Carry a random seed between reboots.
echo "Saving random seed from /dev/urandom in /etc/random-seed."
# Use the pool size from /proc, or 512 bytes:
if [ -r /proc/sys/kernel/random/poolsize ]; then
dd if=/dev/urandom of=/etc/random-seed count=1 bs=$(cat /proc/sys/kernel/rando
m/poolsize) 2> /dev/null
else
dd if=/dev/urandom of=/etc/random-seed count=1 bs=512 2> /dev/null
fi
chmod 600 /etc/random-seed
# Before unmounting file systems write a reboot or halt record to wtmp.
$command -w
# Clear /var/lock/subsys.
if [ -d /var/lock/subsys ]; then
rm -f /var/lock/subsys/*
fi
# A function to deactivate LVM volume groups:
deactivate_lvm() {
if [ -r /etc/lvmtab -o -d /etc/lvm/backup ]; then
echo "Deactivating LVM volume groups:"
if cat /proc/sys/kernel/osrelease | cut -f 1,2 -d . | grep -q -w 2.4 2> /dev
/null ; then
/sbin/vgchange -an
else
/sbin/vgchange -an --ignorelockingfailure
fi
sleep 10
fi
}
# Turn off swap, then unmount local file systems.
echo "Turning off swap."
swapoff -a
sync
echo "Unmounting local file systems."
# Don't remount UMSDOS root volumes:
if [ ! "$(mount | head -n 1 | cut -d ' ' -f 5)" = "umsdos" ]; then
umount -a -t nonfs,noproc,nosysfs
deactivate_lvm
umount -a -r -t nonfs,noproc,nosysfs
echo "Remounting root filesystem read-only."
mount -n -o remount,ro /
else
umount -a -t nonfs,noproc,nosysfs,noumsdos,nosmbfs
deactivate_lvm
umount -a -r -t nonfs,noproc,nosysfs,noumsdos,nosmbfs
fi
# This never hurts:
sync
# sleep 1 fixes problems with some hard drives that don't
# otherwise finish syncing before reboot or poweroff
sleep 1
# This is to ensure all processes have completed on SMP machines:
wait
if [ -x /sbin/genpowerd ]; then
# See if this is a powerfail situation:
if egrep -q "FAIL|SCRAM" /etc/upsstatus 2> /dev/null ; then
# Signal UPS to shut off the inverter:
/sbin/genpowerd -k
if [ ! $? = 0 ]; then
echo
echo "There was an error signaling the UPS."
echo "Perhaps you need to edit /etc/genpowerd.conf to configure"
echo "the serial line and UPS type."
# Wasting 15 seconds of precious power:
sleep 15
fi
fi
fi# Now halt (poweroff with APM or ACPI enabled kernels) or reboot.
if [ "$command" = "reboot" ]; then
echo "Rebooting."
reboot
else
poweroff
fi