X-Git-Url: http://git.grml.org/?a=blobdiff_plain;f=etc%2Finit.d%2Fgrml-reboot;h=0b735a9eea414d1947fc82da953ba9cf16612f38;hb=9f6a142c655f2965205623219797c43e29dd3efc;hp=a3251f51f753d2b8dd122134904d41554fddc460;hpb=ba4444d29d3c62ceb7c716c921c9a52633793441;p=grml-etc.git diff --git a/etc/init.d/grml-reboot b/etc/init.d/grml-reboot index a3251f5..0b735a9 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 Mär 10 18:45:36 CET 2008 [mika] ################################################################################ export PATH=/sbin:/bin:/usr/bin:/usr/sbin @@ -19,7 +19,7 @@ exec >/dev/console 2>&1 /proc/sys/kernel/printk +# make sure halt/reboot commands are available even if +# someone is using shutdown command: +cat /sbin/halt /sbin/reboot >/dev/null + # 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 +104,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 +150,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 +173,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 +184,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