X-Git-Url: http://git.grml.org/?a=blobdiff_plain;f=debian%2Flive-initramfs.init;h=ac7cd8e182aeeba5bb0087aa88422e546998f65e;hb=a606391b56012c067ae44b20690df5ae39dbc052;hp=4cf767a3d162906f2f030a5f08189ad48010d00a;hpb=76f26cf7153568668df8885ea3626bc6c37bfc31;p=live-boot-grml.git diff --git a/debian/live-initramfs.init b/debian/live-initramfs.init index 4cf767a..ac7cd8e 100644 --- a/debian/live-initramfs.init +++ b/debian/live-initramfs.init @@ -3,10 +3,11 @@ ### BEGIN INIT INFO # Provides: live-initramfs # Required-Start: $syslog -# Required-Stop: $syslog +# Required-Stop: # Should-Start: $local_fs -# Should-Stop: $local_fs -# Default-Start: 1 2 3 4 5 +# Should-Stop: halt reboot +# X-Stop-After: umountroot +# Default-Start: # Default-Stop: 0 6 # Short-Description: live-initramfs init script # Description: Resyncs snapshots, evantually caches files in order to @@ -85,7 +86,8 @@ device_is_USB_flash_drive() [ "$(expr substr ${DEVICE} 1 2)" != "sd" ] && return 1 # check that the device is an USB device - if readlink /sys/block/${DEVICE}/device | grep -q usb + if readlink /sys/block/${DEVICE} | grep -q usb || + readlink /sys/block/${DEVICE}/device | grep -q usb # linux < 2.6.29 then return 0 fi @@ -95,14 +97,17 @@ device_is_USB_flash_drive() do_stop () { - if [ ! -z "${ROOTSNAP}" ] + if ! grep -qs nopersistent /proc/cmdline && grep -qs persistent /proc/cmdline then - ${DO_SNAPSHOT} --resync-string="${ROOTSNAP}" - fi + if [ ! -z "${ROOTSNAP}" ] + then + ${DO_SNAPSHOT} --resync-string="${ROOTSNAP}" + fi - if [ ! -z "${HOMESNAP}" ] - then - ${DO_SNAPSHOT} --resync-string="${HOMESNAP}" + if [ ! -z "${HOMESNAP}" ] + then + ${DO_SNAPSHOT} --resync-string="${HOMESNAP}" + fi fi # check for netboot @@ -111,13 +116,28 @@ do_stop () return 0 fi + # Don't prompt to eject the SD card on Babbage board, where we reuse it + # as a quasi-boot-floppy. Technically this uses a bit of ubiquity + # (archdetect), but since this is mostly only relevant for + # installations, who cares ... + if type archdetect >/dev/null 2>&1 + then + subarch="$(archdetect)" + + case $subarch in + arm*/imx51) + return 0 + ;; + esac + fi + 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) + for path in $(which halt) $(which reboot) /etc/rc?.d /etc/default $(which stty) /bin/plymouth /sbin/usplash_write do cache_path "${path}" done @@ -152,30 +172,37 @@ do_stop () eject -p -m /live/image >/dev/null 2>&1 fi - [ "$prompt" ] || return 0 fi - stty sane < /dev/console - - echo -n -e "\n\n${MESSAGE} and press ENTER to continue:" > /dev/console + [ "$prompt" ] || return 0 - if [ -x /sbin/usplash_write ] + if [ -x /bin/plymouth ] && plymouth --ping then - /sbin/usplash_write "TIMEOUT 86400" - /sbin/usplash_write "TEXT-URGENT ${MESSAGE}" - /sbin/usplash_write "TEXT-URGENT and press ENTER to continue" - fi + plymouth message --text="${MESSAGE} and press ENTER to continue:" + plymouth watch-keystroke > /dev/null + else + stty sane < /dev/console + + printf "\n\n${MESSAGE} and press ENTER to continue:" > /dev/console - read x < /dev/console + if [ -x /sbin/usplash_write ] + then + /sbin/usplash_write "TIMEOUT 86400" + /sbin/usplash_write "TEXT-URGENT ${MESSAGE}" + /sbin/usplash_write "TEXT-URGENT and press ENTER to continue" + fi + + read x < /dev/console + fi fi } case "${1}" in - start|restart|reload|force-reload|status) + restart|reload|force-reload|status) [ "${VERBOSE}" != no ] && log_end_msg 0 ;; - stop) + start|stop) log_begin_msg "${NAME} is resyncing snapshots and caching reboot files..." do_stop @@ -188,6 +215,8 @@ case "${1}" in [ "${VERBOSE}" != no ] && log_end_msg 1 ;; esac + + mount -o remount,ro /live/cow ;; *)