X-Git-Url: http://git.grml.org/?a=blobdiff_plain;f=components%2F9990-misc-helpers.sh;h=ef3688efd44738b9e16d812dd9e54ba8fe34d8ca;hb=27bc786ffea0c796827b628fb48fcdd755eace9d;hp=a565ed50c7e6c86e4f0f7c6db0b971dac74faa03;hpb=683095685ccdd4175b75293540aabe239d03a6bb;p=live-boot-grml.git diff --git a/components/9990-misc-helpers.sh b/components/9990-misc-helpers.sh index a565ed5..ef3688e 100755 --- a/components/9990-misc-helpers.sh +++ b/components/9990-misc-helpers.sh @@ -15,6 +15,42 @@ is_live_path() 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 ] @@ -120,15 +156,32 @@ check_dev () if [ "$ISO_DEVICE" = "/" ] then - echo "Warning: device for bootoption fromiso= ($FROMISO) not found.">>/boot.log + # not a block device, check if it's an iso file, for + # example an ISO when booting on an ONIE system + if echo "${FROMISO}" | grep -q "\.iso$" + then + fs_type=$(get_fstype "${FROMISO}") + if is_supported_fs ${fs_type} + then + mkdir /run/live/fromiso + mount -t $fs_type "${FROMISO}" /run/live/fromiso + if [ "$?" != 0 ] + then + echo "Warning: unable to mount ${FROMISO}." >>/boot.log + fi + devname="/run/live/fromiso" + fi + else + echo "Warning: device for bootoption fromiso= ($FROMISO) not found.">>/boot.log + fi else fs_type=$(get_fstype "${ISO_DEVICE}") if is_supported_fs ${fs_type} then - mkdir /live/fromiso - mount -t $fs_type "$ISO_DEVICE" /live/fromiso + mkdir /run/live/fromiso + mount -t $fs_type "$ISO_DEVICE" /run/live/fromiso ISO_NAME="$(echo $FROMISO | sed "s|$ISO_DEVICE||")" - loopdevname=$(setup_loop "/live/fromiso/${ISO_NAME}" "loop" "/sys/block/loop*" "" '') + loopdevname=$(setup_loop "/run/live/fromiso/${ISO_NAME}" "loop" "/sys/block/loop*" "" '') devname="${loopdevname}" else echo "Warning: unable to mount $ISO_DEVICE." >>/boot.log @@ -242,7 +295,7 @@ check_dev () fi if is_live_path ${mountpoint} && \ - ([ "${skip_uuid_check}" ] || matches_uuid ${mountpoint}) + ([ "${skip_uuid_check}" ] || grml_match_bootid ${mountpoint}) then echo ${mountpoint} return 0 @@ -338,19 +391,6 @@ find_livefs () 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 @@ -1054,7 +1094,7 @@ find_persistence_media () # in one union together. # black_listed_devices="" - for d in /live/rootfs/* /live/findiso /live/fromiso + for d in /run/live/rootfs/* /run/live/findiso /run/live/fromiso do black_listed_devices="${black_listed_devices} $(what_is_mounted_on d)" done @@ -1369,7 +1409,7 @@ do_union () get_custom_mounts () { - # Side-effect: leaves $devices with persistence.conf mounted in /live/persistence + # Side-effect: leaves $devices with persistence.conf mounted in /run/live/persistence # Side-effect: prints info to file $custom_mounts local custom_mounts devices bindings links @@ -1400,7 +1440,7 @@ get_custom_mounts () if [ -n "${LIVE_BOOT_DEBUG}" ] && [ -e "${include_list}" ] then - cp ${include_list} /live/persistence/${persistence_list}.${device_name} + cp ${include_list} /run/live/persistence/${persistence_list}.${device_name} fi while read dir options # < ${include_list} @@ -1585,7 +1625,7 @@ activate_custom_mounts () rootfs_dest_backing="" if [ -n "${opt_link}" ] || [ -n "${opt_union}" ] then - for d in /live/rootfs/* + for d in /run/live/rootfs/* do if [ -n "${rootmnt}" ] then