Adding upstream version 3.0~b3.
[live-boot-grml.git] / scripts / boot / 9990-overlay.sh
index cb12c4b..d377d34 100755 (executable)
@@ -155,9 +155,8 @@ setup_unionfs ()
 
        # tmpfs file systems
        touch /etc/fstab
-       mkdir -p /live
-       mount -t tmpfs tmpfs /live
        mkdir -p /live/overlay
+       mount -t tmpfs tmpfs /live/overlay
 
        # Looking for persistence devices or files
        if [ -n "${PERSISTENCE}" ] && [ -z "${NOPERSISTENCE}" ]
@@ -344,6 +343,12 @@ setup_unionfs ()
        # Correct the permissions of /:
        chmod 0755 "${rootmnt}"
 
+       # Correct the permission of /tmp:
+       if [ -d "${rootmnt}/tmp" ]
+       then
+               chmod 1777 "${rootmnt}"/tmp
+       fi
+
        live_rofs_list=""
        # SHOWMOUNTS is necessary for custom mounts with the union option
        # Since we may want to do custom mounts in user-space it's best to always enable SHOWMOUNTS
@@ -400,11 +405,30 @@ setup_unionfs ()
                done
        fi
 
+       # make /root/live writable for moving filesystems
        mkdir -p "${rootmnt}/live"
-       mount -o move /live "${rootmnt}/live" >/dev/null 2>&1 || mount -o bind /live "${rootmnt}/live" || log_warning_msg "Unable to move or bind /live to ${rootmnt}/live"
+       mount -t tmpfs tmpfs "${rootmnt}/live"
+
+       # move all mountpoints to root filesystem
+       for _DIRECTORY in rofs persistence
+       do
+               if [ -d "/live/${_DIRECTORY}" ]
+               then
+                       mkdir -p "${rootmnt}/live/${_DIRECTORY}"
+
+                       for _MOUNT in $(ls /live/${_DIRECTORY})
+                       do
+                               mkdir -p "${rootmnt}/live/${_DIRECTORY}/${_MOUNT}"
+                               mount -o move "/live/${_DIRECTORY}/${_MOUNT}" "${rootmnt}/live/${_DIRECTORY}/${_MOUNT}" > /dev/null 2>&1 || \
+                                       mount -o bind "/live/${_DIRECTORY}/${_MOUNT}" "${rootmnt}/live/${_DIRECTORY}/${_MOUNT}" || \
+                                       log_warning_msg "W: failed to mount /live/${_DIRECTORY}/${_MOUNT} to ${rootmnt}/live/${_DIRECTORY}/${_MOUNT}"
+                       done
+               fi
+       done
 
-       # shows cow fs on /overlay (FIXME: do we still need/want this? probably yes)
        mkdir -p "${rootmnt}/live/overlay"
-       mount -o move /live/overlay "${rootmnt}/live/overlay" >/dev/null 2>&1 || mount -o bind /overlay "${rootmnt}/live/overlay" || log_warning_msg "Unable to move or bind /overlay to ${rootmnt}/live/overlay"
+       mount -o move /live/overlay "${rootmnt}/live/overlay" > /dev/null 2>&1 || \
+               mount -o bind /overlay "${rootmnt}/live/overlay" || \
+               log_warning_msg "W: failed to mount /overlay to ${rootmnt}/live/overlay"
 
 }