Releasing live-initramfs 1.110.1-1.
[live-boot-grml.git] / scripts / live
index 7a82f60..f204a1e 100755 (executable)
@@ -79,6 +79,11 @@ Arguments ()
                                export USERFULLNAME LIVECONF
                                ;;
 
+                       ignore_uuid)
+                               IGNORE_UUID="Yes"
+                               export IGNORE_UUID
+                               ;;
+
                        ip=*)
                                STATICIP="${ARGUMENT#ip=}"
 
@@ -336,6 +341,11 @@ Arguments ()
                                export SHOWMOUNTS
                                ;;
 
+                       textonly)
+                               TEXTONLY="Yes"
+                               export TEXTONLY
+                               ;;
+
                        timezone=*)
                                TIMEZONE="${ARGUMENT#timezone=}"
                                export TIMEZONE
@@ -429,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
@@ -727,7 +762,7 @@ do_snap_copy ()
                if [ -n "${fstype}" ]
                then
                        # Copying stuff...
-                       mount -t "${fstype}" -o ro "${fromdev}" "${tomount}"
+                       mount -t "${fstype}" -o ro,noatime,nodiratime "${fromdev}" "${tomount}"
                        cp -a "${tomount}"/* ${todir}
                        umount "${tomount}"
                else
@@ -853,13 +888,13 @@ setup_unionfs ()
        then
                for IMAGE in $(cat ${image_directory}/filesystem.${MODULE}.module)
                do
-                       image_string="${image_string} ${image_directory}/${image}"
+                       image_string="${image_string} ${image_directory}/${IMAGE}"
                done
        elif [ -e "${image_directory}/${MODULE}.module" ]
        then
                for IMAGE in $(cat ${image_directory}/${MODULE}.module)
                do
-                       image_string="${image_string} ${image_directory}/${image}"
+                       image_string="${image_string} ${image_directory}/${IMAGE}"
                done
        else
                # ${MODULE}.module does not exist, create a list of images
@@ -903,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 "${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,nodiratime "${backdev}" "${croot}/${imagename}" || panic "Can not mount ${backdev} (${image}) on ${croot}/${imagename}" && rofsstring="${croot}/${imagename}=${roopt}:${rofsstring}" && rofslist="${croot}/${imagename} ${rofslist}"
                fi
        done
 
@@ -927,9 +962,9 @@ setup_unionfs ()
                fi
        fi
 
-       mount ${cowdevice} -t ${cow_fstype} -o rw /cow || panic "Can not mount ${cowdevice} on /cow"
+       mount ${cowdevice} -t ${cow_fstype} -o rw,noatime,nodiratime /cow || panic "Can not mount ${cowdevice} on /cow"
 
-       mount -t ${UNIONTYPE} -o dirs=/cow=rw:${rofsstring} ${UNIONTYPE} "${rootmnt}" || panic "${UNIONTYPE} mount failed"
+       mount -t ${UNIONTYPE} -o noatime,nodiratime,dirs=/cow=rw:${rofsstring} ${UNIONTYPE} "${rootmnt}" || panic "${UNIONTYPE} mount failed"
 
        # Adding other custom mounts
        if [ -n "${PERSISTENT}" ]
@@ -940,7 +975,7 @@ setup_unionfs ()
 
                if [ -b "${homecow}" ]
                then
-                       mount -t $(get_fstype "${homecow}") -o rw "${homecow}" "${rootmnt}/home"
+                       mount -t $(get_fstype "${homecow}") -o rw,noatime,nodiratime "${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"
@@ -971,13 +1006,14 @@ setup_unionfs ()
 
        # shows cow fs on /cow for use by live-snapshot
        mkdir -p "${rootmnt}/live/cow"
-       mount -o bind /cow "${rootmnt}/live/cow"
+       mount -o move /cow "${rootmnt}/live/cow"
 }
 
 check_dev ()
 {
        sysdev="${1}"
        devname="${2}"
+       skip_uuid_check="${3}"
 
        if [ -z "${devname}" ]
        then
@@ -994,9 +1030,11 @@ check_dev ()
 
        if is_supported_fs ${fstype}
        then
-               mount -t ${fstype} -o ro "${devname}" ${mountpoint} || continue
+               mount -t ${fstype} -o ro,noatime,nodiratime "${devname}" ${mountpoint} || continue
 
                if is_live_path ${mountpoint}
+               if is_live_path $mountpoint && \
+                       ([ "${skip_uuid_check}" ] || matches_uuid ${mountpoint})
                then
                        echo ${mountpoint}
                        return 0
@@ -1020,7 +1058,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