X-Git-Url: http://git.grml.org/?a=blobdiff_plain;f=scripts%2Flive;h=27221ef79bd4d0b46c5f6d3ba93dbbf7fdd9e322;hb=6bfe95a7c93d84d0a2f9071bbe3809c173287402;hp=ebac3aec7d87149fe97896ce1f68983676fcf583;hpb=7340552de6a8e238e54582722ccf7b74d12a212b;p=live-boot-grml.git diff --git a/scripts/live b/scripts/live index ebac3ae..27221ef 100755 --- a/scripts/live +++ b/scripts/live @@ -79,6 +79,11 @@ Arguments () export USERFULLNAME LIVECONF ;; + ignore_uuid) + IGNORE_UUID="Yes" + export IGNORE_UUID + ;; + ip=*) STATICIP="${ARGUMENT#ip=}" @@ -434,6 +439,31 @@ is_live_path () return 1 } +matches_uuid () +{ + if [ "${IGNORE_UUID}" ] || [ ! -e /conf/uuid.conf ] + then + return 0 + fi + + path="${1}" + uuid="$(cat /conf/uuid.conf)" + + for try_uuid_file in "${mountpoint}/.disk/casper-uuid"* + do + [ -e "${try_uuid_file}" ] || continue + + try_uuid="$(cat "${try_uuid_file}")" + + if [ "${uuid}" = "${try_uuid}" ] + then + return 0 + fi + done + + return 1 +} + get_backing_device () { case "${1}" in @@ -732,7 +762,7 @@ do_snap_copy () if [ -n "${fstype}" ] then # Copying stuff... - mount -t "${fstype}" -o ro,noatime,nodiratime "${fromdev}" "${tomount}" + mount -t "${fstype}" -o ro,noatime "${fromdev}" "${tomount}" cp -a "${tomount}"/* ${todir} umount "${tomount}" else @@ -908,7 +938,7 @@ setup_unionfs () mkdir -p "${croot}/${imagename}" echo "debug: Can not mount backdev ${backdev} (image = ${image}) on croot/imagename ${croot}/${imagename}" - mount -t "${fstype}" -o ro,noatime,nodiratime "${backdev}" "${croot}/${imagename}" || panic "Can not mount ${backdev} (${image}) on ${croot}/${imagename}" && rofsstring="${croot}/${imagename}=${roopt}:${rofsstring}" && rofslist="${croot}/${imagename} ${rofslist}" + mount -t "${fstype}" -o ro,noatime "${backdev}" "${croot}/${imagename}" || panic "Can not mount ${backdev} (${image}) on ${croot}/${imagename}" && rofsstring="${croot}/${imagename}=${roopt}:${rofsstring}" && rofslist="${croot}/${imagename} ${rofslist}" fi done @@ -932,9 +962,9 @@ setup_unionfs () fi fi - mount ${cowdevice} -t ${cow_fstype} -o rw,noatime,nodiratime /cow || panic "Can not mount ${cowdevice} on /cow" + mount ${cowdevice} -t ${cow_fstype} -o rw,noatime /cow || panic "Can not mount ${cowdevice} on /cow" - mount -t ${UNIONTYPE} -o noatime,nodiratime,dirs=/cow=rw:${rofsstring} ${UNIONTYPE} "${rootmnt}" || panic "${UNIONTYPE} mount failed" + mount -t ${UNIONTYPE} -o noatime,dirs=/cow=rw:${rofsstring} ${UNIONTYPE} "${rootmnt}" || panic "${UNIONTYPE} mount failed" # Adding other custom mounts if [ -n "${PERSISTENT}" ] @@ -945,7 +975,7 @@ setup_unionfs () if [ -b "${homecow}" ] then - mount -t $(get_fstype "${homecow}") -o rw,noatime,nodiratime "${homecow}" "${rootmnt}/home" + mount -t $(get_fstype "${homecow}") -o rw,noatime "${homecow}" "${rootmnt}/home" export HOMEMOUNTED=1 # used to proper calculate free space in do_snap_copy() else [ "${quiet}" != "y" ] && log_warning_msg "Unable to find the persistent home medium" @@ -983,6 +1013,7 @@ check_dev () { sysdev="${1}" devname="${2}" + skip_uuid_check="${3}" if [ -z "${devname}" ] then @@ -999,9 +1030,10 @@ check_dev () if is_supported_fs ${fstype} then - mount -t ${fstype} -o ro,noatime,nodiratime "${devname}" ${mountpoint} || continue + mount -t ${fstype} -o ro,noatime "${devname}" ${mountpoint} || continue - if is_live_path ${mountpoint} + if is_live_path ${mountpoint} && \ + ([ "${skip_uuid_check}" ] || matches_uuid ${mountpoint}) then echo ${mountpoint} return 0 @@ -1025,7 +1057,7 @@ find_livefs () # first look at the one specified in the command line if [ ! -z "${LIVE_MEDIA}" ] then - if check_dev "null" "${LIVE_MEDIA}" + if check_dev "null" "${LIVE_MEDIA}" "skip_uuid_check" then return 0 fi