X-Git-Url: http://git.grml.org/?a=blobdiff_plain;f=scripts%2Fboot%2F9990-misc-helpers.sh;fp=scripts%2Fboot%2F9990-misc-helpers.sh;h=18befee504f60ac9ba3d3c2ec7105a025504a552;hb=71997770be3f27cb50a6b32059862355d955d0e9;hp=356fe6ddf8825f470543d022bddbe59d896a1095;hpb=4a5a84171f9e5f3f7ff20e9c1d855787e270cd0c;p=live-boot-grml.git diff --git a/scripts/boot/9990-misc-helpers.sh b/scripts/boot/9990-misc-helpers.sh index 356fe6d..18befee 100755 --- a/scripts/boot/9990-misc-helpers.sh +++ b/scripts/boot/9990-misc-helpers.sh @@ -591,7 +591,7 @@ fs_size () size=$(expr ${size} + ${size} / 20 ) # FIXME: 5% more to be sure else # free space - size="$(df -k | grep -s ${mountp} | awk '{print $4}')" + size="$(df -kP | grep -s ${mountp} | awk '{print $4}')" fi if [ -n "${doumount}" ] @@ -733,7 +733,7 @@ mount_persistence_media () device=${1} probe=${2} - backing="${rootmnt}/lib/live/mount/persistence/$(basename ${device})" + backing="/live/persistence/$(basename ${device})" mkdir -p "${backing}" old_backing="$(where_is_mounted ${device})" @@ -957,7 +957,7 @@ find_persistence_media () white_listed_devices="${2}" ret="" - black_listed_devices="$(what_is_mounted_on ${rootmnt}/lib/live/medium)" + black_listed_devices="$(what_is_mounted_on /live/medium)" for dev in $(storage_devices "${black_listed_devices}" "${white_listed_devices}") do @@ -1188,11 +1188,12 @@ link_files () do_union () { - local unionmountpoint unionrw unionro1 unionro2 + local unionmountpoint unionrw unionro unionmountpoint="${1}" # directory where the union is mounted - unionrw="${2}" # branch where the union changes are stored - unionro1="${3}" # first underlying read-only branch (optional) - unionro2="${4}" # second underlying read-only branch (optional) + shift + unionrw="${1}" # branch where the union changes are stored + shift + unionro="${*}" # space separated list of read-only branches (optional) case "${UNIONTYPE}" in aufs) @@ -1216,13 +1217,12 @@ do_union () unionfs-fuse) unionmountopts="-o cow -o noinitgroups -o default_permissions -o allow_other -o use_ino -o suid" unionmountopts="${unionmountopts} ${unionrw}=${rw_opt}" - if [ -n "${unionro1}" ] - then - unionmountopts="${unionmountopts}:${unionro1}=${ro_opt}" - fi - if [ -n "${unionro2}" ] + if [ -n "${unionro}" ] then - unionmountopts="${unionmountopts}:${unionro2}=${ro_opt}" + for rofs in ${unionro} + do + unionmountopts="${unionmountopts}:${rofs}=${ro_opt}" + done fi ( sysctl -w fs.file-max=391524 ; ulimit -HSn 16384 unionfs-fuse ${unionmountopts} "${unionmountpoint}" ) && \ @@ -1231,21 +1231,27 @@ do_union () ;; overlayfs) - # XXX: can unionro2 be used? (overlayfs only handles two dirs, but perhaps they can be chained?) - # XXX: and can unionro1 be optional? i.e. can overlayfs skip lowerdir? - unionmountopts="-o noatime,lowerdir=${unionro1},upperdir=${unionrw}" + # XXX: can multiple unionro be used? (overlayfs only handles two dirs, but perhaps they can be chained?) + # XXX: and can unionro be optional? i.e. can overlayfs skip lowerdir? + if echo ${unionro} | grep -q " " + then + panic "Multiple lower filesystems are currently not supported with overlayfs (unionro = ${unionro})." + elif [ -z "${unionro}" ] + then + panic "Overlayfs needs at least one lower filesystem (read-only branch)." + fi + unionmountopts="-o noatime,lowerdir=${unionro},upperdir=${unionrw}" mount -t ${UNIONTYPE} ${unionmountopts} ${UNIONTYPE} "${unionmountpoint}" ;; *) unionmountopts="-o noatime,${noxino_opt},dirs=${unionrw}=${rw_opt}" - if [ -n "${unionro1}" ] - then - unionmountopts="${unionmountopts}:${unionro1}=${ro_opt}" - fi - if [ -n "${unionro2}" ] + if [ -n "${unionro}" ] then - unionmountopts="${unionmountopts}:${unionro2}=${ro_opt}" + for rofs in ${unionro} + do + unionmountopts="${unionmountopts}:${rofs}=${ro_opt}" + done fi mount -t ${UNIONTYPE} ${unionmountopts} ${UNIONTYPE} "${unionmountpoint}" ;; @@ -1254,7 +1260,7 @@ do_union () get_custom_mounts () { - # Side-effect: leaves $devices with persistence.conf mounted in ${rootmnt}/lib/live/mount/persistence + # Side-effect: leaves $devices with persistence.conf mounted in /live/persistence # Side-effect: prints info to file $custom_mounts local custom_mounts devices bindings links @@ -1293,7 +1299,7 @@ get_custom_mounts () if [ -n "${DEBUG}" ] && [ -e "${include_list}" ] then - cp ${include_list} ${rootmnt}/lib/live/mount/persistence/${persistence_list}.${device_name} + cp ${include_list} /live/persistence/${persistence_list}.${device_name} fi while read dir options # < ${include_list} @@ -1478,19 +1484,17 @@ activate_custom_mounts () rootfs_dest_backing="" if [ -n "${opt_link}"] then - for d in ${rootmnt}/lib/live/mount/rootfs/* + for d in /live/rootfs/* do if [ -n "${rootmnt}" ] then - rootfs_dest_backing="${d}/$(echo ${dest} | sed -e "s|${rootmnt}||")" + fs="${d}/$(echo ${dest} | sed -e "s|${rootmnt}||")" else - rootfs_dest_backing="${d}/${dest}" + fs="${d}/${dest}" fi - if [ -d "${rootfs_dest_backing}" ] + if [ -d "${fs}" ] then - break - else - rootfs_dest_backing="" + rootfs_dest_backing="${rootfs_dest_backing} ${fs}" fi done fi @@ -1510,7 +1514,7 @@ activate_custom_mounts () # has its own directory and isn't nested with some # other custom mount (if so that mount's files would # be linked, causing breakage. - cow_dir="${rootmnt}/lib/live/mount/overlay/lib/live/mount/persistence/$(basename ${links_source})" + cow_dir="/live/overlay/lib/live/mount/persistence/$(basename ${links_source})" mkdir -p ${cow_dir} chown_ref "${source}" "${cow_dir}" chmod_ref "${source}" "${cow_dir}" @@ -1527,7 +1531,7 @@ activate_custom_mounts () # bind-mount and union mount are handled the same # in read-only mode, but note that rootfs_dest_backing # is non-empty (and necessary) only for unions - cow_dir="${rootmnt}/lib/live/mount/overlay/${dest}" + cow_dir="/live/overlay/${dest}" if [ -e "${cow_dir}" ] && [ -z "${opt_link}" ] then # If an earlier custom mount has files here