# Installing executables
mkdir -p $(DESTDIR)/usr/share/initramfs-tools/hooks
- cp backend/initramfs-tools/live.hook $(DESTDIR)/usr/share/initramfs-tools/hooks/live
+ for f in backend/initramfs-tools/*.hook; do \
+ cp $${f} $(DESTDIR)/usr/share/initramfs-tools/hooks/$$(basename $${f} .hook); \
+ done
mkdir -p $(DESTDIR)/usr/share/initramfs-tools/scripts
- cp backend/initramfs-tools/live.script $(DESTDIR)/usr/share/initramfs-tools/scripts/live
+ for f in backend/initramfs-tools/*.script; do \
+ cp $${f} $(DESTDIR)/usr/share/initramfs-tools/scripts/$$(basename $${f} .script); \
+ done
mkdir -p $(DESTDIR)/bin
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/*; \
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
--- /dev/null
+#!/bin/sh
+# hook for adding kms modules
+
+set -e
+
+# initramfs-tools header
+
+PREREQ=""
+prereqs()
+{
+ echo "${PREREQ}"
+}
+
+case "${1}" in
+ prereqs)
+ prereqs
+ exit 0
+ ;;
+esac
+
+. /usr/share/initramfs-tools/hook-functions
+
+for module in i915 radeon nouveau ; do
+ manual_add_modules $module
+done
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
# Some experimental stuff
-case "${LIVE_DNS}" in
- true)
- [ "${QUIET}" ] || echo -n " dns"
+[ "${QUIET}" ] || echo -n " dns"
+
+# /lib/libnss_dns.so.*:a DNS
+# /lib/libnss_files.so.*: /etc/hosts and /etc/passwd
+# /lib/libnss_compat.so.*: /etc/passwd
- # /lib/libnss_dns.so.*:a DNS
- # /lib/libnss_files.so.*: /etc/hosts and /etc/passwd
- # /lib/libnss_compat.so.*: /etc/passwd
+for _SHLIB in $(find /lib -name 'libnss_dns.so.*')
+do
+ copy_exec "${_SHLIB}"
+done
- for _SHLIB in $(find /lib -name 'libnss_dns.so.*')
- do
- copy_exec "${_SHLIB}"
- done
+# might be needed if /etc/hosts is used
+#mkdir -p "${DESTDIR}/etc"
+#cp -p /etc/nsswitch.conf "${DESTDIR}/etc"
- # might be needed if /etc/hosts is used
- #mkdir -p "${DESTDIR}/etc"
- #cp -p /etc/nsswitch.conf "${DESTDIR}/etc"
- ;;
-esac
+# vlan support
+if [ -x /sbin/vconfig ]
+then
+ copy_exec /sbin/vconfig
+ manual_add_modules 8021q
+fi
[ "${QUIET}" ] || echo .
+++ /dev/null
-#!/bin/sh
-
-set -e
-
-# Read cmdline
-for _PARAMETER in $(cat /proc/cmdline)
-do
- case "${_PARAMETER}" in
- module=*)
- _MODULE="${_PARAMETER#module=}"
- ;;
- esac
-done
-
-# Assemble filesystems
-if [ -z "${_MODULE}" ]
-then
- _FILESYSTEMS="/live/image/live/filesystem.squashfs"
-else
- for _FILESYSTEM in _MODULE
- do
- _FILESYSTEMS="${_FILESYSTEMS} /live/image/live/${_FILESYSTEM}"
- done
-fi
-
-# Exit if system is not debian live
-if [ ! -d /live/image ]
-then
- echo "E: live-toram only works on Debian Live systems."
-
- exit 1
-fi
-
-# Exit if filesystem not accessible
-for _FILESYSTEM in ${_FILESYSTEMS}
-do
- if [ ! -r ${_FILESYSTEM} ]
- then
- echo "E: ${_FILESYSTEM}: No such file"
- echo "I: live-toram already run?"
-
- exit 1
- fi
-done
-
-# Exit if user is unprivileged
-if [ "$(id -u)" -ne 0 ]
-then
- echo "E: need root privileges"
-
- exit 1
-fi
-
-# Exit if not enough free memory
-_SIZE=0
-
-for _FILESYSTEM in ${_FILESYSTEMS}
-do
- _SIZE="$((${_SIZE} + $(du ${_FILESYSTEM} | awk '{ print $1 }')))"
- _MEMORY="$(awk '/MemFree/ { print $2 }' /proc/meminfo)"
-done
-
-case ${@} in
- -f|--force)
- echo "W: Ignoring memory constrains as requested"
- ;;
-
- *)
- if [ $_MEMORY -lt $_SIZE ]
- then
- echo "E: not enough free memory available."
- echo "I: images need ${_SIZE}kB, free memory is ${_MEMORY}kB."
-
- exit 1
- fi
- ;;
-esac
-
-# Copying image to memory
-echo "P: Copying images to memory."
-echo "P: This may take a while..."
-
-# FIXME: doesn't work with multiple filesystems
-for _FILESYSTEM in ${_FILESYSTEMS}
-do
- if [ ! -x "$(which rsync 2>/dev/null)" ]
- then
- rsync -a --progress ${_FILESYSTEM} /tmp/live
- else
- cp -av ${_FILESYSTEM} /tmp/live
- fi
-
-LANGUAGE=C LANG=C LC_ALL=C perl << EOF
-open LOOP, '</dev/loop0' or die $!;
-open DEST, '</tmp/live' or die $!;
-ioctl(LOOP, 0x4C06, fileno(DEST)) or die $!
-close LOOP;
-close DEST;
-EOF
-
-done
-
-# Unmounting live media
-_DEVICE="$(awk '/\/live\/image / { print $1 }' /proc/mounts)"
-
-if [ -d /live/image ]
-then
- umount /live/image
- rmdir --ignore-fail-on-non-empty /live/image || true
-fi
-
-# Ejecting live media if it is not an optical device
-if [ "$(expr substr ${_DEVICE} 1 2)" != "sd" ] && \
- ! readlink /sys/block/$(expr substr ${_DEVICE} 6 3) | grep -q usb
-then
- if [ ! -x "$(which rsync 2>/dev/null)" ]
- then
- eject -p -m ${_DEVICE} >/dev/null 2>&1
- fi
-fi
;;
esac
done
+
+ if grep -qe persistence /proc/cmdline
+ then
+ printf " * Persistence mode enabled, searching for persistency related devices to unlock\n" >/dev/console
+
+ for label in custom-ov home-rw home-sn live-rw live-sn persistence
+ do
+ if blkid -t LABEL="$label" | grep -q '.'
+ then
+ device=$(blkid -t LABEL="$label" | awk -F: '{print $1}')
+ printf " - Setting device %-9s with label '%s' to write mode for persistence mode: " "$device" "$label" >/dev/console
+ blockdev --setrw $device && printf "done\n" >/dev/console || printf "failed\n" >/dev/console
+ fi
+ done
+ fi
+
}
alt_mountpoint="/media"
LIVE_MEDIA_PATH="live"
-HOSTNAME="host"
+HOSTNAME="grml"
mkdir -p "${mountpoint}"
mkdir -p /var/lib/live/boot
BOOTIF="${_PARAMETER#BOOTIF=}"
;;
+ dns=*)
+ DNS=${_PARAMETER#dns=}
+ DNSSERVERS=$(echo ${DNS} | sed 's/,/ /g')
+ 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
nodhcp)
DHCP=""
export DHCP
+ NODHCP="Yes"
+ export NODHCP
;;
ethdevice=*)
- DEVICE="${_PARAMETER#ethdevice=}"
- ETHDEVICE="${DEVICE}"
- export DEVICE ETHDEVICE
+ ETHDEVICE="${_PARAMETER#ethdevice=}"
+ export ETHDEVICE
;;
ethdevice-timeout=*)
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
;;
export NFS_COW
;;
+ nodhcphostname)
+ NODHCPHOSTNAME="Yes"
+ export NODHCPHOSTNAME
+ ;;
+
nofstab)
NOFSTAB="true"
export NOFSTAB
UNIONTYPE="${_PARAMETER#union=}"
export UNIONTYPE
;;
+
+ vlan=*)
+ VLANS="${VLANS} ${_PARAMETER#vlan=}"
+ export VLANS
+ ;;
esac
done
--- /dev/null
+#!/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
+auto ${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
+
+}
#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
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
then
# We found a memdisk, set up phram
modprobe phram phram=memdisk,${MEMDISK}
+ modprobe phram phram=memdisk,${MEMDISK}
# Load mtdblock, the memdisk will be /dev/mtdblock0
modprobe mtdblock
Swap
+ Grml_Networking
+
exec 1>&6 6>&-
exec 2>&7 7>&-
kill ${tailpid}
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 ]
fi
if is_live_path ${mountpoint} && \
- ([ "${skip_uuid_check}" ] || matches_uuid ${mountpoint})
+ ([ "${skip_uuid_check}" ] || grml_match_bootid ${mountpoint})
then
echo ${mountpoint}
return 0
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
return 1
fi
+ # get_fstype might report "unknown" or "swap", ignore it as no such kernel module exists
+ if [ "${fstype}" = "unknown" ] || [ "${fstype}" = "swap" ]
+ then
+ return 1
+ fi
+
# Try to look if it is already supported by the kernel
if grep -q ${fstype} /proc/filesystems
then
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}
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}" ]
if [ "$bootif_mac" = "$current_mac" ]
then
- DEVICE=${device##*/}
+ ETHDEVICE="${device##*/},$ETHDEVICE" # use ethdevice
break
fi
fi
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
[ -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
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"
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
echo "search ${DNSDOMAIN}" >> /etc/resolv.conf
fi
- for i in ${IPV4DNS0} ${IPV4DNS1} ${IPV4DNS1}
+ for i in ${IPV4DNS0} ${IPV4DNS1} ${IPV4DNS1} ${DNSSERVERS}
do
if [ -n "$i" ] && [ "$i" != 0.0.0.0 ]
then
echo " * Copying whole medium to RAM" 1>/dev/console
rsync -a --progress ${copyfrom}/* ${copyto} 1>/dev/console # "cp -a" from busybox also copies hidden files
else
- mkdir -p ${copyto}/${LIVE_MEDIA_PATH}
- cp -a ${copyfrom}/${LIVE_MEDIA_PATH}/* ${copyto}/${LIVE_MEDIA_PATH}
+ cp -a ${copyfrom}/* ${copyto}/
if [ -e ${copyfrom}/${LIVE_MEDIA_PATH}/.disk ]
then
cp -a ${copyfrom}/${LIVE_MEDIA_PATH}/.disk ${copyto}
* Removing myself from uploaders, lost trust in Debian (#804315).
-- Daniel Baumann <mail@daniel-baumann.ch> Fri, 20 Nov 2015 13:04:24 +0100
+>>>>>>> debian
+
+live-boot (5.0~a5-1+grml.1) UNRELEASED; urgency=medium
+
+ [ Evgeni Golov ]
+ * [aea94ce] add gbp.conf
+ * [9f0266a] fix "unexpected operator" error when stopping live-boot
+ * [83abdd6] Revert "restore support for old persistence media"
+ * [f0db64b] use pristine-tar by default
+
+ -- Evgeni Golov <evgeni@grml.org> Mon, 24 Aug 2015 21:04:50 +0200
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 ]
-- 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 ]
-- 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 ]
-- 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.
-- 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.
-- 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
-- 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 ]
-- 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 ]
-- 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 ]
-- 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
-- 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 ]
-- 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
-- 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
-- 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 ]
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:
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:
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,
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.
--- /dev/null
+[DEFAULT]
+compression=xz
+pristine-tar=True
--- /dev/null
+activate update-initramfs
--- /dev/null
+#!/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
--- /dev/null
+# 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
--- /dev/null
+From e951deaaeeb2b7badc5a6f53c6af18c1504289ee Mon Sep 17 00:00:00 2001
+From: Riccardo Murri <riccardo.murri@gmail.com>
+Date: Fri, 19 Jun 2015 17:50:52 +0200
+Subject: [PATCH] Allow selecting boot eth dev by MAC address
+
+---
+ components/9990-select-eth-device.sh | 101 +++++++++++++++++++++--------------
+ 1 file changed, 61 insertions(+), 40 deletions(-)
+
+diff --git a/components/9990-select-eth-device.sh b/components/9990-select-eth-device.sh
+index df00666..6bc67fd 100755
+--- a/components/9990-select-eth-device.sh
++++ b/components/9990-select-eth-device.sh
+@@ -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
+ }
+--
+2.5.0
+
--- /dev/null
+0001-Allow-selecting-boot-eth-dev-by-MAC-address.patch
#!/usr/bin/make -f
+build:
+ # regular build.
+ dh build
+
%:
dh ${@} --parallel
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_builddeb:
dh_builddeb -- -Zxz
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 .'
abort-on-upstream-changes
+single-debian-patch
+++ /dev/null
-live-snapshot(1)
-================
-:man source: 1.157.3
-:man manual: Debian Live
-
-Name
-----
-live-snapshot - uno script per facilitare l'uso della persistenza sui sistemi live
-
-Synopsis
---------
-live-snapshot [-c|--cow **DIRECTORY**s] [-d|--device **DEVICE**] [-e|--exclude-list **FILE**] [-o|--output **FILE**] [-t|--type **TYPE**]
-
-live-snapshot [-r|--resync-string **STRING**]
-
-live-snapshot [-h|--help]
-
-live-snapshot [-u|--usage]
-
-live-snapshot [-v|--version]
-
-Description
------------
-
-live-snapshot `e uno script che pu`o essere usato per costruire un file immagine formattato
-correttamente per essere usato da live-initramfs(7); viene inoltre usato dallo script di
-init di live-initramfs in uscita per sincronizzare i device di snapshot riconosciuti al boot.
-
-Options
--------
-
- -c, --cow **DIRECTORY**::
-
-specifica la directory da clonare nel file immagine. Il valore di default `e
-lo stesso default usato da live-initramfs per la sua directory COW (copy on
-write, un tempo situata in "/live/cow") ed `e sufficiente per gli usi comuni.
-Pu`o essere utile tuttavia specificare "/home" e come tipo "ext2" per
-preparare un file immagine adatto per essere montato da live-initramfs come
-"/home" al boot.
-
- -d, --device **DEVICE**::
-
-seleziona il device dove il file/partizione di snapshot o persistenza dovr`a
-essere sistemato. Se il device non ha un filesystem, ne verr`a creato uno
-automaticamente, di tipo ext2 ed etichettato (label) in base al valore
-specificato nell'opzione "--output" o con un default. Se non viene specificato
-nessun device, verr`a usato un "tmpfs" linkato sul desktop dell'utente, in
-modo che port`a essere mosso dove si vuole.
-
- -e, --exclude-list **FILE**::
-
-un file contenente una lista di file e percorsi che NON devono essere salvati.
-Questa lista verr`a inclusa nello snapshot per essere riutilizzata.
-
- -o, --output **FILE**::
-
-il nome del file o l'etichetta (label) da usare per il file o la partizione di
-snapshot. Se non specificata, live-snapshot cercher\`a un file all'interno
-del device oppure user`a l'intera partizione.
-
- -r, --resync-string **STRING**::
-
-usato internamente nelle sincronizzazioni dallo script di init di
-live-initramfs. Il formato pu\`o cambiare, usatelo a vostro rischio.
-
- -f, --refresh::
-
-scatena la stessa operazione che verrebbe fatta al reboot o all'halt della
-macchina, provando a fare il resync degli snapshot trovati al boot, usabile
-per salvare le modifiche in vista di un crash o di una mancanza di corrente.
-
- -t, --type **TYPE**::
-
-il tipo pu`o essere "cpio", "squashfs" o "ext2".
-
- -h, --help::
-
-mostra l'aiuto ed esce
-
- -u, --usage::
-
-mostra l'utilizzo ed esce
-
- -v, --version::
-
-da informazioni sulla versione ed esce
-
-Files
------
-
- /etc/live-snapshot.list
-
-Facoltativo, se presente cambia completamente il funzionamento di live-snapshot; solo i files e le directory elencate verranno effettivamente inclusi nello snapshot.
-Funziona attualmente solo con gli snapshot di tipo "cpio" e "partizione intera".
-
- /etc/live-snapshot.exclude_list
-
-Facoltativo, se presente verrà utilizzato per filtrare i file da includere negli snapshot. Tutte i file che conterranno le stringhe elecate (come "grep -F -v") non verranno salvati da live-snapshot.
-Funziona attualmente solo con gli snapshot di tipo "cpio", "partizione intera" e "squashfs"; è utile per filtrare contenuti poco significativi come i file temporanei e la cache.
-
-See also
---------
-
-live-initramfs(8)
-
-Questo programma fa parte di live-initramfs.
-
-Bugs
-----
-
-Riportate i bug sul pacchetto live-initramfs
-link:http://packages.qa.debian.org/live-initramfs[http://packages.qa.debian.org/live-initramfs].
-
-Homepage
---------
-
-Ulteriori informazioni su progetto Debian Live possono essere trovate su
-link:http://debian-live.alioth.debian.org/[http://debian-live.alioth.debian.org/] e
-link:http://wiki.debian.org/DebianLive/[http://wiki.debian.org/DebianLive/].
-
-Authors
--------
-
-live-initramfs `e mantenuto da Daniel Baumann <daniel@debian.org> per il
-progetto Debian. live-initramfs `e un fork di
-link:http://packages.ubuntu.com/casper[casper]. casper `e stato scritto
-originariamente da Tollef Fog Heen <tfheen@canonical.com> e Matt Zimmerman
-<mdz@canonical.com>.