X-Git-Url: http://git.grml.org/?a=blobdiff_plain;f=debian%2Finit;h=149314bef0afb35888d704ed1b48ecaa7ae04694;hb=47527b7666b1a12122a0b17098064e7af745d097;hp=d515c39cac2b1c21df8e53ae7babd3e3827b56fd;hpb=d9ba94a9c03bae6905ff08ece35751eab82781a1;p=live-boot-grml.git diff --git a/debian/init b/debian/init old mode 100755 new mode 100644 index d515c39..149314b --- a/debian/init +++ b/debian/init @@ -24,6 +24,9 @@ DO_SNAPSHOT=/sbin/live-snapshot # Exit if system was not booted by live-initramfs grep -qs boot=live /proc/cmdline || exit 0 +# Exit if the system was booted from an ISO image rather than a physical CD +grep -qs find_iso= /proc/cmdline && exit 0 + # Read configuration variable file if it is present [ -r /etc/live.conf ] && . /etc/live.conf @@ -37,30 +40,30 @@ grep -qs boot=live /proc/cmdline || exit 0 # Try to cache everything we're likely to need after ejecting. This # is fragile and simple-minded, but our options are limited. cache_path() { - path="$1" - - if [ -d "$path" ]; then - find "$path" -type f | xargs cat > /dev/null 2>&1 - elif [ -f "$path" ]; then - if [ -x "$path" ]; then - if file "$path" | grep -q 'dynamically linked'; then - for lib in $(ldd "$path" | awk '{ print $3 }'); do - cache_path "$lib" + path="${1}" + + if [ -d "${path}" ]; then + find "${path}" -type f | xargs cat > /dev/null 2>&1 + elif [ -f "${path}" ]; then + if [ -x "${path}" ]; then + if file "${path}" | grep -q 'dynamically linked'; then + for lib in $(ldd "${path}" | awk '{ print $3 }'); do + cache_path "${lib}" done fi fi - cat "$path" >/dev/null 2>&1 + cat "${path}" >/dev/null 2>&1 fi } do_stop () { if [ ! -z "${ROOTSNAP}" ]; then - $DO_SNAPSHOT --resync-string="${ROOTSNAP}" + ${DO_SNAPSHOT} --resync-string="${ROOTSNAP}" fi if [ ! -z "${HOMESNAP}" ]; then - $DO_SNAPSHOT --resync-string="${HOMESNAP}" + ${DO_SNAPSHOT} --resync-string="${HOMESNAP}" fi # check for netboot @@ -68,12 +71,17 @@ do_stop () return 0 fi - for path in $(which halt) $(which reboot) /etc/rc?.d /etc/default; do - cache_path "$path" + prompt=1 + if grep -qs noprompt /proc/cmdline; then + prompt= + fi + + for path in $(which halt) $(which reboot) /etc/rc?.d /etc/default $(which stty); do + cache_path "${path}" done for x in $(cat /proc/cmdline); do - case $x in + case ${x} in quickreboot) QUICKREBOOT="Yes" ;; @@ -84,10 +92,14 @@ do_stop () if [ -x /usr/bin/eject ] then eject -p -m /live/image >/dev/null 2>&1 + + [ "$prompt" ] || return 0 fi + stty sane < /dev/console + # XXX - i18n - echo "Please remove the disc and close the tray (if any) then press ENTER: " + echo "Please remove the disc and close the tray (if any) then press ENTER: " > /dev/console if [ -x /sbin/usplash_write ]; then /sbin/usplash_write "TIMEOUT 86400" /sbin/usplash_write "TEXT-URGENT Please remove the disc, close the tray (if any)" @@ -98,20 +110,20 @@ do_stop () fi } -case "$1" in +case "${1}" in start|restart|reload|force-reload|status) - [ "$VERBOSE" != no ] && log_end_msg 0 + [ "${VERBOSE}" != no ] && log_end_msg 0 ;; stop) log_begin_msg "${NAME} is resyncing snapshots and caching reboot files..." do_stop - case "$?" in - 0|1) [ "$VERBOSE" != no ] && log_end_msg 0 ;; - 2) [ "$VERBOSE" != no ] && log_end_msg 1 ;; + case "${?}" in + 0|1) [ "${VERBOSE}" != no ] && log_end_msg 0 ;; + 2) [ "${VERBOSE}" != no ] && log_end_msg 1 ;; esac ;; *) - log_success_msg "Usage: $SCRIPTNAME {start|stop|restart|force-reload}" >&2 + log_success_msg "Usage: ${SCRIPTNAME} {start|stop|restart|force-reload}" >&2 exit 3 ;; esac