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
- if true #[ -n "${SHOWMOUNTS}" ] || ( [ -n "${PERSISTENCE}" ] && [ -z "${NOPERSISTENCE}" ] 1)
- then
- # XXX: is the for loop really necessary? rofslist can only contain one item (see above XXX about EXPOSEDROOT) and this is also assumed elsewhere above (see use of $rofs above).
- for d in ${rofslist}
- do
- live_rofs="/live/rofs/${d##*/}"
- live_rofs_list="${live_rofs_list} ${live_rofs}"
- mkdir -p "${live_rofs}"
- case d in
- *.dir)
- # do nothing # mount -o bind "${d}" "${live_rofs}"
- ;;
- *)
- case "${UNIONTYPE}" in
- unionfs-fuse)
- mount -o bind "${d}" "${live_rofs}"
- ;;
-
- *)
- mount -o move "${d}" "${live_rofs}"
- ;;
- esac
- ;;
- esac
- done
- fi
+ for d in ${rofslist}
+ do
+ live_rofs="/live/rofs/${d##*/}"
+ live_rofs_list="${live_rofs_list} ${live_rofs}"
+ mkdir -p "${live_rofs}"
+ case d in
+ *.dir)
+ # do nothing # mount -o bind "${d}" "${live_rofs}"
+ ;;
+ *)
+ case "${UNIONTYPE}" in
+ unionfs-fuse)
+ mount -o bind "${d}" "${live_rofs}"
+ ;;
+
+ *)
+ mount -o move "${d}" "${live_rofs}"
+ ;;
+ esac
+ ;;
+ esac
+ done
# Adding custom persistence
if [ -n "${PERSISTENCE}" ] && [ -z "${NOPERSISTENCE}" ]
done
fi
- 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"
+ # make /root/lib/live writable for moving filesystems
+ mkdir -p "${rootmnt}/lib/live"
+ mount -t tmpfs tmpfs "${rootmnt}/lib/live"
+
+ # move all mountpoints to root filesystem
+ for _DIRECTORY in rofs persistence
+ do
+ if [ -d "/live/${_DIRECTORY}" ]
+ then
+ mkdir -p "${rootmnt}/lib/live/${_DIRECTORY}"
+
+ for _MOUNT in $(ls /live/${_DIRECTORY})
+ do
+ mkdir -p "${rootmnt}/lib/live/${_DIRECTORY}/${_MOUNT}"
+ mount -o move "/live/${_DIRECTORY}/${_MOUNT}" "${rootmnt}/lib/live/${_DIRECTORY}/${_MOUNT}" > /dev/null 2>&1 || \
+ mount -o bind "/live/${_DIRECTORY}/${_MOUNT}" "${rootmnt}/lib/live/${_DIRECTORY}/${_MOUNT}" || \
+ log_warning_msg "W: failed to mount /live/${_DIRECTORY}/${_MOUNT} to ${rootmnt}/lib/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"
+ mkdir -p "${rootmnt}/lib/live/overlay"
+ mount -o move /live/overlay "${rootmnt}/lib/live/overlay" > /dev/null 2>&1 || \
+ mount -o bind /live/overlay "${rootmnt}/lib/live/overlay" || \
+ log_warning_msg "W: failed to mount /live/overlay to ${rootmnt}/lib/live/overlay"
+ # ensure that a potentially stray tmpfs gets removed
+ # otherways, initramfs-tools is unable to remove /live
+ # and fails to boot
+ umount /live/overlay || true
}