HOSTNAME="host"
mkdir -p "${mountpoint}"
+tried="/tmp/tried"
# Create /etc/mtab for debug purpose and future syncs
if [ ! -d /etc ]
Arguments ()
{
PRESEEDS=""
+ LOCATIONS=""
for ARGUMENT in $(cat /proc/cmdline)
do
;;
preseed/file=*|file=*)
- LOCATION="${ARGUMENT#*=}"
- export LOCATION
+ LOCATIONS="${ARGUMENT#*=} ${LOCATIONS}"
+ export LOCATIONS
;;
nopreseed)
;;
url=*)
- location="${ARGUMENT#url=}"
+ URL_LOCATION="${ARGUMENT#url=}"
mount -o bind /sys /root/sys
mount -o bind /proc /root/proc
mkdir -p /root/var/run/network
[ "${NETBOOT}" ] || chroot /root dhclient eth0
- chroot /root wget -P /tmp "${location}"
+ chroot /root wget -P /tmp "${URL_LOCATION}"
[ "${NETBOOT}" ] || chroot /root ifconfig eth0 down
umount /root/sys
umount /root/proc
umount /root/dev
- LOCATION="/tmp/$(basename "${location}")"
+ LOCATIONS="/tmp/$(basename ${URL_LOCATION}) ${LOCATIONS}"
;;
*/*=*)
{
sysfs_path="${1#/sys}"
- if /lib/udev/path_id "${sysfs_path}" | grep -E -q "ID_PATH=(usb|pci-|platform-mmc)"
+ if /lib/udev/path_id "${sysfs_path}" | grep -E -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]$'
then
return 0
+ elif echo ${sysfs_path} | grep -q "^/block/dm-"
+ then
+ return 0
fi
return 1
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)
fi
done
+ else
+ ipconfig ${DEVICE} | tee /netboot.config
+ fi
+
# source relevant ipconfig output
OLDHOSTNAME=${HOSTNAME}
. /tmp/net-${DEVICE}.conf
umount $mountpoint
fi
fi
+ [ -e "$devname" ] || continue
if [ -n "${LIVE_MEDIA_OFFSET}" ]
then
if is_supported_fs ${fstype}
then
+ devuid=$(blkid -o value -s UUID "$devname")
+ [ -n "$devuid" ] && grep -qs "\<$devuid\>" $tried && continue
mount -t ${fstype} -o ro,noatime "${devname}" ${mountpoint} || continue
+ [ -n "$devuid" ] && echo "$devuid" >> $tried
if is_live_path ${mountpoint} && \
([ "${skip_uuid_check}" ] || matches_uuid ${mountpoint})
for sysblock in $devices_to_scan
do
devname=$(sys2dev "${sysblock}")
+ [ -e "$devname" ] || continue
fstype=$(get_fstype "${devname}")
if /lib/udev/cdrom_id ${devname} > /dev/null
fi
}
+start_usplash_pulse ()
+{
+ if [ -x /sbin/usplash_write ]
+ then
+ /sbin/usplash_write "PULSELOGO"
+ fi
+}
+
mountroot ()
{
if [ -x /scripts/local-top/cryptroot ]; then
Arguments
set_usplash_timeout
+ start_usplash_pulse
maybe_break live-premount
log_begin_msg "Running /scripts/live-premount"
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-out.fifo 3>/tmp/debconf-in.fifo
+
maybe_break live-bottom
log_begin_msg "Running /scripts/live-bottom\n"
umount "${rootmnt}/dev"
fi
+ # Kill the debconf-communicate instance and close fd's associated with·
+ # debconf-communicate.
+ kill $DEBCONF_COMMUNICATE_PID
+ 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}