X-Git-Url: http://git.grml.org/?a=blobdiff_plain;f=scripts%2Flive;h=110f41dbf439d776b6750d5103555f4cf9946eca;hb=9a4b5c6da74dd88de39c997de156f832fc3a89fd;hp=3ef4ef04c6dd0b57368ccb86a05caafc7d78921b;hpb=c786c99d374d4da66e8211175187f2d477336556;p=live-boot-grml.git diff --git a/scripts/live b/scripts/live index 3ef4ef0..110f41d 100755 --- a/scripts/live +++ b/scripts/live @@ -667,7 +667,7 @@ is_nice_device () { sysfs_path="${1#/sys}" - if /lib/udev/path_id "${sysfs_path}" | grep -E -q "ID_PATH=(usb|pci-|platform-orion-ehci|platform-mmc|platform-mxsdhci|)" + if /lib/udev/path_id "${sysfs_path}" | egrep -q "ID_PATH=(usb|pci-|platform-orion-ehci|platform-mmc|platform-mxsdhci|)" then return 0 elif echo "${sysfs_path}" | grep -q '^/block/vd[a-z]$' @@ -780,6 +780,10 @@ do_netmount () udevadm trigger udevadm settle + if [ -z "${NETBOOT}" ] && [ -z "${FETCH}" ] && \ + [ -z "${HTTPFS}" ] && [ -z "${FTPFS}" ] + then + # if ethdevice was not specified on the kernel command line # make sure we try to get a working network configuration # for *every* present network device (except for loopback of course) @@ -823,6 +827,10 @@ do_netmount () fi done + else + ipconfig ${DEVICE} | tee /netboot.config + fi + # source relevant ipconfig output OLDHOSTNAME=${HOSTNAME} . /tmp/net-${DEVICE}.conf @@ -1669,7 +1677,7 @@ find_livefs () # or do the scan of block devices # prefer removable devices over non-removable devices, so scan them first - for sysblock in $(echo /sys/block/* | tr ' ' '\n' | grep -vE "/(loop|ram|dm-|fd)") + for sysblock in $(echo /sys/block/* | tr ' ' '\n' | egrep -v "/(loop|ram|dm-|fd)") do if [ "$(cat ${sysblock}/removable)" = "1" ] then @@ -1877,6 +1885,28 @@ mountroot () mount -n -o bind /dev "${rootmnt}/dev" fi + # Open up two fifo's fd's for debconf-communicate to use. Speeds up + # the live-initramfs process considerably. + log_begin_msg "Creating debconf-communicate fifo mechanism" + mkfifo /tmp/debconf-in.fifo + mkfifo /tmp/debconf-out.fifo + + chroot /root debconf-communicate -fnoninteractive live-initramfs > /tmp/debconf-out.fifo < /tmp/debconf-in.fifo & + + # Save the PID so it can be killed later. + DEBCONF_COMMUNICATE_PID="$!" + + if [ ! -p /tmp/debconf-in.fifo ] || [ ! -p /tmp/debconf-out.fifo ] + then + log_warning_msg "failed to setup debconf-communicate channel" + fi + log_end_msg + + # Order matters! + # These file descriptors must stay open until we're finished with + # debconf-communicate. + exec 4/tmp/debconf-in.fifo + maybe_break live-bottom log_begin_msg "Running /scripts/live-bottom\n" @@ -1888,6 +1918,11 @@ mountroot () umount "${rootmnt}/dev" fi + # Close the fd's associated with debconf-communicate + exec 3>&- 4<&- + rm -f /tmp/debconf-in.fifo + rm -f /tmp/debconf-out.fifo + exec 1>&6 6>&- exec 2>&7 7>&- kill ${tailpid}