Merge branch 'debian-next' into master-next
[live-boot-grml.git] / scripts / boot / 9990-main.sh
index ba77dd4..fd10e5d 100755 (executable)
@@ -32,6 +32,12 @@ Main ()
                . /conf/param.conf
        fi
 
+       if [ -n "${FUSE_MOUNT}" ]
+       then
+               # fuse does not work with klibc mount
+               ln -f /bin/mount.util-linux /bin/mount
+       fi
+
        # Needed here too because some things (*cough* udev *cough*)
        # changes the timeout
 
@@ -129,10 +135,23 @@ Main ()
                mount_images_in_directory "${livefs_root}" "${rootmnt}" "${mac}"
        fi
 
+       # At this point /root should contain the final root filesystem.
+       # Move all mountpoints below /live into /root/lib/live/mount.
+       # This has to be done after mounting the root filesystem to /
+       # otherwise these mount points won't be accessible from the running system.
+       for _MOUNT in $(cat /proc/mounts | cut -f 2 -d " " | grep -e "^/live/")
+       do
+               local newmount
+               newmount="${rootmnt}/lib/live/mount/${_MOUNT#/live/}"
+               mkdir -p "${newmount}"
+               mount -o move "${_MOUNT}" "${newmount}" > /dev/null 2>&1 || \
+               mount -o bind "${_MOUNT}" "${newmount}" > /dev/null || \
+               log_warning_msg "W: failed to move or bindmount ${_MOUNT} to ${newmount}"
+       done
 
        if [ -n "${ROOT_PID}" ]
        then
-               echo "${ROOT_PID}" > "${rootmnt}"/live/root.pid
+               echo "${ROOT_PID}" > "${rootmnt}"/lib/live/root.pid
        fi
 
        log_end_msg
@@ -145,9 +164,6 @@ Main ()
                        ;;
        esac
 
-       # Move to the new root filesystem so that programs there can get at it.
-       mkdir -p /root/live/image
-       mount --move /live/image /root/live/image
 
        # aufs2 in kernel versions around 2.6.33 has a regression:
        # directories can't be accessed when read for the first the time,
@@ -155,13 +171,6 @@ Main ()
        # when booting FAI, this simple workaround solves it
        ls /root/* >/dev/null 2>&1
 
-       # Move findiso directory to the new root filesystem so that programs there can get at it.
-       if [ -d /live/findiso ]
-       then
-               mkdir -p /root/live/findiso
-               mount -n --move /live/findiso /root/live/findiso
-       fi
-
        # if we do not unmount the ISO we can't run "fsck /dev/ice" later on
        # because the mountpoint is left behind in /proc/mounts, so let's get
        # rid of it when running from RAM
@@ -169,10 +178,10 @@ Main ()
        then
                losetup -d /dev/loop0
 
-               if is_mountpoint /root/live/findiso
+               if is_mountpoint /root/lib/live/mount/findiso
                then
-                       umount /root/live/findiso
-                       rmdir --ignore-fail-on-non-empty /root/live/findiso \
+                       umount /root/lib/live/mount/findiso
+                       rmdir --ignore-fail-on-non-empty /root/lib/live/mount/findiso \
                                >/dev/null 2>&1 || true
                fi
        fi