X-Git-Url: http://git.grml.org/?a=blobdiff_plain;f=scripts%2Flive;h=afe0f4baa91c49486210b5c246ea7c48034e7e0c;hb=3260fec82497dccb9633ef344dfa06d8dc718163;hp=21c3d99ca8803be5d595f8422526f530d3ca3d66;hpb=dab328b67dcbced58f5691380d061d7119523711;p=live-boot-grml.git diff --git a/scripts/live b/scripts/live index 21c3d99..afe0f4b 100755 --- a/scripts/live +++ b/scripts/live @@ -20,6 +20,7 @@ USERFULLNAME="Live user" HOSTNAME="host" mkdir -p "${mountpoint}" +tried="/tmp/tried" # Create /etc/mtab for debug purpose and future syncs if [ ! -d /etc ] @@ -45,37 +46,25 @@ fi Arguments () { PRESEEDS="" + LOCATIONS="" for ARGUMENT in $(cat /proc/cmdline) do case "${ARGUMENT}" in skipconfig) NOACCESSIBILITY="Yes" - NOAPPARMOR="Yes" NOAPTCDROM="Yes" NOAUTOLOGIN="Yes" NOCONSOLEKEYBOARD="Yes" NOFASTBOOT="Yes" NOFSTAB="Yes" - NOGNOMEPANEL="Yes" NOHOSTS="Yes" - NOJOCKEY="Yes" - NOKPERSONALIZER="Yes" - NOLANGUAGESELECTOR="Yes" - NOLOCALES="Yes" NONETWORKING="Yes" - NOPOLKITCONF="Yes" - NOPOWERMANAGEMENT="Yes" - NOPROGRAMCRASHES="Yes" - NOSUDO="Yes" NOTIMEZONE="Yes" - NOUPDATENOTIFIER="Yes" - NOUSER="Yes" NOXAUTOCONFIG="Yes" NOXAUTOLOGIN="Yes" - NOXSCREENSAVER="Yes" - export NOACCESSIBILITY NOAPPARMOR NOAPTCDROM NOAUTOLOGIN NOCONSOLEKEYBOARD NOFASTBOOT NOFSTAB NOGNOMEPANEL NOHOSTS NOJOCKEY NOKPERSONALIZER NOLANGUAGESELECTOR NOLOCALES NONETWORKING NOPOLKITCONF NOPOWERMANAGEMENT NOPROGRAMCRASHES NOSUDO NOTIMEZONE NOUPDATENOTIFIER NOUSER NOXAUTOCONFIG NOXAUTOLOGIN NOXSCREENSAVER + export NOACCESSIBILITY NOAPTCDROM NOAUTOLOGIN NOCONSOLEKEYBOARD NOFASTBOOT NOFSTAB NOHOSTS NONETWORKING NOTIMEZONE NOXAUTOCONFIG NOXAUTOLOGIN ;; access=*) @@ -120,11 +109,6 @@ Arguments () export FORCEPERSISTENTFSCK ;; - hook=*) - HOOK="${ARGUMENT#hook=}" - export HOOK - ;; - ftpfs=*) FTPFS="${ARGUMENT#ftpfs=}" export FTPFS @@ -135,12 +119,6 @@ Arguments () export HTTPFS ;; - hostname=*) - HOSTNAME="${ARGUMENT#hostname=}" - LIVECONF="changed" - export HOSTNAME LIVECONF - ;; - isofrom=*|fromiso=*) FROMISO="${ARGUMENT#*=}" export FROMISO @@ -234,17 +212,6 @@ Arguments () export LIVE_MEDIA_TIMEOUT ;; - language=*|debian-installer/language=*) - language=${x#debian-installer/language=} - locale="$(lang2locale "$language")" - set_locale="true" - ;; - - locale=*|debian-installer/locale=*) - LOCALE="${ARGUMENT#*=}" - export LOCALE - ;; - module=*) MODULE="${ARGUMENT#module=}" export MODULE @@ -270,11 +237,6 @@ Arguments () export NOACCESSIBILITY ;; - noapparmor) - NOAPPARMOR="Yes" - export NOAPPARMOR - ;; - noaptcdrom) NOAPTCDROM="Yes" export NOAPTCDROM @@ -305,71 +267,21 @@ Arguments () export NOFSTAB ;; - nognomepanel) - NOGNOMEPANEL="Yes" - export NOGNOMEPANEL - ;; - nohosts) NOHOSTS="Yes" export NOHOSTS ;; - nokpersonalizer) - NOKPERSONALIZER="Yes" - export NOKPERSONALIZER - ;; - - nolanguageselector) - NOLANGUAGESELECTOR="Yes" - export NOLANGUAGESELECTOR - ;; - - nolocales) - NOLOCALES="Yes" - export NOLOCALES - ;; - nonetworking) NONETWORKING="Yes" export NONETWORKING ;; - nopowermanagement) - NOPOWERMANAGEMENT="Yes" - export NOPOWERMANAGEMENT - ;; - - noprogramcrashes) - NOPROGRAMCRASHES="Yes" - export NOPROGRAMCRASHES - ;; - - nojockey) - NOJOCKEY="Yes" - export NOJOCKEY - ;; - - nosudo) - NOSUDO="Yes" - export NOSUDO - ;; - swapon) SWAPON="Yes" export SWAPON ;; - noupdatenotifier) - NOUPDATENOTIFIER="Yes" - export NOUPDATENOTIFIER - ;; - - nouser) - NOUSER="Yes" - export NOUSER - ;; - noxautoconfig) NOXAUTOCONFIG="Yes" export NOXAUTOCONFIG @@ -417,8 +329,8 @@ Arguments () ;; preseed/file=*|file=*) - LOCATION="${ARGUMENT#*=}" - export LOCATION + LOCATIONS="${ARGUMENT#*=} ${LOCATIONS}" + export LOCATIONS ;; nopreseed) @@ -427,7 +339,7 @@ Arguments () ;; url=*) - location="${ARGUMENT#url=}" + URL_LOCATION="${ARGUMENT#url=}" mount -o bind /sys /root/sys mount -o bind /proc /root/proc @@ -435,14 +347,14 @@ Arguments () 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}" ;; */*=*) @@ -518,11 +430,6 @@ Arguments () export UNIONTYPE ;; - utc=*) - UTC="${ARGUMENT#utc=}" - export UTC - ;; - xdebconf) XDEBCONF="Yes" export XDEBCONF @@ -665,12 +572,15 @@ is_nice_device () { 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}" | 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]$' then return 0 + elif echo ${sysfs_path} | grep -q "^/block/dm-" + then + return 0 fi return 1 @@ -700,7 +610,7 @@ copy_live_to () if [ "${copytodev}" = "ram" ] then # copying to ram: - freespace=$( expr $(awk '/MemFree/{print $2}' /proc/meminfo) + $( awk '/\/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" from busybox also copies hidden files + cp -a ${copyfrom}/${LIVE_MEDIA_PATH}/* ${copyto}/${LIVE_MEDIA_PATH} + if [ -e ${copyfrom}/${LIVE_MEDIA_PATH}/.disk ] + then + cp -a ${copyfrom}/${LIVE_MEDIA_PATH}/.disk ${copyto} + fi fi fi @@ -775,6 +689,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) @@ -818,6 +736,10 @@ do_netmount () fi done + else + ipconfig ${DEVICE} | tee /netboot.config + fi + # source relevant ipconfig output OLDHOSTNAME=${HOSTNAME} . /tmp/net-${DEVICE}.conf @@ -995,7 +917,7 @@ do_snap_copy () todev=$(awk -v pat="$(base_path ${todir})" '$2 == pat { print $1 }' /proc/mounts) freespace=$(df -k | awk '/'${todev}'/{print $4}') else - freespace=$( expr $(awk '/MemFree/{print $2}' /proc/meminfo) + $( awk '/\" $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}) @@ -1660,7 +1586,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 @@ -1674,6 +1600,7 @@ find_livefs () 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 @@ -1699,7 +1626,7 @@ find_livefs () then # This is an ugly hack situation, the block device has # an image directly on it. It's hopefully - # live-initramfs, so take it and run with it. + # live-boot, so take it and run with it. ln -s "${devname}" "${devname}.${fstype}" echo "${devname}.${fstype}" return 0 @@ -1745,6 +1672,14 @@ integrity_check () fi } +start_usplash_pulse () +{ + if [ -x /sbin/usplash_write ] + then + /sbin/usplash_write "PULSELOGO" + fi +} + mountroot () { if [ -x /scripts/local-top/cryptroot ]; then @@ -1764,6 +1699,7 @@ mountroot () Arguments set_usplash_timeout + start_usplash_pulse maybe_break live-premount log_begin_msg "Running /scripts/live-premount" @@ -1858,6 +1794,13 @@ mountroot () mount -n -o bind /dev "${rootmnt}/dev" fi + # Move to the new root filesystem so that programs there can get at it. + if [ ! -d /root/live/image ] + then + mkdir -p /root/live/image + mount --move /live/image /root/live/image + fi + maybe_break live-bottom log_begin_msg "Running /scripts/live-bottom\n"