[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 e3ad4752eb66317c2a9c21a76ff0a1b0ac53b32f
Author: Tails developers <amnesia at boum.org>
Date: Thu Feb 9 12:18:56 2012 +0100
Optionally mount custom mounts as unions.
This can potentially save a lot of space, and this type of persistence
doesn't hide changes to the read-only filesystem which can be both
good and bad.
diff --git a/scripts/live b/scripts/live
index abdc87c..fad7107 100755
--- a/scripts/live
+++ b/scripts/live
@@ -1564,6 +1564,34 @@ setup_unionfs ()
mkdir -p "${rootmnt}/live"
mount -t tmpfs tmpfs ${rootmnt}/live
+ live_rofs_list=""
+ # SHOWMOUNTS is necessary for custom mounts with the union option
+ if [ -n "${SHOWMOUNTS}" ] || ( [ -n "${PERSISTENT}" ] && [ -z "${NOPERSISTENT}" ] )
+ 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="${rootmnt}/live/${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
+
# Adding other custom mounts
if [ -n "${PERSISTENT}" ] && [ -z "${NOPERSISTENT}" ]
then
@@ -1628,7 +1656,7 @@ setup_unionfs ()
for opt in $(echo ${options} | tr ',' ' ');
do
case "${opt}" in
- "linkfiles")
+ linkfiles|union)
;;
*)
log_warning_msg "Skipping custom mount with unkown option: ${opt}"
@@ -1677,12 +1705,16 @@ setup_unionfs ()
while read source dest options # < ${custom_mounts}
do
local opt_linkfiles=""
+ local opt_union=""
for opt in $(echo ${options} | tr ',' ' ');
do
case "${opt}" in
- "linkfiles")
+ linkfiles)
opt_linkfiles="yes"
;;
+ union)
+ opt_union="yes"
+ ;;
esac
done
@@ -1716,8 +1748,6 @@ setup_unionfs ()
fi
fi
- # FIXME: could we instead only save the aufs-diff in the persistent media? implications? What about when there's changes in the live image?
-
# if ${source} doesn't exist on our persistent media we
# bootstrap it with $dest from the live filesystem.
# this both makes sense and is critical if we're
@@ -1727,18 +1757,38 @@ setup_unionfs ()
if [ -n "${PERSISTENT_READONLY}" ] || [ -n "${opt_linkfiles}" ]
then
continue
+ elif [ -n "${opt_union}" ]
+ then
+ # union's don't need to be bootstrapped
+ mkdir "${source}"
+ else
+ # ensure that $dest is not copied *into* $source
+ mkdir -p "$(dirname ${source})"
+ cp -a "${dest}" "${source}"
fi
- # ensure that $dest is not copied *into* $source
- mkdir -p "$(dirname ${source})"
- cp -a "${dest}" "${source}"
fi
+ rofs_dest_backing=""
+ for d in ${live_rofs_list}
+ do
+ rofs_dest_backing="${d}/$(echo ${dest} | sed -e "s|${rootmnt}||")"
+ if [ -d "${rofs_dest_backing}" ]
+ then
+ break
+ else
+ rofs_dest_backing=""
+ fi
+ done
+
if [ -z "${PERSISTENT_READONLY}" ]
then
if [ -n "${opt_linkfiles}" ]
then
links_source="${source}"
links_dest="${dest}"
+ elif [ -n "${opt_union}" ]
+ then
+ do_union ${dest} ${source} ${rofs_dest_backing}
else
mount --bind "${source}" "${dest}"
fi
@@ -1751,8 +1801,7 @@ setup_unionfs ()
fi
cow_dir="$(echo ${dest} | sed -e "s|${rootmnt}|/cow/|")"
mkdir -p ${cow_dir}
- # XXX: broken! will be fixed in the next few commits...
- do_union ${dest} ${cow_dir} ${source}
+ do_union ${dest} ${cow_dir} ${source} ${rofs_dest_backing}
fi
if [ -n "${opt_linkfiles}" ]
@@ -1771,32 +1820,6 @@ setup_unionfs ()
try_snap "${home_snapdata}" "${rootmnt}" "HOME" "/home"
fi
- if [ -n "${SHOWMOUNTS}" ]
- then
- for d in ${rofslist}
- do
- mkdir -p "${rootmnt}/live/${d##*/}"
-
- case d in
- *.dir)
- # do nothing # mount -o bind "${d}" "${rootmnt}/live/${d##*/}"
- ;;
-
- *)
- case "${UNIONTYPE}" in
- unionfs-fuse)
- mount -o bind "${d}" "${rootmnt}/live/${d##*/}"
- ;;
-
- *)
- mount -o move "${d}" "${rootmnt}/live/${d##*/}"
- ;;
- esac
- ;;
- esac
- done
- fi
-
# shows cow fs on /cow for use by live-snapshot
mkdir -p "${rootmnt}/live/cow"
mount -o move /cow "${rootmnt}/live/cow" >/dev/null 2>&1 || mount -o bind /cow "${rootmnt}/live/cow" || log_warning_msg "Unable to move or bind /cow to ${rootmnt}/live/cow"
--
live-boot
More information about the debian-live-changes
mailing list