croot="/"
# Let's just mount the read-only file systems first
- rofslist=""
+ rootfslist=""
if [ -z "${PLAIN_ROOT}" ]
then
if [ -d "${image}" ]
then
# it is a plain directory: do nothing
- rofslist="${image} ${rofslist}"
+ rootfslist="${image} ${rootfslist}"
elif [ -f "${image}" ]
then
if losetup --help 2>&1 | grep -q -- "-r\b"
case "${UNIONTYPE}" in
unionmount)
mpoint="${rootmnt}"
- rofslist="${rootmnt} ${rofslist}"
+ rootfslist="${rootmnt} ${rootfslist}"
;;
*)
mpoint="${croot}/${imagename}"
- rofslist="${mpoint} ${rofslist}"
+ rootfslist="${mpoint} ${rootfslist}"
;;
esac
log_begin_msg "Mounting \"${image_directory}\" on \"${croot}/filesystem\""
mount -t $(get_fstype "${image_directory}") -o ro,noatime "${image_directory}" "${croot}/filesystem" || \
panic "Can not mount ${image_directory} on ${croot}/filesystem" && \
- rofslist="${croot}/filesystem ${rofslist}"
+ rootfslist="${croot}/filesystem ${rootfslist}"
# probably broken:
mount -o bind ${croot}/filesystem $mountpoint
log_end_msg
fi
fi
- rofscount=$(echo ${rofslist} |wc -w)
+ rootfscount=$(echo ${rootfslist} |wc -w)
- rofs=${rofslist%% }
+ rootfs=${rootfslist%% }
if [ -n "${EXPOSED_ROOT}" ]
then
- if [ ${rofscount} -ne 1 ]
+ if [ ${rootfscount} -ne 1 ]
then
- panic "only one RO file system supported with exposedroot: ${rofslist}"
+ panic "only one RO file system supported with exposedroot: ${rootfslist}"
fi
- mount --bind ${rofs} ${rootmnt} || \
- panic "bind mount of ${rofs} failed"
+ mount --bind ${rootfs} ${rootmnt} || \
+ panic "bind mount of ${rootfs} failed"
if [ -z "${SKIP_UNION_MOUNTS}" ]
then
mount_full $unionmountopts "${unionmountpoint}"
else
cow_dir="/live/overlay${dir}"
- rofs_dir="${rofs}${dir}"
+ rootfs_dir="${rootfs}${dir}"
mkdir -p ${cow_dir}
if [ -n "${PERSISTENCE_READONLY}" ] && [ "${cowdevice}" != "tmpfs" ]
then
- do_union ${unionmountpoint} ${cow_dir} ${root_backing} ${rofs_dir}
+ do_union ${unionmountpoint} ${cow_dir} ${root_backing} ${rootfs_dir}
else
- do_union ${unionmountpoint} ${cow_dir} ${rofs_dir}
+ do_union ${unionmountpoint} ${cow_dir} ${rootfs_dir}
fi
fi || panic "mount ${UNIONTYPE} on ${unionmountpoint} failed with option ${unionmountopts}"
done
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
- 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
+ live_rootfs_list=""
+ for d in ${rootfslist}
+ do
+ live_rootfs="/live/rootfs/${d##*/}"
+ live_rootfs_list="${live_rootfs_list} ${live_rootfs}"
+ mkdir -p "${live_rootfs}"
+ case d in
+ *.dir)
+ # do nothing # mount -o bind "${d}" "${live_rootfs}"
+ ;;
+ *)
+ case "${UNIONTYPE}" in
+ unionfs-fuse)
+ mount -o bind "${d}" "${live_rootfs}"
+ ;;
+
+ *)
+ mount -o move "${d}" "${live_rootfs}"
+ ;;
+ esac
+ ;;
+ esac
+ done
# Adding custom persistence
if [ -n "${PERSISTENCE}" ] && [ -z "${NOPERSISTENCE}" ]
done
fi
- # 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
+ for _DIRECTORY in rootfs persistence
do
if [ -d "/live/${_DIRECTORY}" ]
then
- mkdir -p "${rootmnt}/lib/live/${_DIRECTORY}"
+ mkdir -p "${rootmnt}/lib/live/mount/${_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}"
+ 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/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"
+ 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
+ umount /live/overlay || true
}