X-Git-Url: http://git.grml.org/?a=blobdiff_plain;f=scripts%2Flive;h=c5f4d503e10cc51f04fed837114658b0b8035322;hb=93d17e2a47483323bb96d42aa3f47bcc3e218dd7;hp=07deb559fbc3eddf7226cb52ca1d7104ce5fca48;hpb=a926b8a0e9ea6c89f3e94611d1030bb203cbdc9e;p=live-boot-grml.git diff --git a/scripts/live b/scripts/live index 07deb55..c5f4d50 100755 --- a/scripts/live +++ b/scripts/live @@ -266,6 +266,16 @@ Arguments () export NOPERSISTENT ;; + noprompt) + NOPROMPT="Yes" + export NOPROMPT + ;; + + noprompt=*) + NOPROMPT="${ARGUMENT#noprompt=}" + export NOPROMPT + ;; + quickusbmodules) QUICKUSBMODULES="Yes" export QUICKUSBMODULES @@ -325,9 +335,9 @@ Arguments () ;; skipunion) - SKIP_UNION_MOUNTS="Yes" - export SKIP_UNION_MOUNTS - ;; + SKIP_UNION_MOUNTS="Yes" + export SKIP_UNION_MOUNTS + ;; root=*) ROOT="${ARGUMENT#root=}" @@ -1005,16 +1015,17 @@ find_snap () { # Look for ${snap_label}.* in block devices snap_label="${1}" + black_listed_devices="${2}" if [ "${PERSISTENT}" != "nofiles" ] then # search for image files - snapdata=$(find_files "${PERSISTENT_PATH}${snap_label}.squashfs ${PERSISTENT_PATH}${snap_label}.cpio.gz ${PERSISTENT_PATH}${snap_label}.ext2 ${PERSISTENT_PATH}${snap_label}.ext3 ${PERSISTENT_PATH}${snap_label}.ext4 ${PERSISTENT_PATH}${snap_label}.jffs2") + snapdata=$(find_files "${PERSISTENT_PATH}${snap_label}.squashfs ${PERSISTENT_PATH}${snap_label}.cpio.gz ${PERSISTENT_PATH}${snap_label}.ext2 ${PERSISTENT_PATH}${snap_label}.ext3 ${PERSISTENT_PATH}${snap_label}.ext4 ${PERSISTENT_PATH}${snap_label}.jffs2" "${black_listed_devices}") fi if [ -z "${snapdata}" ] then - snapdata=$(find_cow_device "${snap_label}") + snapdata=$(find_cow_device "${snap_label}" "${black_listed_devices}") fi echo "${snapdata}" } @@ -1074,8 +1085,16 @@ try_snap () cpioargs='--unconditional --make-directories' fi - cd "${snap_mount}" && zcat "${snapback}/${snapfile}" | $cpiopath $cpioargs --extract --preserve-modification-time --no-absolute-filenames --sparse 2>/dev/null - RES="$?" + if [ -s "${snapback}/${snapfile}" ] + then + BEFOREDIR="$(pwd)" + cd "${snap_mount}" && zcat "${snapback}/${snapfile}" | $cpiopath $cpioargs --extract --preserve-modification-time --no-absolute-filenames --sparse 2>/dev/null + RES="$?" + cd "${BEFOREDIR}" + else + log_warning_msg "${snapback}/${snapfile} is empty, adding it for sync on reboot." + RES="0" + fi if [ "${RES}" != "0" ] then @@ -1258,9 +1277,16 @@ setup_unionfs () log_warning_msg "Unknown file system type on ${backdev} (${image}), assuming ${fstype}." fi - mkdir -p "${croot}/${imagename}" - log_begin_msg "Mounting \"${image}\" on \"${croot}${imagename}\" via \"${backdev}\"" - 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}" + if [ "${UNIONTYPE}" != "unionmount" ] + then + mpoint="${croot}/${imagename}" + rofsstring="${mpoint}=${roopt}:${rofsstring}" && rofslist="${mpoint} ${rofslist}" + else + mpoint="${rootmnt}" + fi + mkdir -p "${mpoint}" + log_begin_msg "Mounting \"${image}\" on \"${mpoint}\" via \"${backdev}\"" + mount -t "${fstype}" -o ro,noatime "${backdev}" "${mpoint}" || panic "Can not mount ${backdev} (${image}) on ${mpoint}" log_end_msg fi done @@ -1374,6 +1400,9 @@ setup_unionfs () cow_mountopt="rw,noatime,mode=755" fi + if [ "${UNIONTYPE}" != "unionmount" ] + then + if [ "${cow_fstype}" = "nfs" ] then log_begin_msg \ @@ -1384,6 +1413,7 @@ setup_unionfs () mount -t ${cow_fstype} -o ${cow_mountopt} ${cowdevice} /cow || \ panic "Can not mount ${cowdevice} (o: ${cow_fstype}) on /cow" fi + fi rofscount=$(echo ${rofslist} |wc -w) @@ -1428,6 +1458,10 @@ setup_unionfs () pidof unionfs-fuse >> /dev/.initramfs/varrun/sendsigs.omit || true ;; + unionmount) + mount_full -t ${cow_fstype} -o noatime,union,${cow_mountopt} ${cowdevice} "${rootmnt}" || panic "${UNIONTYPE} ${cowdevice} on ${rootmnt} failed with option noatime,union,${cow_mountopt}" + ;; + *) mount -t ${UNIONTYPE} -o noatime,${noxino_opt}dirs=/cow=rw:${rofsstring} ${UNIONTYPE} "${rootmnt}" || panic "mount ${UNIONTYPE} on ${rootmnt} failed with option noatime,${noxino_opt}dirs=/cow=rw:${rofsstring}" ;;