[SCM] live-boot branch, debian, updated. debian/3.0_a25-1-72-gfc7a680
Daniel Baumann
daniel at debian.org
Thu Apr 5 06:21:39 UTC 2012
The following commit has been merged in the debian branch:
commit 13bb5656427cd5ad5475ceb48fe973c2f3b41f8c
Author: Tails developers <amnesia at boum.org>
Date: Wed Feb 8 16:26:39 2012 +0100
Refactor union mounting into its own function.
diff --git a/scripts/live b/scripts/live
index 9eaa073..08d6d74 100755
--- a/scripts/live
+++ b/scripts/live
@@ -1237,17 +1237,6 @@ setup_unionfs ()
# Let's just mount the read-only file systems first
rofslist=""
- if [ "${UNIONTYPE}" = "aufs" ]
- then
- roopt="rr+wh"
- noxino_opt="noxino,"
- elif [ "${UNIONTYPE}" = "unionfs-fuse" ]
- then
- roopt="RO"
- else
- roopt="ro"
- fi
-
if [ -z "${PLAIN_ROOT}" ]
then
# Read image names from ${MODULE}.module if it exists
@@ -1496,21 +1485,21 @@ setup_unionfs ()
then
if [ -n "${PERSISTENT_READONLY}" ]
then
- persistent_root="/$(basename ${cowdevice})-backing"
- mkdir -p ${persistent_root}
+ root_backing="/${rootmnt}/live/persistent/$(basename ${cowdevice})-root"
+ mkdir -p ${root_backing}
else
- persistent_root="/cow"
+ root_backing="/cow"
fi
if [ "${cow_fstype}" = "nfs" ]
then
log_begin_msg \
- "Trying nfsmount ${nfs_cow_opts} ${cowdevice} ${persistent_root}"
- nfsmount ${nfs_cow_opts} ${cowdevice} ${persistent_root} || \
- panic "Can not mount ${cowdevice} (n: ${cow_fstype}) on ${persistent_root}"
+ "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} ${persistent_root} || \
- panic "Can not mount ${cowdevice} (o: ${cow_fstype}) on ${persistent_root}"
+ mount -t ${cow_fstype} -o ${cow_mountopt} ${cowdevice} ${root_backing} || \
+ panic "Can not mount ${cowdevice} (o: ${cow_fstype}) on ${root_backing}"
fi
fi
@@ -1547,44 +1536,18 @@ setup_unionfs ()
unionmountpoint=""
for dir in ${cow_dirs}; do
- mkdir -p /cow${dir}
-
- unionmountpoint="${rootmnt}${dir}"
unionrw="/cow${dir}"
unionro="${rofs}${dir}"
- # We don't handle spaces and other junk gracefully here, hopefully not needed.
- case "${UNIONTYPE}" in
- unionfs-fuse)
- unionmountopts="-o cow -o noinitgroups -o default_permissions -o allow_other -o use_ino -o suid"
- unionmountopts="${unionmountopts} ${unionrw}=RW:${unionro}=RO"
- ( sysctl -w fs.file-max=391524 ; ulimit -HSn 16384
- unionfs-fuse ${unionmountopts} "${unionmountpoint}" ) && \
- ( mkdir -p /run/sendsigs.omit.d
- pidof unionfs-fuse >> /run/sendsigs.omit.d/unionfs-fuse || true )
- ;;
-
- unionmount)
- unionmountopts="-t ${cow_fstype} -o noatime,union,${cow_mountopt} ${cowdevice}"
- mount_full $unionmountopts "${unionmountpoint}"
- ;;
-
- overlayfs)
- unionmountopts="-o noatime,${noxino_opt},lowerdir=${unionro},upperdir=${unionrw}"
- mount -t ${UNIONTYPE} ${unionmountopts} ${UNIONTYPE} "${unionmountpoint}"
- ;;
-
- *)
- if [ -n "${PERSISTENT_READONLY}" ]
- then
- mount -t tmpfs -o rw,noatime,mode=755 tmpfs "${unionrw}"
- unionmountopts="-o noatime,${noxino_opt}dirs=${unionrw}=rw:${persistent_root}=${roopt}:${unionro}=${roopt}"
- else
- unionmountopts="-o noatime,${noxino_opt}dirs=${unionrw}=rw:${unionro}=${roopt}"
- fi
- mount -t ${UNIONTYPE} ${unionmountopts} ${UNIONTYPE} "${unionmountpoint}"
- ;;
- esac || \
- panic "mount ${UNIONTYPE} on ${unionmountpoint} failed with option ${unionmountopts}"
+ unionmountpoint="${rootmnt}${dir}"
+ mkdir -p ${unionrw}
+ if [ "${UNIONTYPE}" = "unionmount" ]
+ then
+ # FIXME: handle PERSISTENT_READONLY
+ unionmountopts="-t ${cow_fstype} -o noatime,union,${cow_mountopt} ${cowdevice}"
+ mount_full $unionmountopts "${unionmountpoint}"
+ else
+ do_union ${root_backing} ${unionrw} ${unionro} ${unionmountpoint}
+ fi || panic "mount ${UNIONTYPE} on ${unionmountpoint} failed with option ${unionmountopts}"
done
# Correct the permissions of /:
@@ -1783,7 +1746,7 @@ setup_unionfs ()
unionrw="$(echo ${dest} | sed -e "s|${rootmnt}|/cow/|")"
mkdir -p ${unionrw}
unionmountopts="noatime,${noxino_opt}dirs=${unionrw}=rw:${source}=${roopt}"
- mount -t "${UNIONTYPE}" -o "${unionmountopts}" "${UNIONTYPE}" "${dest}"
+ do_union ${root_backing} ${unionrw} ${source} ${dest}
fi
if [ -n "${opt_linkfiles}" ]
diff --git a/scripts/live-helpers b/scripts/live-helpers
index aacfe93..3ec1e7b 100644
--- a/scripts/live-helpers
+++ b/scripts/live-helpers
@@ -608,3 +608,53 @@ link_files ()
fi
done
}
+
+do_union () {
+ root_backing="${1}"
+ unionrw="${2}"
+ unionro="${3}"
+ unionmountpoint="${4}"
+
+ if [ "${UNIONTYPE}" = "aufs" ]
+ then
+ rw_opt="rw"
+ ro_opt="rr+wh"
+ noxino_opt="noxino,"
+ elif [ "${UNIONTYPE}" = "unionfs-fuse" ]
+ then
+ rw_opt="RW"
+ ro_opt="RO"
+ else
+ rw_opt="rw"
+ ro_opt="ro"
+ fi
+
+ case "${UNIONTYPE}" in
+ unionfs-fuse)
+ # FIXME: handle PERSISTENT_READONLY
+ unionmountopts="-o cow -o noinitgroups -o default_permissions -o allow_other -o use_ino -o suid"
+ unionmountopts="${unionmountopts} ${unionrw}=${rw_opt}:${unionro}=${ro_opt}"
+ ( sysctl -w fs.file-max=391524 ; ulimit -HSn 16384
+ unionfs-fuse ${unionmountopts} "${unionmountpoint}" ) && \
+ ( mkdir -p /run/sendsigs.omit.d
+ pidof unionfs-fuse >> /run/sendsigs.omit.d/unionfs-fuse || true )
+ ;;
+
+ overlayfs)
+ # FIXME: is PERSISTENT_READONLY possible? (overlayfs only handles two dirs, but perhaps they can be chained?)
+ unionmountopts="-o noatime,lowerdir=${unionro},upperdir=${unionrw}"
+ mount -t ${UNIONTYPE} ${unionmountopts} ${UNIONTYPE} "${unionmountpoint}"
+ ;;
+
+ *)
+ if [ -n "${PERSISTENT_READONLY}" ]
+ then
+ mount -t tmpfs -o rw,noatime,mode=755 tmpfs "${unionrw}"
+ unionmountopts="-o noatime,${noxino_opt}dirs=${unionrw}=${rw_opt}:${root_backing}=${ro_opt}:${unionro}=${ro_opt}"
+ else
+ unionmountopts="-o noatime,${noxino_opt}dirs=${unionrw}=${rw_opt}:${unionro}=${ro_opt}"
+ fi
+ mount -t ${UNIONTYPE} ${unionmountopts} ${UNIONTYPE} "${unionmountpoint}"
+ ;;
+ esac
+}
--
live-boot
More information about the debian-live-changes
mailing list