X-Git-Url: http://git.grml.org/?a=blobdiff_plain;f=components%2F9990-overlay.sh;h=a64c78b8946b135ec9ac2f5ad4ce4c0b28d2d3b1;hb=822706beb66f72389dc5e9328b52f1a9c0da04fe;hp=6b620938fe496bffd3410c8327f118e13404c20d;hpb=a331218718282c5496ff062a0f6aa55908224862;p=live-boot-grml.git diff --git a/components/9990-overlay.sh b/components/9990-overlay.sh index 6b62093..a64c78b 100755 --- a/components/9990-overlay.sh +++ b/components/9990-overlay.sh @@ -8,25 +8,12 @@ setup_unionfs () rootmnt="${2}" addimage_directory="${3}" - case ${UNIONTYPE} in - aufs|unionfs|overlayfs) - modprobe -q -b ${UNIONTYPE} + modprobe -q -b ${UNIONTYPE} - if ! cut -f2 /proc/filesystems | grep -q "^${UNIONTYPE}\$" && [ -x /bin/unionfs-fuse ] - then - echo "${UNIONTYPE} not available, falling back to unionfs-fuse." - echo "This might be really slow." - - UNIONTYPE="unionfs-fuse" - fi - ;; - esac - - case "${UNIONTYPE}" in - unionfs-fuse) - modprobe fuse - ;; - esac + if ! cut -f2 /proc/filesystems | grep -q "^${UNIONTYPE}\$" + then + panic "${UNIONTYPE} not available." + fi # run-init can't deal with images in a subdir, but we're going to # move all of these away before it runs anyway. No, we're not, @@ -123,22 +110,15 @@ setup_unionfs () ;; esac - case "${UNIONTYPE}" in - unionmount) - mpoint="${rootmnt}" - rootfslist="${rootmnt} ${rootfslist}" - ;; - - *) - mpoint="${croot}/${imagename}" - rootfslist="${mpoint} ${rootfslist}" - ;; - esac + mpoint="${croot}/${imagename}" + rootfslist="${mpoint} ${rootfslist}" mkdir -p "${mpoint}" log_begin_msg "Mounting \"${image}\" on \"${mpoint}\" via \"${backdev}\"" mount -t "${fstype}" -o ro,noatime "${backdev}" "${mpoint}" || panic "Can not mount ${backdev} (${image}) on ${mpoint}" log_end_msg + else + log_warning_msg "Could not find image '${image}'. Most likely it is listed in a .module file, perhaps by mistake." fi done else @@ -263,27 +243,24 @@ setup_unionfs () cow_mountopt="rw,noatime,mode=755" fi - if [ "${UNIONTYPE}" != "unionmount" ] + if [ -n "${PERSISTENCE_READONLY}" ] && [ "${cowdevice}" != "tmpfs" ] then - if [ -n "${PERSISTENCE_READONLY}" ] && [ "${cowdevice}" != "tmpfs" ] - then - mount -t tmpfs -o rw,noatime,mode=755 tmpfs "/live/overlay" - root_backing="/live/persistence/$(basename ${cowdevice})-root" - mkdir -p ${root_backing} - else - root_backing="/live/overlay" - fi + mount -t tmpfs -o rw,noatime,mode=755 tmpfs "/live/overlay" + root_backing="/live/persistence/$(basename ${cowdevice})-root" + mkdir -p ${root_backing} + else + root_backing="/live/overlay" + fi - if [ "${cow_fstype}" = "nfs" ] - then - log_begin_msg \ - "Trying nfsmount ${nfs_cow_opts} ${cowdevice} ${root_backing}" - nfsmount ${nfs_cow_opts} ${cowdevice} ${root_backing} || \ - panic "Can not mount ${cowdevice} (n: ${cow_fstype}) on ${root_backing}" - else - mount -t ${cow_fstype} -o ${cow_mountopt} ${cowdevice} ${root_backing} || \ - panic "Can not mount ${cowdevice} (o: ${cow_fstype}) on ${root_backing}" - fi + if [ "${cow_fstype}" = "nfs" ] + then + log_begin_msg \ + "Trying nfsmount ${nfs_cow_opts} ${cowdevice} ${root_backing}" + nfsmount ${nfs_cow_opts} ${cowdevice} ${root_backing} || \ + panic "Can not mount ${cowdevice} (n: ${cow_fstype}) on ${root_backing}" + else + mount -t ${cow_fstype} -o ${cow_mountopt} ${cowdevice} ${root_backing} || \ + panic "Can not mount ${cowdevice} (o: ${cow_fstype}) on ${root_backing}" fi rootfscount=$(echo ${rootfslist} |wc -w) @@ -310,34 +287,23 @@ setup_unionfs () cow_dirs="/" fi - if [ "${cow_fstype}" != "tmpfs" ] && [ "${cow_dirs}" != "/" ] && [ "${UNIONTYPE}" = "unionmount" ] - then - true # FIXME: Maybe it does, I don't really know. - #panic "unionmount does not support subunions (${cow_dirs})." - fi - for dir in ${cow_dirs}; do unionmountpoint="${rootmnt}${dir}" mkdir -p ${unionmountpoint} - if [ "${UNIONTYPE}" = "unionmount" ] + cow_dir="/live/overlay${dir}" + rootfs_dir="${rootfs}${dir}" + mkdir -p ${cow_dir} + if [ -n "${PERSISTENCE_READONLY}" ] && [ "${cowdevice}" != "tmpfs" ] then - # FIXME: handle PERSISTENCE_READONLY - unionmountopts="-t ${cow_fstype} -o noatime,union,${cow_mountopt} ${cowdevice}" - # unionmount only works with util-linux mount - mount.util-linux $unionmountopts "${unionmountpoint}" + do_union ${unionmountpoint} ${cow_dir} ${root_backing} ${rootfs_dir} else - cow_dir="/live/overlay${dir}" - rootfs_dir="${rootfs}${dir}" - mkdir -p ${cow_dir} - if [ -n "${PERSISTENCE_READONLY}" ] && [ "${cowdevice}" != "tmpfs" ] - then - do_union ${unionmountpoint} ${cow_dir} ${root_backing} ${rootfs_dir} - else - do_union ${unionmountpoint} ${cow_dir} ${rootfs_dir} - fi + do_union ${unionmountpoint} ${cow_dir} ${rootfs_dir} fi || panic "mount ${UNIONTYPE} on ${unionmountpoint} failed with option ${unionmountopts}" done + # Remove persistence depending on boot parameter + Remove_persistence + # Correct the permissions of /: chmod 0755 "${rootmnt}" @@ -353,20 +319,12 @@ setup_unionfs () live_rootfs="/live/rootfs/${d##*/}" live_rootfs_list="${live_rootfs_list} ${live_rootfs}" mkdir -p "${live_rootfs}" - case d in + 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 + mount -o move "${d}" "${live_rootfs}" ;; esac done @@ -376,7 +334,7 @@ setup_unionfs () then local custom_mounts custom_mounts="/tmp/custom_mounts.list" - rm -rf ${custom_mounts} 2> /dev/null + rm -f ${custom_mounts} # Gather information about custom mounts from devies detected as overlays get_custom_mounts ${custom_mounts} ${overlay_devices} @@ -387,7 +345,7 @@ setup_unionfs () local used_overlays used_overlays="" used_overlays=$(activate_custom_mounts ${custom_mounts}) - rm ${custom_mounts} + rm -f ${custom_mounts} # Close unused overlays (e.g. due to missing $persistence_list) for overlay in ${overlay_devices}