Merge remote-tracking branch 'upstream/master' mika/debian
authorMichael Prokop <mika@grml.org>
Tue, 28 Jun 2016 08:42:17 +0000 (10:42 +0200)
committerMichael Prokop <mika@grml.org>
Tue, 28 Jun 2016 08:42:17 +0000 (10:42 +0200)
git://anonscm.debian.org/debian-live/live-boot.git

Conflicts:
backend/initramfs-tools/live.hook
components/0020-read-only
components/9990-aaa-fixme.sh
components/9990-cmdline-old
debian/changelog

22 files changed:
Makefile
backend/initramfs-tools/live.hook
components/9990-cmdline-old
components/9990-grml-networking.sh [new file with mode: 0644]
components/9990-initramfs-tools.sh
components/9990-main.sh
components/9990-misc-helpers.sh
components/9990-netbase.sh
components/9990-networking.sh
components/9990-select-eth-device.sh
debian/changelog
debian/control
debian/gbp.conf [new file with mode: 0644]
debian/live-boot-grml-doc.install [moved from debian/live-boot-doc.install with 100% similarity]
debian/live-boot-grml-initramfs-tools.postinst [moved from debian/live-boot-initramfs-tools.postinst with 100% similarity]
debian/live-boot-grml-initramfs-tools.triggers [new file with mode: 0644]
debian/live-boot-grml.bug-presubj [moved from debian/live-boot.bug-presubj with 100% similarity]
debian/live-boot-grml.bug-script [moved from debian/live-boot.bug-script with 100% similarity]
debian/live-boot-grml.init [new file with mode: 0644]
debian/live-boot-grml.install [moved from debian/live-boot.install with 100% similarity]
debian/live-boot-grml.lintian-overrides [new file with mode: 0644]
debian/rules

index 082bf1e..7be7e68 100644 (file)
--- a/Makefile
+++ b/Makefile
@@ -59,8 +59,8 @@ install:
        cp frontend/* $(DESTDIR)/bin
 
        # Installing docs
-       mkdir -p $(DESTDIR)/usr/share/doc/live-boot
-       cp -r COPYING $(DESTDIR)/usr/share/doc/live-boot
+       mkdir -p $(DESTDIR)/usr/share/doc/live-boot-grml
+       cp -r COPYING $(DESTDIR)/usr/share/doc/live-boot-grml
 
        # Installing manpages
        for MANPAGE in manpages/en/*; \
@@ -94,7 +94,7 @@ uninstall:
        rmdir --ignore-fail-on-non-empty $(DESTDIR)/usr > /dev/null 2>&1 || true
 
        # Uninstalling docs
-       rm -rf $(DESTDIR)/usr/share/doc/live-boot
+       rm -rf $(DESTDIR)/usr/share/doc/live-boot-grml
        rmdir --ignore-fail-on-non-empty $(DESTDIR)/usr/share/doc > /dev/null 2>&1 || true
        rmdir --ignore-fail-on-non-empty $(DESTDIR)/usr/share > /dev/null 2>&1 || true
        rmdir --ignore-fail-on-non-empty $(DESTDIR)/usr > /dev/null 2>&1 || true
index 8337a64..ab843a7 100755 (executable)
@@ -16,6 +16,12 @@ do
        fi
 done
 
+# Grml version information:
+if [ -r /etc/grml_version ]
+then
+       cp /etc/grml_version "${DESTDIR}"/etc
+fi
+
 # Checking live-boot
 if [ ! -e /bin/live-boot ]
 then
@@ -233,4 +239,11 @@ done
 #mkdir -p "${DESTDIR}/etc"
 #cp -p /etc/nsswitch.conf "${DESTDIR}/etc"
 
+# vlan support
+if [ -x /sbin/vconfig ]
+then
+       copy_exec /sbin/vconfig
+       manual_add_modules 8021q
+fi
+
 [ "${QUIET}" ] || echo .
index 1549bb4..f04c0ff 100755 (executable)
@@ -23,6 +23,12 @@ Cmdline_old ()
                                export DNSSERVERS
                                unset DNS
                                ;;
+
+                       bootid=*)
+                               BOOTID="${_PARAMETER#bootid=}"
+                               export BOOTID
+                               ;;
+
                        dhcp)
                                # Force dhcp even while netbooting
                                # Use for debugging in case somebody works on fixing dhclient
@@ -33,12 +39,13 @@ Cmdline_old ()
                        nodhcp)
                                DHCP=""
                                export DHCP
+                               NODHCP="Yes"
+                               export NODHCP
                                ;;
 
                        ethdevice=*)
-                               DEVICE="${_PARAMETER#ethdevice=}"
-                               ETHDEVICE="${DEVICE}"
-                               export DEVICE ETHDEVICE
+                               ETHDEVICE="${_PARAMETER#ethdevice=}"
+                               export ETHDEVICE
                                ;;
 
                        ethdevice-timeout=*)
@@ -84,19 +91,20 @@ Cmdline_old ()
                                export FROMISO
                                ;;
 
+                       ignore_bootid)
+                               IGNORE_BOOTID="Yes"
+                               export IGNORE_BOOTID
+                               ;;
+
                        ignore_uuid)
                                IGNORE_UUID="true"
                                export IGNORE_UUID
                                ;;
 
                        ip=*)
-                               STATICIP="${_PARAMETER#ip=}"
-
-                               if [ -z "${STATICIP}" ]
-                               then
-                                       STATICIP="frommedia"
-                               fi
-
+                               # copy complete ip=args into staticip, and
+                               # keep multiple uses.
+                               STATICIP="${STATICIP} ${_PARAMETER}"
                                export STATICIP
                                ;;
 
@@ -145,6 +153,11 @@ Cmdline_old ()
                                export NFS_COW
                                ;;
 
+                       nodhcphostname)
+                               NODHCPHOSTNAME="Yes"
+                               export NODHCPHOSTNAME
+                               ;;
+
                        nofstab)
                                NOFSTAB="true"
                                export NOFSTAB
@@ -246,6 +259,11 @@ Cmdline_old ()
                                UNIONTYPE="${_PARAMETER#union=}"
                                export UNIONTYPE
                                ;;
+
+                       vlan=*)
+                               VLANS="${VLANS} ${_PARAMETER#vlan=}"
+                               export VLANS
+                               ;;
                esac
        done
 
diff --git a/components/9990-grml-networking.sh b/components/9990-grml-networking.sh
new file mode 100644 (file)
index 0000000..394d011
--- /dev/null
@@ -0,0 +1,149 @@
+#!/bin/sh
+
+#set -e
+
+Grml_Networking () {
+
+if [ -n "${NONETWORKING}" ]; then
+   return 0
+fi
+
+modprobe af_packet # req'd for DHCP
+
+# initialize udev
+# (this /might/ be required for firmware loading to complete)
+if grep -q noudev /proc/cmdline; then
+   log_begin_msg "Networking: Skipping udev as requested via bootoption noudev."
+else
+   udevadm trigger
+   udevadm settle
+fi
+
+if [ -n "${IP}" ]; then
+   # call into initramfs-tools provided network setup functions, so basic
+   # networking is fine.
+   log_begin_msg "Networking: Waiting for basic network to come up..."
+   configure_networking
+fi
+
+# prepare a new /etc/network/interfaces file (and, possibly, a new /etc/resolv.conf)
+IFFILE="/root/etc/network/interfaces"
+if [ -L /root/etc/resolv.conf ] ; then
+  # assume we have resolvconf
+  RESOLVCONF=/root/etc/resolvconf/resolv.conf.d/base
+else
+  RESOLVCONF="/root/etc/resolv.conf"
+fi
+
+# config for loopback networking
+cat > $IFFILE << EOF
+# Initially generated on boot by initramfs' 23networking.
+
+auto lo
+iface lo inet loopback
+
+EOF
+
+unset HOSTNAME
+
+# generate config for each present network device
+for interface in /sys/class/net/eth* /sys/class/net/ath* /sys/class/net/wlan*; do
+    [ -e ${interface} ] || continue
+    interface=$(basename ${interface})
+    method="dhcp"
+
+    # NODHCP or a previously run ipconfig mean that ifupdown should never
+    # touch this interface (IP-stack wise).
+    netconfig=/run/net-${interface}.conf
+    if [ -n "$NODHCP" ] || [ -e "${netconfig}" ]; then
+        method="manual"
+    fi
+
+    # if boot option "nodhcp" is set but also boot option "dhcp" is
+    # set, then dhcp should win over it as we default to dhcp and if
+    # nodhcp is used as default boot option but "dhcp" is added then it
+    # would be confusing to not get a working network setup
+    if [ "$DHCP" = "true" ] ; then
+        method="dhcp"
+    fi
+
+    if [ -n "$VLANS" ] ; then
+      modprobe 8021q
+
+      # vlan=<vid>:<phydevice>
+      for line in $(echo $VLANS | sed 's/ /\n'/) ; do
+        vlandev=${line#*:}
+        vlanid=${line%:*}
+
+        if [ -n "$vlandev" ] && [ -n "$vlanid" ] ; then
+          case "$vlandev" in
+            "$interface")
+              vlan_raw_dev=$interface
+              interface="${vlandev}.${vlanid}"
+              ;;
+          esac
+        fi
+      done
+    fi
+
+    if [ -n "$vlan_raw_dev" ] ; then
+      cat >> $IFFILE << EOF
+auto ${interface}
+iface ${interface} inet ${method}
+        vlan-raw-device $vlan_raw_dev
+EOF
+    else
+      cat >> $IFFILE << EOF
+allow-hotplug ${interface}
+iface ${interface} inet ${method}
+EOF
+    fi
+
+    unset vlandev vlanid vlan_raw_dev # unset variables to have clean state for next device
+
+    # DNS for resolvconf and /etc/resolv.conf
+    if [ -e "${netconfig}" ]; then
+        . "${netconfig}"
+        if [ -n "${DNSDOMAIN}" ]; then
+            echo "    dns-search ${DNSDOMAIN}" >> $IFFILE
+        fi
+        # make sure we don't have any 0.0.0.0 nameservers
+        IPV4DNSLIST=""
+        for IPV4DNS in ${IPV4DNS0} ${IPV4DNS1}; do
+            [ -n "${IPV4DNS}" ] || continue
+            [ "${IPV4DNS}" != "0.0.0.0" ] || continue
+            IPV4DNSLIST="${IPV4DNSLIST}${IPV4DNS} "
+        done
+        if [ -n "${IPV4DNSLIST}" ]; then
+            echo "    dns-nameservers ${IPV4DNSLIST}" >> $IFFILE
+            for IPV4DNS in ${IPV4DNSLIST}; do
+                echo "nameserver ${IPV4DNS}" >> $RESOLVCONF
+            done
+        fi
+    fi
+
+    if [ -z "$NODHCPHOSTNAME" -a -n "$HOSTNAME" ]; then
+        echo $HOSTNAME > /root/etc/hostname
+    fi
+
+    unset DEVICE IPV4ADDR IPV4BROADCAST IPV4NETMASK IPV4GATEWAY IPV4DNS0 IPV4DNS1 HOSTNAME DNSDOMAIN NISDOMAIN ROOTSERVER ROOTPATH filename
+    unset IPV4DNS IPV4DNSLIST
+
+    echo>> $IFFILE
+done
+
+# dns bootoption
+if [ -n "$DNSSERVERS" ]
+then
+       # disable any existing entries
+       if [ -r $RESOLVCONF ]
+       then
+               sed -i 's/nameserver/# nameserver/' $RESOLVCONF
+       fi
+       for i in $DNSSERVERS
+       do
+               echo "nameserver $i" >> $RESOLVCONF
+       done
+fi
+
+}
index eb11d23..cdb00db 100755 (executable)
@@ -2,6 +2,17 @@
 
 #set -e
 
+# we definitely want this stuff visible
+log_failure_msg()
+{
+        printf "Failure: $@\n"
+}
+
+log_warning_msg()
+{
+        printf "Warning: $@\n"
+}
+
 log_wait_msg ()
 {
        # Print a message and wait for enter
@@ -52,14 +63,20 @@ panic()
        printf "\n\n"
        printf "  \033[1;37mBOOT FAILED!\033[0m\n"
        printf "\n"
-       printf "  This Live System image failed to boot.\n\n"
+       printf "  This image failed to boot.\n\n"
+
+       printf "  Please file a bug at your distributors bug tracking system, making\n"
+       printf "  sure to note the exact version, name and distribution of the image\n"
+       printf "  you were attempting to boot.\n\n"
 
-       printf "  Please file a bug against the 'live-boot' package or email the Live Systems\n"
-       printf "  mailing list at <debian-live@lists.debian.org>, making sure to note the\n"
-       printf "  exact version, name and distribution of the image you were attempting to boot.\n\n"
+       if [ -r /etc/grml_version ]
+       then
+               GRML_VERSION="$(cat /etc/grml_version)"
+               printf "  $GRML_VERSION\n\n"
+       fi
 
        printf "  The file ${LIVELOG} contains some debugging information but booting with the\n"
-       printf "  ${DEBUG} command-line parameter will greatly increase its verbosity which is\n"
+       printf "  ${DEBUG}=1 command-line parameter will greatly increase its verbosity which is\n"
        printf "  extremely useful when diagnosing issues.\n\n"
 
        if [ -n "${panic}" ]; then
index e5884f9..0c0bd68 100755 (executable)
@@ -193,6 +193,8 @@ Live ()
 
        Swap
 
+       Grml_Networking
+
        exec 1>&6 6>&-
        exec 2>&7 7>&-
        kill ${tailpid}
index 1a06ccf..f3e4d72 100755 (executable)
@@ -15,6 +15,42 @@ is_live_path()
        return 1
 }
 
+grml_match_bootid()
+{
+       path="$1"
+
+       if [ -n "$IGNORE_BOOTID" ] ; then
+               echo " * Ignoring verification of bootid.txt as requested via ignore_bootid.">>/boot.log
+               return 0
+       fi
+
+       if [ -n "$BOOTID" ] && ! [ -r "${path}/conf/bootid.txt" ] ; then
+               echo "  * Warning: bootid=... specified but no bootid.txt found on currently requested device.">>/boot.log
+               return 1
+       fi
+
+       [ -r "${path}/conf/bootid.txt" ] || return 0
+
+       bootid_conf=$(cat "${path}/conf/bootid.txt")
+
+       if [ -z "$BOOTID" -a -z "$IGNORE_BOOTID" ]
+       then
+               echo " * Warning: bootid.txt found but ignore_bootid / bootid=.. bootoption missing...">>/boot.log
+               return 1
+       fi
+
+       if [ "$BOOTID" = "$bootid_conf" ]
+       then
+               echo " * Successfully verified /conf/bootid.txt from ISO, continuing... ">>/boot.log
+       else
+               echo " * Warning: BOOTID of ISO does not match. Retrying and continuing search...">>/boot.log
+               return 1
+       fi
+
+       return 0
+}
+
+
 matches_uuid ()
 {
        if [ "${IGNORE_UUID}" ] || [ ! -e /conf/uuid.conf ]
@@ -214,7 +250,7 @@ check_dev ()
                fi
 
                if is_live_path ${mountpoint} && \
-                       ([ "${skip_uuid_check}" ] || matches_uuid ${mountpoint})
+                       ([ "${skip_uuid_check}" ] || grml_match_bootid ${mountpoint})
                then
                        echo ${mountpoint}
                        return 0
@@ -310,19 +346,6 @@ find_livefs ()
                                        return 0
                                fi
                        done
-               elif [ "${fstype}" = "squashfs" -o \
-                       "${fstype}" = "btrfs" -o \
-                       "${fstype}" = "ext2" -o \
-                       "${fstype}" = "ext3" -o \
-                       "${fstype}" = "ext4" -o \
-                       "${fstype}" = "jffs2" ]
-               then
-                       # This is an ugly hack situation, the block device has
-                       # an image directly on it.  It's hopefully
-                       # live-boot, so take it and run with it.
-                       ln -s "${devname}" "${devname}.${fstype}"
-                       echo "${devname}.${fstype}"
-                       return 0
                fi
        done
 
index 70f97b8..df8d080 100755 (executable)
@@ -49,7 +49,6 @@ EOF
                        ifaddress="$(echo ${ifline} | cut -f2 -d ':')"
                        ifnetmask="$(echo ${ifline} | cut -f3 -d ':')"
                        ifgateway="$(echo ${ifline} | cut -f4 -d ':')"
-                       nameserver="$(echo ${ifline} | cut -f5 -d ':')"
 
 cat >> "${IFFILE}" << EOF
 allow-hotplug ${ifname}
@@ -67,17 +66,6 @@ cat >> "${IFFILE}" << EOF
 EOF
 
                        fi
-
-                       if [ -n "${nameserver}" ]
-                       then
-                               if [ -e "${DNSFILE}" ]
-                               then
-                                       grep -v ^nameserver "${DNSFILE}" > "${DNSFILE}.tmp"
-                                       mv "${DNSFILE}.tmp" "${DNSFILE}"
-                               fi
-
-                               echo "nameserver ${nameserver}" >> "${DNSFILE}"
-                       fi
                done
        else
                if [ -z "${NETBOOT}" ] || [ -n "${DHCP}" ]
index 9613364..d5ed0fe 100755 (executable)
@@ -44,7 +44,7 @@ Device_from_bootif ()
 
                                if [ "$bootif_mac" = "$current_mac" ]
                                then
-                                       DEVICE=${device##*/}
+                                       ETHDEVICE="${device##*/},$ETHDEVICE" # use ethdevice
                                        break
                                fi
                        fi
@@ -52,6 +52,24 @@ Device_from_bootif ()
        fi
 }
 
+get_ipconfig_para()
+{
+       if [ $# != 1 ] ; then
+               echo "Missin parameter for $0"
+               return
+       fi
+       devname=$1
+       for ip in ${STATICIP} ; do
+               case $ip in
+                       *:$devname:*)
+                       echo $ip
+                       return
+                       ;;
+               esac
+       done
+       echo $devname
+}
+
 do_netsetup ()
 {
        modprobe -q af_packet # For DHCP
@@ -62,8 +80,20 @@ do_netsetup ()
        [ -n "$ETHDEV_TIMEOUT" ] || ETHDEV_TIMEOUT=15
        echo "Using timeout of $ETHDEV_TIMEOUT seconds for network configuration."
 
-       if [ -z "${NETBOOT}" ] && [ -z "${FETCH}" ] && [ -z "${HTTPFS}" ] && [ -z "${FTPFS}" ]
-       then
+       # Our modus operandi for getting a working network setup is this:
+       # * If ip=* is set, pass that to ipconfig and be done
+       # * Else, try dhcp on all devices in this order:
+       #   ethdevice= bootif= <all interfaces>
+
+       ALLDEVICES="$(cd /sys/class/net/ && ls -1 2>/dev/null | grep -v '^lo$' )"
+
+       # Turn on all interfaces before doing anything, to avoid timing problems
+       # during link negotiation.
+       echo "Net: Turning on all device links..."
+       for device in ${ALLDEVICES}; do
+               ipconfig -c none -d $device -t 1 2>/dev/null >/dev/null
+       done
+
                # See if we can select the device from BOOTIF
                Device_from_bootif
 
@@ -73,14 +103,7 @@ do_netsetup ()
                if [ -z "$ETHDEVICE" ]
                then
                        echo "If you want to boot from a specific device use bootoption ethdevice=..."
-                       for device in /sys/class/net/*
-                       do
-                               dev=${device##*/}
-                               if [ "$dev" != "lo" ]
-                               then
-                                       ETHDEVICE="$ETHDEVICE $dev"
-                               fi
-                       done
+                       ETHDEVICE="$ALLDEVICES"
                fi
 
                # split args of ethdevice=eth0,eth1 into "eth0 eth1"
@@ -89,42 +112,29 @@ do_netsetup ()
                        devlist="$devlist $device"
                done
 
-               # this is tricky (and ugly) because ipconfig sometimes just hangs/runs into
-               # an endless loop; if execution fails give it two further tries, that's
-               # why we use '$devlist $devlist $devlist' for the other for loop
-               for dev in $devlist $devlist $devlist
-               do
-                       echo "Executing ipconfig -t $ETHDEV_TIMEOUT $dev"
-                       ipconfig -t "$ETHDEV_TIMEOUT" $dev | tee -a /netboot.config &
-                       jobid=$!
-                       sleep "$ETHDEV_TIMEOUT" ; sleep 1
-                       if [ -r /proc/"$jobid"/status ]
-                       then
-                               echo "Killing job $jobid for device $dev as ipconfig ran into recursion..."
-                               kill -9 $jobid
+               for dev in $devlist ; do
+                       param="$(get_ipconfig_para $dev)"
+                       if [ -n "$NODHCP" ] && [ "$param" = "$dev" ] ; then
+                               echo "Ignoring network device $dev due to nodhcp." | tee -a /boot.log
+                               continue
                        fi
+                       echo "Executing ipconfig -t $ETHDEV_TIMEOUT $param"
+                       ipconfig -t "$ETHDEV_TIMEOUT" "$param" | tee -a /netboot.config
 
                        # if configuration of device worked we should have an assigned
                        # IP address, if so let's use the device as $DEVICE for later usage.
                        # simple and primitive approach which seems to work fine
-                       if ifconfig $dev | grep -q 'inet.*addr:'
-                       then
-                               export DEVICE="$dev"
-                               break
-                       fi
-               done
-       else
-               for interface in ${DEVICE}; do
-                       ipconfig -t "$ETHDEV_TIMEOUT" ${interface} | tee /netboot-${interface}.config
-
-                       [ -e /run/net-${interface}.conf ] && . /run/net-${interface}.conf
 
-                       if [ "$IPV4ADDR" != "0.0.0.0" ]
-                       then
-                               break
+                       IPV4ADDR="0.0.0.0"
+                       if [ -e "/run/net-${device}.conf" ]; then
+                               . /run/net-${device}.conf
+                       fi
+                       if [ "${IPV4ADDR}" != "0.0.0.0" ]; then
+                               export DEVICE="$dev $DEVICE"
+                               # break  # exit loop as we just use the irst
                        fi
                done
-       fi
+       unset devlist
 
        for interface in ${DEVICE}
        do
index c8f36b0..133d4b1 100755 (executable)
@@ -49,21 +49,32 @@ Select_eth_device ()
                        return
                fi
 
-               # If user force to use specific device, write it
-               for ARGUMENT in ${LIVE_BOOT_CMDLINE}
-               do
-                       case "${ARGUMENT}" in
-                               live-netdev=*)
-                               NETDEV="${ARGUMENT#live-netdev=}"
-                               echo "DEVICE=$NETDEV" >> /conf/param.conf
-                               echo "Found live-netdev parameter, forcing to to use network device $NETDEV."
-                               return
-                               ;;
-                       esac
-               done
-       else
-               l_interfaces="$DEVICE"
-       fi
+                # If user force to use specific device, write it
+                for ARGUMENT in ${LIVE_BOOT_CMDLINE}
+                do
+                        case "${ARGUMENT}" in
+                                live-netdev=*)
+                                NETDEV="${ARGUMENT#live-netdev=}"
+                                # net device could be specified by MAC address
+                                hex="[0-9A-Fa-f][0-9A-Fa-f]"
+                                case "${NETDEV}" in
+                                    ${hex}:${hex}:${hex}:${hex}:${hex}:${hex})
+                                        # MAC address; record it and select later
+                                        netdev_mac_addr="${NETDEV}"
+                                        ;;
+                                    *)
+                                        # interface name
+                                        echo "DEVICE=$NETDEV" >> /conf/param.conf
+                                        echo "Found live-netdev parameter, forcing to to use network device $NETDEV."
+                                        return
+                                        ;;
+                                esac
+                                ;;
+                        esac
+                done
+        else
+                l_interfaces="$DEVICE"
+        fi
 
        found_eth_dev=""
        while true
@@ -79,30 +90,40 @@ Select_eth_device ()
 
                echo ''
 
-               for step in 1 2 3 4 5
-               do
-                       for interface in $l_interfaces
-                       do
-                               carrier=$(cat /sys/class/net/$interface/carrier \
-                                       2>/dev/null)
-                               # link detected
+                for step in 1 2 3 4 5
+                do
+                        for interface in $l_interfaces
+                        do
+                            if [ -z "$netdev_mac_addr" ]; then
+                                carrier=$(cat /sys/class/net/$interface/carrier \
+                                        2>/dev/null)
+                                # link detected
 
-                               case "${carrier}" in
-                                       1)
-                                               echo "Connected $interface found"
-                                               # inform initrd's init script :
-                                               found_eth_dev="$found_eth_dev $interface"
-                                               ;;
-                               esac
-                       done
-                       if [ -n "$found_eth_dev" ]
-                       then
-                               echo "DEVICE='$found_eth_dev'" >> /conf/param.conf
-                               return
-                       else
-                               # wait a bit
-                               sleep 1
-                       fi
-               done
-       done
+                                case "${carrier}" in
+                                        1)
+                                                echo "Connected $interface found"
+                                                # inform initrd's init script :
+                                                found_eth_dev="$found_eth_dev $interface"
+                                                ;;
+                                esac
+                            else
+                                # MAC addr given, check for that
+                                mac_addr=$(ifconfig "$interface" \
+                                                  | grep HWaddr \
+                                                  | { read _ _ _ _ mac_addr; echo $mac_addr; })
+                                if [ "$mac_addr" = "$netdev_mac_addr" ]; then
+                                    found_eth_dev="$interface"
+                                fi
+                            fi
+                        done
+                        if [ -n "$found_eth_dev" ]
+                        then
+                                echo "DEVICE='$found_eth_dev'" >> /conf/param.conf
+                                return
+                        else
+                                # wait a bit
+                                sleep 1
+                        fi
+                done
+        done
 }
index c0382ab..29fe1fb 100644 (file)
@@ -12,6 +12,22 @@ live-boot (1:20160511) unstable; urgency=medium
 
  -- Raphaël Hertzog <hertzog@debian.org>  Wed, 11 May 2016 11:40:37 +0200
 
+live-boot (1:20151213+grml.1) unstable; urgency=medium
+
+  [ Evgeni Golov ]
+  * Merge latest Debian changes.
+  * [aea94ce] add gbp.conf
+  * [9f0266a] fix "unexpected operator" error when stopping live-boot
+  * [83abdd6] Revert "restore support for old persistence media"
+  * [09d8468] remove debian/patches
+  * [0c43d97] make package native as in Debian
+  * [1a226f4] Revert "use auto instead of allow-hotplug in generated /e/n/interfaces"
+
+  [ Riccardo Murri ]
+  * [3f6c7f2] Allow selecting boot eth dev by MAC address
+
+ -- Evgeni Golov <evgeni@grml.org>  Thu, 07 Jan 2016 08:47:27 +0100
+
 live-boot (1:20151213) unstable; urgency=medium
 
   [ Iain R. Learmonth ]
@@ -50,6 +66,27 @@ live-boot (5.0~a5-1) unstable; urgency=low
 
  -- Daniel Baumann <mail@daniel-baumann.ch>  Sun, 23 Aug 2015 10:55:32 +0200
 
+live-boot (5.0~a4-1+grml.1) unstable; urgency=medium
+
+  [ Evgeni Golov ]
+  * Import 5.0~a4-1 from Debian.
+  * [3a7cc5f] drop stop-using-etc-fstab.d.patch, applied upstream
+  * [ee5831d] Drop genext2fs from Depends, live-snapshot is long gone
+  * [8e37c83] update 15_networking_grml.patch against live-boot 5.0
+  * [600ec8b] do not run dh with quilt, we have source format 3.0
+  * [26c670d] drop patches, we have everything in git now
+  * [5f1c62a] create a single debian patch :/
+  * [214cc03] use auto instead of allow-hotplug in generated /e/n/interfaces
+    (Closes: issue1568)
+  * [6795067] backport Allow-selecting-boot-eth-dev-by-MAC-address.patch
+    from upstream
+
+  [ Laurens Vanderhoven ]
+  * [5eb34d4] Allow +2 nameserver entries for dns= boot option
+    (Closes: issue1234)
+
+ -- Evgeni Golov <evgeni@grml.org>  Tue, 18 Aug 2015 14:14:10 +0200
+
 live-boot (5.0~a4-1) unstable; urgency=low
 
   [ Tails developers ]
@@ -131,6 +168,26 @@ live-boot (4.0.2-1) unstable; urgency=low
 
  -- Daniel Baumann <mail@daniel-baumann.ch>  Wed, 10 Dec 2014 10:36:04 +0100
 
+live-boot (4.0.1-1+grml.3) unstable; urgency=medium
+
+  [ Evgeni Golov ]
+  * [ca03a16] update stop-using-etc-fstab.d.patch to latest upstream
+    version
+
+ -- Michael Prokop <mika@grml.org>  Thu, 13 Nov 2014 09:56:07 +0100
+
+live-boot (4.0.1-1+grml.2) unstable; urgency=medium
+
+  * stop using /etc/fstab.d
+
+ -- Evgeni Golov <evgeni@debian.org>  Thu, 30 Oct 2014 07:31:08 +0100
+
+live-boot (4.0.1-1+grml.1) unstable; urgency=medium
+
+  * Import 4.0.1-1 from Debian.
+
+ -- Evgeni Golov <evgeni@grml.org>  Sun, 26 Oct 2014 11:31:59 +0100
+
 live-boot (4.0.1-1) unstable; urgency=low
 
   [ victory ]
@@ -148,6 +205,12 @@ live-boot (4.0.1-1) unstable; urgency=low
 
  -- Daniel Baumann <mail@daniel-baumann.ch>  Sat, 25 Oct 2014 14:26:22 +0200
 
+live-boot (4.0.0-1+grml.1) unstable; urgency=medium
+
+  * Import 4.0.0-1 from Debian.
+
+ -- Evgeni Golov <evgeni@grml.org>  Thu, 28 Aug 2014 17:55:20 +0200
+
 live-boot (4.0.0-1) unstable; urgency=low
 
   [ Carlos Zuferri ]
@@ -161,6 +224,12 @@ live-boot (4.0.0-1) unstable; urgency=low
 
  -- Daniel Baumann <mail@daniel-baumann.ch>  Wed, 27 Aug 2014 19:52:09 +0200
 
+live-boot (4.0~alpha21-1+grml.1) UNRELEASED; urgency=medium
+
+  * Import 4.0~alpha21 from Debian.
+
+ -- Evgeni Golov <evgeni@grml.org>  Thu, 10 Apr 2014 08:29:49 +0200
+
 live-boot (4.0~alpha21-1) unstable; urgency=low
 
   * Building with dh --parallel.
@@ -179,6 +248,32 @@ live-boot (4.0~alpha20-1) unstable; urgency=low
 
  -- Daniel Baumann <mail@daniel-baumann.ch>  Mon, 31 Mar 2014 21:38:22 +0200
 
+live-boot (4.0~alpha19-1+grml.3) unstable; urgency=medium
+
+  * [8acc928] try to be smarter when booting a squashfs image from
+              the network and using resolvconf in it.
+
+ -- Evgeni Golov <evgeni@grml.org>  Tue, 25 Mar 2014 17:49:22 +0100
+
+live-boot (4.0~alpha19-1+grml.2) unstable; urgency=medium
+
+  * [805c218] VLAN support via boot option "vlan=<vid>:<phydevice>"
+
+ -- Michael Prokop <mika@grml.org>  Mon, 17 Mar 2014 23:43:24 +0100
+
+live-boot (4.0~alpha19-1+grml.1) unstable; urgency=medium
+
+  * Sync Debian's 4.0~alpha19-1.
+  * update our patches on top of Debian's 4.0~alpha19
+    Droped patches:
+     - 43_fix_udev_usage_in_is_nice_device.patch
+     - 44_fix_mdadm_usage_for_findiso.patch
+  * move Grml-specific patches to a separate subfolder
+  * move reverts/restores of old upstream behaviour to an own subdir
+  * consolidate Grml network related patches into 15_networking_grml.patch
+
+ -- Evgeni Golov <evgeni@grml.org>  Sat, 08 Mar 2014 13:59:28 +0100
+
 live-boot (4.0~alpha19-1) experimental; urgency=low
 
   * Updating copyright notices for 2014.
@@ -298,6 +393,49 @@ live-boot (4.0~a14-1) experimental; urgency=low
 
  -- Daniel Baumann <mail@daniel-baumann.ch>  Fri, 13 Sep 2013 14:17:30 +0200
 
+live-boot (4.0~a13-1+grml.5) unstable; urgency=medium
+
+  * [3b54472] Add support for label "persistence" to forensic mode
+
+ -- Michael Prokop <mika@grml.org>  Sat, 25 Jan 2014 11:45:16 +0100
+
+live-boot (4.0~a13-1+grml.4) unstable; urgency=low
+
+  * [3d46167] Add patch to properly boot from mdadm via findiso boot
+    option [Closes: issue1270] Thanks to thinkgear for the bug report
+    and providing a test VM
+
+ -- Michael Prokop <mika@grml.org>  Tue, 15 Oct 2013 16:58:17 +0200
+
+live-boot (4.0~a13-1+grml.3) unstable; urgency=low
+
+  * [79dceec] Update 9990-misc-helpers.sh to support latest udev version
+    [Closes: issue1278] Thanks to Michael Biebl <biebl@debian.org> for
+    helping in resolve this issue and Ulrich Dangel <mru@spamt.net>
+    for the initial patch
+
+ -- Michael Prokop <mika@grml.org>  Sat, 28 Sep 2013 11:44:52 +0200
+
+live-boot (4.0~a13-1+grml.2) unstable; urgency=low
+
+  * [61895ec] Do not "exit" if boot option nonetworking is set but
+    "return" instead [Closes: issue1276]
+  * [85bddc0] Refresh debian/patches/
+
+ -- Michael Prokop <mika@grml.org>  Fri, 20 Sep 2013 16:38:53 +0200
+
+live-boot (4.0~a13-1+grml.1) unstable; urgency=low
+
+  * Sync Debian's 4.0~a13.
+  * [ba11a22] drop patches that were previously backported from
+    the 4.x upstream branch
+  * [5eca029, 3a80a92, eae4296, e6023f8] refresh patches against
+    new upstream
+  * [2130827] more forwardporting of deprecated persistence options
+  * [c06cdf4] log to boot.log, not live-boot.log
+
+ -- Evgeni Golov <evgeni@grml.org>  Sun, 18 Aug 2013 10:53:12 +0200
+
 live-boot (4.0~a13-1) experimental; urgency=low
 
   * Increasing tftp blocksize to maximum value per RFC 2348, thanks to
@@ -490,6 +628,13 @@ live-boot (4.0~a1-1) experimental; urgency=low
 
  -- Daniel Baumann <mail@daniel-baumann.ch>  Fri, 30 Nov 2012 14:58:46 +0100
 
+live-boot (3.0.1-1+grml.1) unstable; urgency=low
+
+  * Sync Debian's 3.0.1.
+  * Backport some patches from Debian's debian-next (4.x) branch.
+
+ -- Evgeni Golov <evgeni@grml.org>  Wed, 06 Mar 2013 08:07:07 +0100
+
 live-boot (3.0.1-1) unstable; urgency=low
 
   [ chals ]
@@ -547,6 +692,16 @@ live-boot (3.0~b11-1) unstable; urgency=low
 
  -- Daniel Baumann <mail@daniel-baumann.ch>  Wed, 02 Jan 2013 11:32:21 +0100
 
+live-boot (3.0~b10-1+grml.1) unstable; urgency=low
+
+  [ Evgeni Golov ]
+  * [795263e] refresh 29_support_dns_in_initramfs.patch against
+    current upstream
+  * [2045fef] drop 43_do_not_fix_mountpoints_with_live-persistence.patch,
+    applied upstream
+
+ -- Michael Prokop <mika@grml.org>  Tue, 18 Dec 2012 01:41:16 +0100
+
 live-boot (3.0~b10-1) unstable; urgency=low
 
   [ Daniel Baumann ]
@@ -572,6 +727,23 @@ live-boot (3.0~b10-1) unstable; urgency=low
 
  -- Daniel Baumann <mail@daniel-baumann.ch>  Mon, 17 Dec 2012 20:22:50 +0100
 
+live-boot (3.0~b9-1+grml.1) unstable; urgency=low
+
+  [ Evgeni Golov ]
+  * [bdc44cd] drop 37_fix_legacy_persistence_handling.patch, applied
+    upstream
+
+  [ Michael Prokop ]
+  * [1aa780a] Refresh patches against current master
+  * [a133107] Add patch to drop nameserver handling from ip= boot
+    parameter
+  * [7782d4f] Add patch to restore support for persistence media with
+    LABEL=custom-ov (credits to Evgeni)
+  * [b7de9b2] Do not fix mountpoints with live-persistence.conf as
+    home-rw/live-rw (credits to Evgeni)
+
+ -- Michael Prokop <mika@grml.org>  Mon, 17 Dec 2012 18:22:27 +0100
+
 live-boot (3.0~b9-1) unstable; urgency=low
 
   [ Tails developers ]
@@ -582,6 +754,16 @@ live-boot (3.0~b9-1) unstable; urgency=low
 
  -- Daniel Baumann <mail@daniel-baumann.ch>  Mon, 10 Dec 2012 20:01:21 +0100
 
+live-boot (3.0~b8-1+grml.1) unstable; urgency=low
+
+  The "sync with Debian's 3.0~b8-1 version" release
+
+  [ Evgeni Golov ]
+  * [ce765d3] refresh patches against Debian's 3.0~b8-1
+  * [b484d6d] allow the use of multiple initramfs hooks and scripts again
+
+ -- Michael Prokop <mika@grml.org>  Thu, 06 Dec 2012 12:51:50 +0100
+
 live-boot (3.0~b8-1) unstable; urgency=low
 
   * Removing eject from recommends, the script that ejects the live medium
@@ -916,6 +1098,76 @@ live-boot (3.0~a28-1) experimental; urgency=low
 
  -- Daniel Baumann <mail@daniel-baumann.ch>  Mon, 04 Jun 2012 17:31:32 +0200
 
+live-boot (3.0~a27-1+grml.7) grml-testing; urgency=low
+
+  * [a488db6] Enable write-mode for persistency related devices in
+    readonly/forensic mode
+
+ -- Michael Prokop <mika@grml.org>  Fri, 14 Sep 2012 17:01:39 +0200
+
+live-boot (3.0~a27-1+grml.6) grml-testing; urgency=low
+
+  [ Lukas Schwaighofer ]
+  * [95fb70f] fixed legacy persistence handling
+
+  [ Michael Prokop ]
+  * [ed79f48] readonly: do not check for "forensic" boot option
+  * [72aebf1] Move changes to scripts/live-premount/readonly into debian
+    patch file
+
+ -- Michael Prokop <mika@grml.org>  Fri, 07 Sep 2012 13:43:08 +0200
+
+live-boot (3.0~a27-1+grml.5) grml-testing; urgency=low
+
+  * [8b51f69] Adjust 15_networking_grml.patch + 27_support_static_ip.patch
+    for klibc's ipconfig /run switch
+  * [bbeb928] Add "Breaks: klibc-utils (<< 2.0-2)" to live-boot-grml-
+    initramfs-tools for /run switch
+  * [cad0077] Refresh debian/patches/35_fix_findiso_umount.patch
+  * [7f450c2] Support overriding "nodhcp" boot option via "dhcp"
+  * [2b065a0] Adjust file permissions also of files that are added during
+    dh_quilt_patch stage
+
+ -- Michael Prokop <mika@grml.org>  Fri, 27 Jul 2012 15:06:38 +0200
+
+live-boot (3.0~a27-1+grml.4) grml-testing; urgency=low
+
+  * [6d32dfe] Check for presence of /tmp/net-${device}.conf before
+    sourcing it [Closes: issue1196] Thanks to Marc 'Zugschlus' Haber for
+    the bugreport and debugging this issue
+
+ -- Michael Prokop <mika@grml.org>  Mon, 23 Jul 2012 17:13:42 +0200
+
+live-boot (3.0~a27-1+grml.3) grml-testing; urgency=low
+
+  * [d978027] 35_fix_findiso_umount.patch: make sure ISO gets unmounted
+    correctly when using findiso/toram. Thanks to Christoph Biedl for the
+    bugreport and the patch
+  * [d621ee2] 34_ignore_unknown_filesystems.patch: also ignore fstype swap
+
+ -- Michael Prokop <mika@grml.org>  Mon, 28 May 2012 12:27:08 +0200
+
+live-boot (3.0~a27-1+grml.2) grml-testing; urgency=low
+
+  * [e161c2c] New patch to ignore "unknown" filesystems in
+    is_supported_fs() [Testing: issue1170]
+
+ -- Michael Prokop <mika@grml.org>  Sun, 20 May 2012 18:54:58 +0200
+
+live-boot (3.0~a27-1+grml.1) grml-testing; urgency=low
+
+  * [3039c63] Sync with Debian's upstream/3.0_a27 (new log file name,
+    persistency reworked,...)
+  * [06185b3] Bump Standards-Version, raise Build-Depends from dh 8 to dh
+    9 + raise compat version to 9
+  * [2998c28] Drop debian/patches/07_support_findiso.patch which is in
+    upstream nowadays
+  * [3967979] Drop deprecated debian/patches/14_no_blkid_on_lenny.patch
+  * [91460b9] Refresh debian/patches/ against new upstream code
+  * [7116647] Drop deprecated debian/patches/28_remove_localized_manpages.patch
+
+ -- Michael Prokop <mika@grml.org>  Wed, 09 May 2012 14:10:37 +0200
+
 live-boot (3.0~a27-1) experimental; urgency=low
 
   [ Daniel Baumann ]
@@ -1089,6 +1341,39 @@ live-boot (3.0~a25-1) unstable; urgency=low
 
  -- Daniel Baumann <mail@daniel-baumann.ch>  Mon, 06 Feb 2012 23:27:38 +0100
 
+live-boot (3.0~a24-1+grml.2) grml-testing; urgency=low
+
+  [ Ulrich Dangel ]
+  * [87a8e76] Append nameservers provided via dns bootoption into
+    initramfs resolv.conf
+
+  [ Michael Prokop ]
+  * [1d25495] Add genext2fs to depends [Closes: issue1126] Thanks to
+    Charles A. Hewson for the bugreport
+
+ -- Michael Prokop <mika@grml.org>  Wed, 04 Jan 2012 16:48:38 +0100
+
+live-boot (3.0~a24-1+grml.1) grml-testing; urgency=low
+
+  * Resynchronized with Debian.
+
+  [ Christian Hofstaedtler ]
+  * Resynchronized with Debian.
+  * Drop upstream-applied patch: 01_fix_output_file
+  * Drop upstream-applied patch: 10_validateroot
+  * Drop upstream-applied patch: 25_support_lvm_for_live-media
+  * 07_support_findiso: remove upstream-applied parts
+  * Manually refreshd patch 31_package_rename
+
+  [ Ulrich Dangel ]
+  * Add kms modules to initramfs
+  * Install hook instead of specifying modules.d
+
+  [ Michael Prokop ]
+  * Try loading phram module twice to fix loading issue.
+
+ -- Christian Hofstaedtler <ch@grml.org>  Tue, 06 Dec 2011 22:26:32 +0100
+
 live-boot (3.0~a24-1) unstable; urgency=low
 
   * Removing quotes from udev path_id command to actually execute the
@@ -1195,6 +1480,38 @@ live-boot (3.0~a20-1) unstable; urgency=low
 
  -- Daniel Baumann <mail@daniel-baumann.ch>  Thu, 04 Aug 2011 21:20:47 +0200
 
+live-boot (3.0~a19-1+grml.01) grml-testing; urgency=low
+
+  * Depend on quilt with a version to quiet lintian
+  * Add debian/control headers Origin, Bugs
+
+ -- Christian Hofstaedtler <ch@grml.org>  Wed, 30 Nov 2011 13:24:41 +0100
+
+live-boot (3.0~a19-1+grml.00) unstable; urgency=low
+
+  * Resync with Debian. This brings in:
+    [ Daniel Baumann ]
+    * Updating and correcting sendsigs.omit support for /run (Closes: #628188).
+    * Removing accidentally twice included English files when installing manpages.
+    * Correct rmdir call in top-level Makefiles uninstall target to not fail if there was no prior live-boot installation.
+    * Making references to debian more distribution neutral.
+    * Replacing reference to old alioth page in live-snapshot.
+    * Splitting out documentation so that it can be accesses separately from the initramfs code.
+    * Adding conflicts/replaces for live-boot to live-boot-doc to not break upgrades.
+
+  * Grml changes:
+    [ Ulrich Dangel ]
+    * [8424e93] Use quilt instead of dpatch
+    * [86ca4d5] Remove old manpage live-snapshot.it.1.txt
+    * [7fb9e91] Support comma delimited devices in live-media-path
+    * [6b21c57] Depend on the same live-boot-initramfs-tools/live-boot-backend version.
+  
+    [ Christian Hofstaedtler ]
+    * Rename packages to not clash with Debian.
+    * Resynced with Debian.
+
+ -- Christian Hofstaedtler <ch@grml.org>  Mon, 25 Jul 2011 02:26:40 +0200
+
 live-boot (3.0~a19-1) unstable; urgency=low
 
   * Correct rmdir call in top-level Makefiles uninstall target to not
@@ -1217,6 +1534,51 @@ live-boot (3.0~a18-1) unstable; urgency=low
 
  -- Daniel Baumann <mail@daniel-baumann.ch>  Sat, 11 Jun 2011 11:24:15 +0200
 
+live-boot (3.0~a17-1+grml.01) unstable; urgency=low
+
+  * [6666658] Do not fail in multiarch environment when
+    installing libnss_dns.so.
+  * [ebdefd9] Drop installation of localized manpages
+    from upstream Makefile.
+
+ -- Michael Prokop <mika@grml.org>  Wed, 08 Jun 2011 12:15:23 +0200
+
+live-boot (3.0~a17-1+grml.00) unstable; urgency=low
+
+  [ Christian Hofstaedtler ]
+  * [c9a70fd] Add dpatch support to build process.
+  * [a9ddc0a] Readd Grml patches.
+  * [675f2b2] Remove unused boot scripts.
+  * [c4993d4] Update debian/control for Grml.
+  * [0716b66] Ensure 10validateroot is executable.
+  * [b5b937f] Always honor the "nodhcp" boot option.
+  * [10cf847] Don't mess around with kernel/initramfs-tools' ip=.
+  * [aa93321] Networking_grml: DNS for systems without resolvconf.
+  * [2a859b8] Merge dhcphostname support into 23networking-grml.
+  * [10caf0b] Support DNS in boot environment.
+
+  [ Michael Prokop ]
+  * [6cd3977] Add patch number 19 to revert the toram bootoption
+    to expected behaviour.
+  * [65fa11b] Support dns bootoption.
+
+  [ Ulrich Dangel ]
+  * [df17b43] Support lvm devices for live-media.
+  * [8ff045c] Support raid devices as well.
+  * [2ad3c30] Change output to live-boot.log.
+  * [34b4518] Explicit specify offset parameter for setup_loop.
+    [Closes: issue1003]
+  * [3ac64e5] Remove dba from uploader as this is a Grml project.
+  * [b289379] Support static ip configuration.
+  * [1371673] Improve static version.
+  * [9487c5d] Change nodhcp patch to unset the DHCP option as well.
+  * [1662374] Support nodhcp bootoption.
+  * [7847abd] Ignore devices with no file matching the findiso parameter.
+  * [7158e84] Don't show an error message if /live/image is already
+    unmounted.
+
+ -- Michael Prokop <mika@grml.org>  Sun, 05 Jun 2011 21:29:14 +0200
+
 live-boot (3.0~a17-1) unstable; urgency=low
 
   [ Daniel Baumann ]
index 96fee1b..8140c5a 100644 (file)
@@ -1,23 +1,26 @@
 Source: live-boot
 Section: misc
 Priority: optional
-Maintainer: Live Systems Maintainers <debian-live@lists.debian.org>
-Uploaders: Iain R. Learmonth <irl@debian.org>
+Maintainer: Grml Team <team@grml.org>
 Build-Depends:
  debhelper (>= 9),
 Standards-Version: 3.9.6
-Homepage: https://debian-live.alioth.debian.org/live-boot/
-Vcs-Browser: https://anonscm.debian.org/cgit/debian-live/live-boot.git
-Vcs-Git: https://anonscm.debian.org/git/debian-live/live-boot.git
+Homepage: http://live.debian.net/devel/live-boot/
+Vcs-Browser: http://git.grml.org/?p=live-boot-grml.git
+Vcs-Git: git://git.grml.org/live-boot-grml.git
+Origin: Grml
+Bugs: mailto:bugs@grml.org
 
-Package: live-boot
+Package: live-boot-grml
 Architecture: all
 Depends:
- live-boot-initramfs-tools | live-boot-backend,
+ live-boot-grml-initramfs-tools | live-boot-backend,
  ${misc:Depends},
 Recommends:
- live-boot-doc,
+ live-boot-grml-doc,
  live-tools,
+ eject,
+ file,
  rsync,
  uuid-runtime,
 Suggests:
@@ -25,17 +28,21 @@ Suggests:
  curlftpfs,
  httpfs2,
  wget,
+Conflicts: live-boot
+Replaces: live-boot
+Provides: live-boot
 Description: Live System Boot Components
- The Live Systems project maintains the components to build Debian based Live
- systems and the official Debian Live images themselves.
- .
  live-boot contains the components to configure a live system during the boot
  process (early userspace).
  .
  In addition to live-boot, a backend for the initrd generation is required, such
  as live-boot-initramfs-tools.
+ .
+ Please notice that this package is maintained by the grml.org team.
+ This is NOT a fork of Debian's live-boot, it's just a customized
+ version to better fit Grml's needs.
 
-Package: live-boot-doc
+Package: live-boot-grml-doc
 Section: doc
 Architecture: all
 Depends:
@@ -48,8 +55,12 @@ Description: Live System Boot Components (documentation)
  process (early userspace).
  .
  This package contains the documentation.
+ .
+ Please notice that this package is maintained by the grml.org team.
+ This is NOT a fork of Debian's live-boot, it's just a customized
+ version to better fit Grml's needs.
 
-Package: live-boot-initramfs-tools
+Package: live-boot-grml-initramfs-tools
 Architecture: all
 Depends:
  busybox | busybox-initramfs,
@@ -70,3 +81,7 @@ Description: Live System Boot Components (initramfs-tools backend)
  process (early userspace).
  .
  This package contains the initramfs-tools backend.
+ .
+ Please notice that this package is maintained by the grml.org team.
+ This is NOT a fork of Debian's live-boot, it's just a customized
+ version to better fit Grml's needs.
diff --git a/debian/gbp.conf b/debian/gbp.conf
new file mode 100644 (file)
index 0000000..e2232b4
--- /dev/null
@@ -0,0 +1,2 @@
+[DEFAULT]
+compression=xz
diff --git a/debian/live-boot-grml-initramfs-tools.triggers b/debian/live-boot-grml-initramfs-tools.triggers
new file mode 100644 (file)
index 0000000..6c9f454
--- /dev/null
@@ -0,0 +1 @@
+activate update-initramfs
diff --git a/debian/live-boot-grml.init b/debian/live-boot-grml.init
new file mode 100644 (file)
index 0000000..ab09d2a
--- /dev/null
@@ -0,0 +1,250 @@
+#!/bin/sh
+
+### BEGIN INIT INFO
+# Provides:            live-boot
+# Required-Start:      $syslog bootmisc
+# Required-Stop:
+# Should-Start:                $local_fs
+# Should-Stop:         halt reboot
+# X-Stop-After:                umountroot
+# Default-Start:       S
+# Default-Stop:                0 6
+# Short-Description:   live-boot init script
+# Description:         Resyncs snapshots, evantually caches files in order to
+#                      let remove the media.
+### END INIT INFO
+
+# Authors: Tollef Fog Heen <tfheen@canonical.com>
+#         Marco Amadori <marco.amadori@gmail.com>
+
+PATH=/usr/sbin:/usr/bin:/sbin:/bin
+NAME=live-boot
+SCRIPTNAME=/etc/init.d/${NAME}
+DO_SNAPSHOT=/sbin/live-snapshot
+SNAPSHOT_CONF="/etc/live/boot.d/snapshot.conf"
+
+# Exit if system was not booted by live-boot
+grep -qs boot=live /proc/cmdline || exit 0
+
+# Read snapshot configuration variables
+[ -r ${SNAPSHOT_CONF} ] && . ${SNAPSHOT_CONF}
+
+# Load the VERBOSE setting and other rcS variables
+[ -f /etc/default/rcS ] && . /etc/default/rcS
+
+# 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
+}
+
+do_stop ()
+{
+       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
+}
+
+case "${1}" in
+       start|restart|reload|force-reload|status)
+               [ "${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
+                               ;;
+               esac
+               ;;
+
+       *)
+               log_success_msg "Usage: ${SCRIPTNAME} {start|stop|restart|force-reload}" >&2
+               exit 3
+               ;;
+esac
diff --git a/debian/live-boot-grml.lintian-overrides b/debian/live-boot-grml.lintian-overrides
new file mode 100644 (file)
index 0000000..001198f
--- /dev/null
@@ -0,0 +1,4 @@
+# false positives, not applicable to live systems
+live-boot-grml: init.d-script-missing-dependency-on-remote_fs /etc/init.d/live-boot-grml: required-start
+live-boot-grml: init.d-script-missing-dependency-on-remote_fs /etc/init.d/live-boot-grml: required-stop
+live-boot-grml: init.d-script-possible-missing-stop /etc/init.d/live-boot-grml 1
index 0ed4818..c7f8b71 100755 (executable)
@@ -1,5 +1,9 @@
 #!/usr/bin/make -f
 
+build:
+       # regular build.
+       dh build
+
 %:
        dh ${@} --parallel
 
@@ -7,11 +11,21 @@ override_dh_auto_install:
        dh_auto_install -- DESTDIR=debian/tmp
 
        # Removing useless files
-       rm -f debian/tmp/usr/share/doc/live-boot/COPYING
+       rm -f debian/tmp/usr/share/doc/live-boot-grml/COPYING
+       rm -f debian/lib/live/boot/FIXME
 
        # live-boot-initramfs-tools
-       mkdir -p debian/live-boot-initramfs-tools/usr/share
-       mv debian/tmp/usr/share/initramfs-tools debian/live-boot-initramfs-tools/usr/share
+       mkdir -p debian/live-boot-grml-initramfs-tools/usr/share
+       mv debian/tmp/usr/share/initramfs-tools debian/live-boot-grml-initramfs-tools/usr/share
+
+       # this is needed because dpatch doesn't do file modes on diffs
+       # and we can't execute this fix during build stage as new files
+       # might be installed during dh_quilt_patch
+       chmod a+rx debian/live-boot-grml-initramfs-tools/usr/share/initramfs-tools/scripts/*
+       chmod a+rx debian/live-boot-grml-initramfs-tools/usr/share/initramfs-tools/hooks/*
 
 override_dh_install:
        dh_install --fail-missing
+
+override_dh_installinit:
+       dh_installinit -p live-boot-grml --no-restart-on-upgrade --no-start --update-rcd-params='start 89 0 6 .'