summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rwxr-xr-xbin/live-snapshot6
-rw-r--r--debian/live-boot.init5
-rwxr-xr-xscripts/live28
3 files changed, 31 insertions, 8 deletions
diff --git a/bin/live-snapshot b/bin/live-snapshot
index 08e5fd6..991e704 100755
--- a/bin/live-snapshot
+++ b/bin/live-snapshot
@@ -7,7 +7,7 @@
# for reuse in another live-boot session.
# Look at the manpage for more informations.
#
-# Copyright (C) 2006-2008 Marco Amadori <marco.amadori@gmail.com>
+# Copyright (C) 2006-2010 Marco Amadori <marco.amadori@gmail.com>
# Copyright (C) 2008 Chris Lamb <chris@chris-lamb.co.uk>
#
# This program is free software: you can redistribute it and/or modify
@@ -39,7 +39,7 @@ fi
. /usr/share/initramfs-tools/scripts/live-helpers
-LIVE_CONF="/etc/live.conf"
+LIVE_CONF="/etc/live/boot.d/snapshot.conf"
if [ -r "${LIVE_CONF}" ]
then
@@ -242,7 +242,7 @@ Defaults ()
# Parse resync string
if [ -n "${SNAP_RESYNC_STRING}" ]
then
- SNAP_COW=$(echo "${SNAP_RESYNC_STRING}" | sed -e 's|^/root\([^:.]*\).*$|'"${DEF_SNAP_COW}"'\1|')
+ SNAP_COW=$(echo "${SNAP_RESYNC_STRING}" | sed -r -e 's#^([^:]*).*$#'"${DEF_SNAP_COW}"'\1#')
SNAP_DEV=$(echo "${SNAP_RESYNC_STRING}" | cut -f2 -d ':')
SNAP_MNT=$(echo "${SNAP_RESYNC_STRING}" | cut -f3 -d ':')
DEST="${MOUNTP}/${SNAP_MNT}"
diff --git a/debian/live-boot.init b/debian/live-boot.init
index 548abca..6c3e665 100644
--- a/debian/live-boot.init
+++ b/debian/live-boot.init
@@ -21,12 +21,13 @@ PATH=/usr/sbin:/usr/bin:/sbin:/bin
NAME=live-boot
SCRIPTNAME=/etc/init.d/${NAME}
DO_SNAPSHOT=/sbin/live-snapshot
+SNAPSHOT_CONF="/etc/live/boot.d/snapshot.conf"
# Exit if system was not booted by live-boot
grep -qs boot=live /proc/cmdline || exit 0
-# Read configuration variable file if it is present
-[ -r /etc/live.conf ] && . /etc/live.conf
+# Read snapshot configuration variables
+[ -r ${SNAPSHOT_CONF} ] && . ${SNAPSHOT_CONF}
# Load the VERBOSE setting and other rcS variables
[ -f /etc/default/rcS ] && . /etc/default/rcS
diff --git a/scripts/live b/scripts/live
index 60a2c33..98129a5 100755
--- a/scripts/live
+++ b/scripts/live
@@ -965,6 +965,16 @@ try_snap ()
snapdata="${1}"
snap_mount="${2}"
snap_type="${3}"
+ snap_relpath="${4}"
+
+ if [ -z "${snap_relpath}" ]
+ then
+ # root snapshot, default usage
+ snap_relpath="/"
+ else
+ # relative snapshot (actually used just for "/home" snapshots)
+ snap_mount="${2}${snap_relpath}"
+ fi
if [ -n "${snapdata}" ] && [ ! -b "${snapdata}" ]
then
@@ -1045,11 +1055,11 @@ try_snap ()
fi
fi
else
- log_warning_msg "Impossible to include the ${snap_type} Snapshot"
+ log_warning_msg "Impossible to include the ${snap_type} Snapshot (o)"
return 1
fi
- echo "export ${snap_type}SNAP="/cow${snap_mount#$rootmnt}":${snapdev}:${snapfile}" >> /etc/live.conf # for resync on reboot/halt
+ echo "export ${snap_type}SNAP=${snap_relpath}:${snapdev}:${snapfile}" >> snapshot.conf # for resync on reboot/halt
return 0
}
@@ -1387,7 +1397,7 @@ setup_unionfs ()
# Look for other snapshots to copy in
try_snap "${root_snapdata}" "${rootmnt}" "ROOT"
# This second type should be removed when snapshot grow smarter
- try_snap "${home_snapdata}" "${rootmnt}/home" "HOME"
+ try_snap "${home_snapdata}" "${rootmnt}" "HOME" "/home"
fi
if [ -n "${SHOWMOUNTS}" ]
@@ -1796,6 +1806,18 @@ mountroot ()
# when booting FAI, this simple workaround solves it
ls /root/* >/dev/null 2>&1
+ # copy snapshot configuration if exists
+ if [ -f snapshot.conf ]
+ then
+ log_begin_msg "Copying snapshot.conf to ${rootmnt}/etc/live/boot.d"
+ if [ ! -d "${rootmnt}/etc/live/boot.d" ]
+ then
+ mkdir -p "${rootmnt}/etc/live/boot.d"
+ fi
+ cp snapshot.conf "${rootmnt}/etc/live/boot.d/"
+ log_end_msg
+ fi
+
maybe_break live-bottom
log_begin_msg "Running /scripts/live-bottom\n"