From: Daniel Baumann Date: Thu, 5 Apr 2012 06:05:20 +0000 (+0200) Subject: Moving initscript to live-config. X-Git-Tag: debian/3.0_a26-1~1 X-Git-Url: http://git.grml.org/?p=live-boot-grml.git;a=commitdiff_plain;h=49bcda4f02e85fb1c648fd8fd00b8b989d2de752 Moving initscript to live-config. Keeping the initscript in live-boot is not really maintainable for different init systems. We would need to have, like live-config, several backend packages (live-boot-sysvinit, live-boot-systemd, live-boot-upstart) etc., plus, every combination with the different initrd system backend (initramfs-tools, dracut). --- diff --git a/Makefile b/Makefile index ce0262b..ec67501 100644 --- a/Makefile +++ b/Makefile @@ -42,9 +42,6 @@ build: install: # Installing executables - mkdir -p $(DESTDIR)/lib/live - cp bin/boot.sh $(DESTDIR)/lib/live - mkdir -p $(DESTDIR)/sbin cp bin/live-new-uuid bin/live-snapshot bin/live-swapfile $(DESTDIR)/sbin @@ -80,10 +77,6 @@ install: uninstall: # Uninstalling executables - rm -f $(DESTDIR)/lib/live/boot.sh - rmdir --ignore-fail-on-non-empty $(DESTDIR)/lib/live > /dev/null 2>&1 || true - rmdir --ignore-fail-on-non-empty $(DESTDIR)/lib > /dev/null 2>&1 || true - rm -f $(DESTDIR)/sbin/live-snapshot $(DESTDIR)/sbin/live-swapfile rmdir --ignore-fail-on-non-empty $(DESTDIR)/sbin > /dev/null 2>&1 || true diff --git a/bin/boot.sh b/bin/boot.sh deleted file mode 100644 index a61499c..0000000 --- a/bin/boot.sh +++ /dev/null @@ -1,198 +0,0 @@ -#!/bin/sh - -# Exit if system was not booted by live-boot -grep -qs boot=live /proc/cmdline || exit 0 - -DO_SNAPSHOT=/sbin/live-snapshot -SNAPSHOT_CONF="/etc/live/boot.d/snapshot.conf" - -# Read snapshot configuration variables -[ -r ${SNAPSHOT_CONF} ] && . ${SNAPSHOT_CONF} - -# Define LSB log_* functions. -# Depend on lsb-base (>= 3.0-6) to ensure that this file is present. -. /lib/lsb/init-functions - -# 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 file -L "${path}" | grep -q 'dynamically linked' - then - # ldd output can be of three forms: - # 1. linux-vdso.so.1 => (0x00007fffe3fb4000) - # This is a virtual, kernel shared library and we want to skip it - # 2. libc.so.6 => /lib/libc.so.6 (0x00007f5e9dc0c000) - # We want to cache the third word. - # 3. /lib64/ld-linux-x86-64.so.2 (0x00007f5e9df8b000) - # We want to cache the first word. - ldd "${path}" | while read line - do - if echo "$line" | grep -qs ' => ' - then - continue - elif echo "$line" | grep -qs ' => ' - then - lib=$(echo "${line}" | awk '{ print $3 }') - else - lib=$(echo "${line}" | awk '{ print $1 }') - fi - cache_path "${lib}" - done - fi - - cat "${path}" >/dev/null 2>&1 - fi -} - -get_boot_device() -{ - # search in /proc/mounts for the device that is mounted at /live/image - while read DEVICE MOUNT REST - do - if [ "${MOUNT}" = "/live/image" ] - then - echo "${DEVICE}" - exit 0 - fi - done < /proc/mounts -} - -device_is_USB_flash_drive() -{ - # remove leading "/dev/" and all trailing numbers from input - DEVICE=$(expr substr ${1} 6 3) - - # check that device starts with "sd" - [ "$(expr substr ${DEVICE} 1 2)" != "sd" ] && return 1 - - # check that the device is an USB device - if readlink /sys/block/${DEVICE} | grep -q usb - then - return 0 - fi - - return 1 -} - -log_begin_msg "live-boot: resyncing snapshots and caching reboot files..." - -if ! grep -qs nopersistent /proc/cmdline && grep -qs persistent /proc/cmdline -then - # ROOTSNAP and HOMESNAP are defined in ${SNAPSHOT_CONF} file - if [ ! -z "${ROOTSNAP}" ] - then - ${DO_SNAPSHOT} --resync-string="${ROOTSNAP}" - fi - - if [ ! -z "${HOMESNAP}" ] - then - ${DO_SNAPSHOT} --resync-string="${HOMESNAP}" - fi -fi - -# check for netboot -if [ ! -z "${NETBOOT}" ] || grep -qs netboot /proc/cmdline || grep -qsi root=/dev/nfs /proc/cmdline || grep -qsi root=/dev/cifs /proc/cmdline -then - return 0 -fi - -# check for toram -if grep -qs toram /proc/cmdline -then - 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 [ "${NOPROMPT}" = "Yes" ] -then - prompt= -fi - -for path in $(which halt) $(which reboot) /etc/rc?.d /etc/default $(which stty) /bin/plymouth -do - cache_path "${path}" -done - -for x in $(cat /proc/cmdline) -do - case ${x} in - quickreboot) - QUICKREBOOT="Yes" - ;; - esac -done - -mount -o remount,ro /live/cow - -if [ -z ${QUICKREBOOT} ] -then - # Exit if the system was booted from an ISO image rather than a physical CD - grep -qs find_iso= /proc/cmdline && return 0 - # TODO: i18n - BOOT_DEVICE="$(get_boot_device)" - - if device_is_USB_flash_drive ${BOOT_DEVICE} - then - # do NOT eject USB flash drives! - # otherwise rebooting with most USB flash drives - # failes because they actually remember the - # "ejected" state even after reboot - MESSAGE="Please remove the USB flash drive" - - if [ "${NOPROMPT}" = "usb" ] - then - prompt= - fi - - else - # ejecting is a very good idea here - MESSAGE="Please remove the disc, close the tray (if any)" - - if [ -x /usr/bin/eject ] - then - eject -p -m /live/image >/dev/null 2>&1 - fi - - if [ "${NOPROMPT}" = "cd" ] - then - prompt= - fi - fi - - [ "$prompt" ] || return 0 - - if [ -x /bin/plymouth ] && plymouth --ping - then - 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 - fi -fi diff --git a/debian/live-boot.init b/debian/live-boot.init deleted file mode 100644 index 373df1b..0000000 --- a/debian/live-boot.init +++ /dev/null @@ -1,36 +0,0 @@ -#!/bin/sh - -## live-boot contains the scripts that configure a Debian Live system during -## the boot process (early userspace). -## -## This is the sysvinit script for live-boot. - - -### BEGIN INIT INFO -# Provides: live-boot -# Required-Start: $syslog bootmisc -# Required-Stop: -# Should-Start: $local_fs -# Should-Stop: halt reboot -# Default-Start: S -# Default-Stop: 0 6 -# Short-Description: Debian Live - System Configuration Scripts -# Description: live-boot contains the scripts that configure a Debian -# Live system during the boot process (early userspace). -# X-Start-Before: -# X-Stop-After: umountroot -# X-Interactive: true -### END INIT INFO - -case "${1}" in - stop) - if [ -e /lib/live/boot.sh ] - then - /lib/live/boot.sh - fi - ;; - - start|force-reload|restart) - - ;; -esac diff --git a/debian/live-boot.install b/debian/live-boot.install index 85134eb..79474ce 100644 --- a/debian/live-boot.install +++ b/debian/live-boot.install @@ -1,3 +1,2 @@ -lib sbin usr/share/live-boot diff --git a/debian/live-boot.lintian-overrides b/debian/live-boot.lintian-overrides deleted file mode 100644 index aa345a5..0000000 --- a/debian/live-boot.lintian-overrides +++ /dev/null @@ -1,4 +0,0 @@ -# false positives, not applicable to live systems -live-boot: init.d-script-missing-dependency-on-remote_fs /etc/init.d/live-boot: required-start -live-boot: init.d-script-missing-dependency-on-remote_fs /etc/init.d/live-boot: required-stop -live-boot: init.d-script-possible-missing-stop /etc/init.d/live-boot 1 diff --git a/debian/rules b/debian/rules index 61a5e25..f480990 100755 --- a/debian/rules +++ b/debian/rules @@ -18,6 +18,3 @@ override_dh_builddeb: override_dh_install: dh_install --fail-missing - -override_dh_installinit: - dh_installinit -p live-boot --no-restart-on-upgrade --no-start --update-rcd-params='start 89 0 6 .'