X-Git-Url: http://git.grml.org/?a=blobdiff_plain;f=scripts%2Flive;h=9bbf8beac425c668accfa781883899c81040bd54;hb=dc3fbe9cdabb2cbc257b0911dbbc91624c8ae5ac;hp=ab2db298295cf7296858c6ab3e8301b753a9155b;hpb=2b6c282a047dc10b0730dc508af5f57068b3def7;p=live-boot-grml.git diff --git a/scripts/live b/scripts/live index ab2db29..9bbf8be 100755 --- a/scripts/live +++ b/scripts/live @@ -66,6 +66,11 @@ Arguments () set -x ;; + ethdevice=*) + DEVICE="${ARGUMENT#ethdevice=}" + export DEVICE + ;; + fetch=*) FETCH="${ARGUMENT#fetch=}" export FETCH @@ -97,6 +102,11 @@ Arguments () export HOSTNAME LIVECONF ;; + isofrom=*|fromiso=*) + FROMISO="${ARGUMENT#*=}" + export FROMISO + ;; + username=*) USERNAME="${ARGUMENT#username=}" LIVECONF="changed" @@ -611,7 +621,7 @@ is_nice_device () { sysfs_path="${1#/sys}" - if /lib/udev/path_id "${sysfs_path}" | grep -E -q "ID_PATH=(usb|pci-[^-]*-(ide|scsi|usb))" + if /lib/udev/path_id "${sysfs_path}" | grep -E -q "ID_PATH=(usb|pci-)" then return 0 elif echo "${sysfs_path}" | grep -q '^/block/vd[a-z]$' @@ -673,7 +683,7 @@ copy_live_to () # begin copying (or uncompressing) mkdir "${copyto}" - echo "mount -t ${fstype} ${mount_options} ${dev} ${copyto}" + log_begin_msg "mount -t ${fstype} ${mount_options} ${dev} ${copyto}" mount -t "${fstype}" ${mount_options} "${dev}" "${copyto}" if [ "${extension}" = "tgz" ] @@ -686,10 +696,22 @@ copy_live_to () else if [ -n "${MODULETORAMFILE}" ] then - cp ${MODULETORAMFILE} ${copyto} # copy only the filesystem module + if [ -x /bin/rsync ] + then + echo " * Copying $MODULETORAMFILE to RAM" 1>/dev/console + rsync -a --progress ${MODULETORAMFILE} ${copyto} 1>/dev/console # copy only the filesystem module + else + cp ${MODULETORAMFILE} ${copyto} # copy only the filesystem module + fi 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 + if [ -x /bin/rsync ] + 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" from busybox also copies hidden files + fi fi umount ${copyfrom} @@ -1372,6 +1394,17 @@ check_dev () devname="${2}" skip_uuid_check="${3}" + # support for fromiso=.../isofrom=.... + if [ -n "$FROMISO" ] + then + mkdir /isofrom + ISO_DEVICE="$(echo $FROMISO | sed 's|\(/dev/[a-z]*[0-9]*\).*|\1|')" + mount "$ISO_DEVICE" /isofrom + ISO_NAME="$(echo $FROMISO | sed 's|/dev/[a-z]*[0-9]*/||')" + loopdevname=$(setup_loop "/isofrom/${ISO_NAME}" "loop" "/sys/block/loop*" "" '') + devname="${loopdevname}" + fi + if [ -z "${devname}" ] then devname=$(sys2dev "${sysdev}") @@ -1643,6 +1676,15 @@ mountroot () log_end_msg fi + # if we do not unmount the ISO we can't run "fsck /dev/ice" later on + # because the mountpoint is left behind in /proc/mounts, so let's get + # rid of it when running from RAM + if [ -n "$FROMISO" ] && [ "${TORAM}" ] + then + losetup -d /dev/loop0 + grep -q /isofrom /proc/mounts && umount /isofrom + fi + if [ -n "${MODULETORAMFILE}" ] || [ -n "${PLAIN_ROOT}" ] then setup_unionfs "${livefs_root}" "${rootmnt}"