X-Git-Url: http://git.grml.org/?a=blobdiff_plain;f=scripts%2Fboot%2F9990-overlay.sh;h=e8e00b6b00aaab23eed2785e7efec2d4e6ee4d28;hb=2648cbc4fbb19cc4b20bca4b4f3d38d515f130a1;hp=098111c65fcc49f8fbea5a518dbe02f690170b86;hpb=18d2f858d485f89f667d012efc76386f82ffda59;p=live-boot-grml.git diff --git a/scripts/boot/9990-overlay.sh b/scripts/boot/9990-overlay.sh index 098111c..e8e00b6 100755 --- a/scripts/boot/9990-overlay.sh +++ b/scripts/boot/9990-overlay.sh @@ -189,58 +189,37 @@ setup_unionfs () done fi - local whitelistdev - whitelistdev="" - if [ -n "${PERSISTENCE_MEDIA}" ] - then - case "${PERSISTENCE_MEDIA}" in - removable) - whitelistdev="$(removable_dev)" - ;; + case "${PERSISTENCE_MEDIA}" in + removable) + whitelistdev="$(removable_dev)" + ;; - removable-usb) - whitelistdev="$(removable_usb_dev)" - ;; - esac - if [ -z "${whitelistdev}" ] - then - whitelistdev="ignore_all_devices" - fi - fi + removable-usb) + whitelistdev="$(removable_usb_dev)" + ;; + + *) + whitelistdev="" + ;; + esac if is_in_comma_sep_list overlay ${PERSISTENCE_METHOD} then - overlays="${old_root_overlay_label} ${old_home_overlay_label} ${custom_overlay_label}" + overlays="${custom_overlay_label}" fi - local overlay_devices - overlay_devices="" - if [ "${whitelistdev}" != "ignore_all_devices" ] - then - for media in $(find_persistence_media "${overlays}" "${whitelistdev}") - do - media="$(echo ${media} | tr ":" " ")" - - case ${media} in - ${old_root_overlay_label}=*) - device="${media#*=}" - fix_backwards_compatibility ${device} / union - overlay_devices="${overlay_devices} ${device}" - ;; - - ${old_home_overlay_label}=*) - device="${media#*=}" - fix_backwards_compatibility ${device} /home bind - overlay_devices="${overlay_devices} ${device}" - ;; + local overlay_devices="" + for media in $(find_persistence_media "${overlays}" "${whitelistdev}") + do + media="$(echo ${media} | tr ":" " ")" - ${custom_overlay_label}=*) - device="${media#*=}" - overlay_devices="${overlay_devices} ${device}" - ;; - esac - done - fi + case ${media} in + ${custom_overlay_label}=*) + device="${media#*=}" + overlay_devices="${overlay_devices} ${device}" + ;; + esac + done elif [ -n "${NFS_COW}" ] && [ -z "${NOPERSISTENCE}" ] then # check if there are any nfs options @@ -335,8 +314,7 @@ setup_unionfs () then # FIXME: handle PERSISTENCE_READONLY unionmountopts="-t ${cow_fstype} -o noatime,union,${cow_mountopt} ${cowdevice}" - # unionmount only works with util-linux mount - mount.util-linux $unionmountopts "${unionmountpoint}" + mount_full $unionmountopts "${unionmountpoint}" else cow_dir="/live/overlay${dir}" rootfs_dir="${rootfs}${dir}" @@ -386,18 +364,16 @@ setup_unionfs () # Adding custom persistence if [ -n "${PERSISTENCE}" ] && [ -z "${NOPERSISTENCE}" ] then - local custom_mounts - custom_mounts="/tmp/custom_mounts.list" + local custom_mounts="/tmp/custom_mounts.list" rm -rf ${custom_mounts} 2> /dev/null # Gather information about custom mounts from devies detected as overlays get_custom_mounts ${custom_mounts} ${overlay_devices} - [ -n "${DEBUG}" ] && cp ${custom_mounts} "/lib/live/mount/persistence" + [ -n "${DEBUG}" ] && cp ${custom_mounts} "/live/persistence" # Now we do the actual mounting (and symlinking) - local used_overlays - used_overlays="" + local used_overlays="" used_overlays=$(activate_custom_mounts ${custom_mounts}) rm ${custom_mounts} @@ -411,6 +387,28 @@ setup_unionfs () done fi + # move all mountpoints to root filesystem + for _DIRECTORY in rootfs persistence + do + if [ -d "/live/${_DIRECTORY}" ] + then + mkdir -p "${rootmnt}/lib/live/mount/${_DIRECTORY}" + + for _MOUNT in $(ls /live/${_DIRECTORY}) + do + mkdir -p "${rootmnt}/lib/live/mount/${_DIRECTORY}/${_MOUNT}" + mount -o move "/live/${_DIRECTORY}/${_MOUNT}" "${rootmnt}/lib/live/mount/${_DIRECTORY}/${_MOUNT}" > /dev/null 2>&1 || \ + mount -o bind "/live/${_DIRECTORY}/${_MOUNT}" "${rootmnt}/lib/live/mount/${_DIRECTORY}/${_MOUNT}" || \ + log_warning_msg "W: failed to mount /live/${_DIRECTORY}/${_MOUNT} to ${rootmnt}/lib/live/mount/${_DIRECTORY}/${_MOUNT}" + done + fi + done + + mkdir -p "${rootmnt}/lib/live/mount/overlay" + mount -o move /live/overlay "${rootmnt}/lib/live/mount/overlay" > /dev/null 2>&1 || \ + mount -o bind /live/overlay "${rootmnt}/lib/live/mount/overlay" || \ + log_warning_msg "W: failed to mount /live/overlay to ${rootmnt}/lib/live/mount/overlay" + # ensure that a potentially stray tmpfs gets removed # otherways, initramfs-tools is unable to remove /live # and fails to boot