Fixing persistence-media option when no devices are attached.
[live-boot-grml.git] / scripts / boot / 9990-overlay.sh
index acb2e91..96c3331 100755 (executable)
@@ -189,19 +189,23 @@ setup_unionfs ()
                        done
                fi
 
-               case "${PERSISTENCE_MEDIA}" in
-                       removable)
-                               whitelistdev="$(removable_dev)"
-                               ;;
-
-                       removable-usb)
-                               whitelistdev="$(removable_usb_dev)"
-                               ;;
+               local whitelistdev=""
+               if [ -n "${PERSISTENCE_MEDIA}" ]
+               then
+                       case "${PERSISTENCE_MEDIA}" in
+                               removable)
+                                       whitelistdev="$(removable_dev)"
+                                       ;;
 
-                       *)
-                               whitelistdev=""
-                               ;;
-               esac
+                               removable-usb)
+                                       whitelistdev="$(removable_usb_dev)"
+                                       ;;
+                       esac
+                       if [ -z "${whitelistdev}" ]
+                       then
+                               whitelistdev="ignore_all_devices"
+                       fi
+               fi
 
                if is_in_comma_sep_list overlay ${PERSISTENCE_METHOD}
                then
@@ -209,29 +213,32 @@ setup_unionfs ()
                fi
 
                local overlay_devices=""
-               for media in $(find_persistence_media "${overlays}" "${whitelistdev}")
-               do
-                       media="$(echo ${media} | tr ":" " ")"
+               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}"
-                                       ;;
+                               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}"
-                                       ;;
+                                       ${old_home_overlay_label}=*)
+                                               device="${media#*=}"
+                                               fix_backwards_compatibility ${device} /home bind
+                                               overlay_devices="${overlay_devices} ${device}"
+                                               ;;
 
-                               ${custom_overlay_label}=*)
-                                       device="${media#*=}"
-                                       overlay_devices="${overlay_devices} ${device}"
-                                       ;;
-                        esac
-               done
+                                       ${custom_overlay_label}=*)
+                                               device="${media#*=}"
+                                               overlay_devices="${overlay_devices} ${device}"
+                                               ;;
+                                esac
+                       done
+               fi
        elif [ -n "${NFS_COW}" ] && [ -z "${NOPERSISTENCE}" ]
        then
                # check if there are any nfs options
@@ -373,6 +380,29 @@ setup_unionfs ()
                esac
        done
 
+       # move all /live mountpoints that the custom persistence
+       # system depends on into /lib/live on the root filesystem
+       for _DIRECTORY in rootfs
+       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"
+
        # Adding custom persistence
        if [ -n "${PERSISTENCE}" ] && [ -z "${NOPERSISTENCE}" ]
        then
@@ -382,7 +412,7 @@ setup_unionfs ()
                # Gather information about custom mounts from devies detected as overlays
                get_custom_mounts ${custom_mounts} ${overlay_devices}
 
-               [ -n "${DEBUG}" ] && cp ${custom_mounts} "/live/persistence"
+               [ -n "${DEBUG}" ] && cp ${custom_mounts} "/lib/live/mount/persistence"
 
                # Now we do the actual mounting (and symlinking)
                local used_overlays=""
@@ -399,28 +429,6 @@ 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