X-Git-Url: http://git.grml.org/?a=blobdiff_plain;f=etc%2Finit.d%2Fgrml-reboot;h=846184c31b83128532c00ba12471a8d326ac46a0;hb=b191aece5fe495440112226c812d92009a23b464;hp=a3251f51f753d2b8dd122134904d41554fddc460;hpb=ba4444d29d3c62ceb7c716c921c9a52633793441;p=grml-etc.git diff --git a/etc/init.d/grml-reboot b/etc/init.d/grml-reboot index a3251f5..846184c 100755 --- a/etc/init.d/grml-reboot +++ b/etc/init.d/grml-reboot @@ -4,7 +4,7 @@ # Authors: grml-team (grml.org), (c) Klaus Knopper, (c) Michael Prokop # Bug-Reports: see http://grml.org/bugs/ # License: This file is licensed under the GPL v2. -# Latest change: Sam Mär 31 13:36:51 CEST 2007 [mika] +# Latest change: Mon Jän 14 12:53:18 CET 2008 [mika] ################################################################################ export PATH=/sbin:/bin:/usr/bin:/usr/sbin @@ -19,7 +19,7 @@ exec >/dev/console 2>&1 /proc/sys/kernel/printk # We may kill our network connection here before unmounting NFS. Bad luck. # poweroff pcmcia devices if [ -d /sys/bus/pcmcia -a -x /sbin/pccardctl ] ; then + # make sure we don't lose any data, see issue219 for details + log_begin_msg "Syncing devices..." + sync ; log_end_msg $? log_begin_msg "Shutting down PCMCIA devices..." pccardctl eject >/dev/null 2>&1 log_end_msg $? fi if [ -n "$INSTALLED" ] ; then - echo log_begin_msg_nn "Running /etc/init.d/rc ${level}: " /etc/init.d/rc $level 1>/dev/null 2>&1 & mysleep "$GREEN" @@ -98,7 +100,7 @@ else NETMOUNTS="$(awk '{if($1~/:/){print $2}}' /proc/mounts 2>/dev/null)" if [ -n "$NETMOUNTS" ]; then log_begin_msg "Unmounting network filesystems." - umount -t nfs -arvf 2>/dev/null ; log_end_msg $? + umount -t nfs,nfs4,smbfs -alvf 2>/dev/null fi # Shutdown network NETDEVICES="$(/sbin/ifconfig | awk '/^[^ ]+/ {print $1}' | grep -v '^lo$')" @@ -144,12 +146,17 @@ if [ -z "$NOEJECT" ]; then for dev in /proc/sys/dev/cdrom*/autoeject; do [ -f "$dev" ] && echo 1 > "$dev"; done fi -# Turn on auto-eject feature of cdrom (2.2 kernel) +# Detected cdrom device if [ -z "$INSTALLED" ]; then - CDROM="$(awk '/ \/cdrom /{print $1;exit 0;}' /proc/mounts)" + # new live-initramfs layout: + if [ -d /live/image ] ; then + CDROM="$(awk '/ \/live\/image /{print $1;exit 0;}' /proc/mounts)" + else # old unionfs layout: + CDROM="$(awk '/ \/cdrom /{print $1;exit 0;}' /proc/mounts)" + fi fi -# Now umount everything but root +# Umount everything but root log_begin_msg "Unmounting file systems." # Be safe in case someone messed with /etc/mtab @@ -162,7 +169,9 @@ fi for i in /dev/loop*; do losetup -d $i 2>/dev/null; done # Remove remaining unused modules (Kernel 2.4) -rmmod -a >/dev/null 2>&1 +# rmmod -a >/dev/null 2>&1 + +umount -t notmpfs,nosysfs,noproc,nousbfs -adrvf 1>/dev/null 2>&1 log_end_msg 0 @@ -171,14 +180,14 @@ log_end_msg 0 if [ -z "$INSTALLED" -a -z "$NOPROMPT" ]; then # do not prompt for removal when running in grml2ram mode: - if ! mount | grep -q 'on /cdrom ' ; then + if ! mount | grep -qe 'on /cdrom' -qe 'on /live/image' ; then echo "CD not mounted, nothing to eject therefore." else - umount -l /cdrom + [ -d /live/image ] && umount -l /live/image + [ -d /cdrom ] && umount -l /cdrom [ -n "$CDROM" -a -z "$NOEJECT" ] && eject -p "$CDROM" 2>/dev/null - echo "" - echo "${CYAN}Please remove CD, close cdrom drive and hit return.${NORMAL}" - read + echo + read -s -p "${GREEN}Please remove CD, close cdrom drive and hit return [auto 2 minutes].${NORMAL}" -t 120 a fi fi