Adding debian version 4.0~a1-1.
[live-boot-grml.git] / scripts / boot / 9990-overlay.sh
index 098111c..e8e00b6 100755 (executable)
@@ -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