X-Git-Url: http://git.grml.org/?a=blobdiff_plain;f=scripts%2Flive;h=f9e4fe269c0154e4ffe70c29e4d8c50ea8b35227;hb=bdb01ba302ac1c351f62d95f123b722a5281be15;hp=ba325a4457c5c8105091b40a71613f706c6579d6;hpb=f98dc580f82f77b9e4eba8a51f2dd1dd78509605;p=live-boot-grml.git diff --git a/scripts/live b/scripts/live index ba325a4..f9e4fe2 100755 --- a/scripts/live +++ b/scripts/live @@ -21,6 +21,17 @@ HOSTNAME="host" mkdir -p "${mountpoint}" +# Create /etc/mtab for debug purpose and future syncs +if [ ! -d /etc ] +then + mkdir /etc/ +fi + +if [ ! -f /etc/mtab ] +then + touch /etc/mtab +fi + [ -f /etc/live.conf ] && . /etc/live.conf export USERNAME USERFULLNAME HOSTNAME @@ -333,9 +344,9 @@ Arguments () url=*) location="${ARGUMENT#url=}" - mount -n -o bind /sys /root/sys - mount -n -o bind /proc /root/proc - mount -n -o bind /dev /root/dev + mount -o bind /sys /root/sys + mount -o bind /proc /root/proc + mount -o bind /dev /root/dev mkdir -p /root/var/run/network chroot /root dhclient eth0 @@ -538,7 +549,7 @@ mount_images_in_directory () { directory="${1}" rootmnt="${2}" - mac="${3}" + mac="${3}" if match_files_in_dir "${directory}/${LIVE_MEDIA_PATH}/*.squashfs" || @@ -621,14 +632,14 @@ copy_live_to () # begin copying (or uncompressing) mkdir "${copyto}" echo "mount -t ${fstype} ${mount_options} ${dev} ${copyto}" - mount -n -t "${fstype}" ${mount_options} "${dev}" "${copyto}" + mount -t "${fstype}" ${mount_options} "${dev}" "${copyto}" if [ "${extension}" = "tgz" ] then cd "${copyto}" tar zxf "${copyfrom}/${LIVE_MEDIA_PATH}/$(basename ${FETCH})" rm -f "${copyfrom}/${LIVE_MEDIA_PATH}/$(basename ${FETCH})" - mount -n -r -o move "${copyto}" "${rootmnt}" + mount -r -o move "${copyto}" "${rootmnt}" cd "${OLDPWD}" else if [ -n "${MODULETORAMFILE}" ] @@ -640,7 +651,7 @@ copy_live_to () livefs_root umount ${copyfrom} - mount -n -r -o move ${copyto} ${copyfrom} + mount -r -o move ${copyto} ${copyfrom} fi rmdir ${copyto} @@ -708,7 +719,7 @@ do_httpmount () { rc=1 dest="${mountpoint}/${LIVE_MEDIA_PATH}" - mount -n -t ramfs ram "${mountpoint}" + mount -t ramfs ram "${mountpoint}" mkdir -p "${dest}" for webfile in HTTPFS FTPFS FETCH @@ -844,7 +855,7 @@ do_snap_copy () if [ -n "${fstype}" ] then # Copying stuff... - mount -n -t "${fstype}" -o ro,noatime "${fromdev}" "${tomount}" + mount -t "${fstype}" -o ro,noatime "${fromdev}" "${tomount}" || log_warning_msg "Error in mount -t ${fstype} -o ro,noatime ${fromdev} ${tomount}" cp -a "${tomount}"/* ${todir} umount "${tomount}" else @@ -878,35 +889,46 @@ try_snap () if [ ! -z "${snapdata}" ] then + log_success_msg "found snapshot: ${snapdata}" snapdev="$(echo ${snapdata} | cut -f1 -d ' ')" snapback="$(echo ${snapdata} | cut -f2 -d ' ')" snapfile="$(echo ${snapdata} | cut -f3 -d ' ')" + RES="" + if echo "${snapfile}" | grep -qs '\(squashfs\|ext2\|ext3\|jffs2\)' then # squashfs, jffs2 or ext2/ext3 snapshot dev=$(get_backing_device "${snapback}/${snapfile}") - if ! do_snap_copy "${dev}" "${snap_mount}" "${snap_type}" - then - log_warning_msg "Impossible to include the ${snapfile} Snapshot" - return 1 - fi + do_snap_copy "${dev}" "${snap_mount}" "${snap_type}" + RES=$? else # cpio.gz snapshot - if ! (cd "${snap_mount}" && zcat "${snapback}/${snapfile}" | cpio --extract --preserve-modification-time --no-absolute-filenames --sparse --unconditional --make-directories > /dev/null 2>&1) + cd "${snap_mount}" + zcat "${snapback}/${snapfile}" | /bin/cpio --extract --preserve-modification-time --no-absolute-filenames --sparse --unconditional --make-directories > /dev/null 2>&1 + RES=$? + if [ "${RES}" != "0" ] then - log_warning_msg "Impossible to include the ${snapfile} Snapshot" - return 1 + log_warning_msg "failure to \"zcat ${snapback}/${snapfile} | /bin/cpio --extract --preserve-modification-time --no-absolute-filenames --sparse --unconditional --make-directories\"" fi + cd "${OLDPWD}" + fi + + umount "${snapback}" || log_warning_msg "failure to \"umount ${snapback}\"" + + if [ "${RES}" != "0" ] + then + log_warning_msg "Impossible to include the ${snapfile} Snapshot file" fi - umount "${snapback}" else + # Try to find if it could be a snapshot partition dev=$(find_cow_device "${snap_label}") - if [ -b ${dev} ] + if [ -b "${dev}" ] then + log_success_msg "found snapshot device on ${dev}" if echo "${dev}" | grep -qs loop then # strange things happens, user confused? @@ -1048,7 +1070,7 @@ setup_unionfs () mkdir -p "${croot}/${imagename}" log_begin_msg "Mounting \"${image}\" on \"${croot}${imagename}\" via \"${backdev}\"" - mount -n -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}" + 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}" log_end_msg fi done @@ -1137,7 +1159,7 @@ setup_unionfs () nfsmount ${nfs_cow_opts} ${cowdevice} /cow || \ panic "Can not mount ${cowdevice} (n: ${cow_fstype}) on /cow" else - mount -n -t ${cow_fstype} -o ${cow_mountopt} ${cowdevice} /cow || \ + mount -t ${cow_fstype} -o ${cow_mountopt} ${cowdevice} /cow || \ panic "Can not mount ${cowdevice} (o: ${cow_fstype}) on /cow" fi @@ -1151,7 +1173,7 @@ setup_unionfs () fi exposedrootfs=${rofslist%% } - mount -n --bind ${exposedrootfs} ${rootmnt} || \ + mount --bind ${exposedrootfs} ${rootmnt} || \ panic "bind mount of ${exposedrootfs} failed" cow_dirs='/var/tmp /var/lock /var/run /var/log /var/spool @@ -1159,14 +1181,14 @@ setup_unionfs () for dir in ${cow_dirs}; do mkdir -p /cow${dir} - mount -n -t ${UNIONTYPE} \ + mount -t ${UNIONTYPE} \ -o rw,noatime,dirs=/cow${dir}=rw:${exposedrootfs}${dir}=ro \ ${UNIONTYPE} "${rootmnt}${dir}" || \ panic "mount ${UNIONTYPE} on ${rootmnt}${dir} failed with option \ rw,noatime,dirs=/cow${dir}=rw:${exposedrootfs}${dir}=ro" done else - mount -n -t ${UNIONTYPE} -o noatime,dirs=/cow=rw:${rofsstring} \ + mount -t ${UNIONTYPE} -o noatime,dirs=/cow=rw:${rofsstring} \ ${UNIONTYPE} "${rootmnt}" || panic "mount ${UNIONTYPE} on \ ${rootmnt} failed with option noatime,dirs=/cow=rw:${rofsstring}" fi @@ -1174,7 +1196,7 @@ setup_unionfs () # tmpfs file systems touch /etc/fstab mkdir -p "${rootmnt}/live" - mount -n -t tmpfs tmpfs ${rootmnt}/live + mount -t tmpfs tmpfs ${rootmnt}/live # Adding other custom mounts if [ -n "${PERSISTENT}" ] && [ -z "${NOPERSISTENT}" ] @@ -1185,7 +1207,7 @@ setup_unionfs () if [ -b "${homecow}" ] then - mount -n -t $(get_fstype "${homecow}") -o rw,noatime "${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 log_warning_msg "Unable to find the persistent home medium" @@ -1208,7 +1230,7 @@ setup_unionfs () ;; *) - mount -n -o move "${d}" "${rootmnt}/live/${d##*/}" + mount -o move "${d}" "${rootmnt}/live/${d##*/}" ;; esac done @@ -1216,7 +1238,7 @@ setup_unionfs () # shows cow fs on /cow for use by live-snapshot mkdir -p "${rootmnt}/live/cow" - mount -n -o move /cow "${rootmnt}/live/cow" >/dev/null 2>&1 || mount -n -o bind /cow "${rootmnt}/live/cow" || log_warning_msg "Unable to move or bind /cow to ${rootmnt}/live/cow" + mount -o move /cow "${rootmnt}/live/cow" >/dev/null 2>&1 || mount -o bind /cow "${rootmnt}/live/cow" || log_warning_msg "Unable to move or bind /cow to ${rootmnt}/live/cow" } check_dev () @@ -1232,7 +1254,7 @@ check_dev () if [ -d "${devname}" ] then - mount -n -o bind "${devname}" $mountpoint || continue + mount -o bind "${devname}" $mountpoint || continue if is_live_path $mountpoint then @@ -1253,7 +1275,7 @@ check_dev () if is_supported_fs ${fstype} then - mount -n -t ${fstype} -o ro,noatime "${devname}" ${mountpoint} || continue + mount -t ${fstype} -o ro,noatime "${devname}" ${mountpoint} || continue if is_live_path ${mountpoint} && \ ([ "${skip_uuid_check}" ] || matches_uuid ${mountpoint}) @@ -1345,7 +1367,6 @@ set_usplash_timeout () mountroot () { - if [ -x /scripts/local-top/cryptroot ]; then /scripts/local-top/cryptroot fi @@ -1358,11 +1379,13 @@ mountroot () tailpid="${!}" # Ensure 'panic' function is overridden - . /scripts/live-functions + . /scripts/live-functions Arguments set_usplash_timeout + + maybe_break live-premount log_begin_msg "Running /scripts/live-premount" run_scripts /scripts/live-premount log_end_msg