--- /dev/null
+# /etc/live-persistence.binds example
+#
+# If this file is present in the proper path, each uncommented not empty line
+# will be treated as a directory which should not be made persistent and
+# which it's content should be volatile.
+#
+# This is achieved by bind mounting on it a tmpfs clone of the directory specified
+
+# Exclude some standard temporary paths
+/tmp
+/var/log
+/var/cache
+
+# Firefox profiles are not always useful to remember
+/root/.mozilla
+live-initramfs (1.139.1-3.1) unstable; urgency=low
+
+ * Non-maintainer upload.
+
+ -- Marco Amadori <marco.amadori@vdavda.com> Mon, 29 Sep 2008 11:53:00 +0200
+
live-initramfs (1.139.1-3) unstable; urgency=medium
[ Chris Lamb ]
this list will be on the "top" of the aufs, directly below /cow. Without
this file, any images in the "/live" directory are loaded in alphanumeric order.
+ /etc/live-persistence.binds
+
+This optional file, which resides in the rootfs system, not in the live media as above mentioned files, if exists will be used as a list of directories which not need to be persistent and which their content does not need to survive reboots. This is achieved by bind mounting for each directory listed there a tmpfs on the original path. This will permits to save precious writes and speed up operations for content like web caches and temporary files (like e.g. /tmp and .mozilla) which are regenerated each time.
+
+
See also
--------
# snapshots to be sure to really store some e.g key config files,
# but not on the same media
blacklistdev="${cowprobe}"
+ PERSISTENCE_IS_ON="Yes"
+ export PERSISTENCE_IS_ON
fi
# homecow just mount something on /home, this should be generalized some way
homecow=$(find_cow_device "${home_persistence}" "${blacklistdev}")
+ if [ -b "${homecow}" ]
+ then
+ PERSISTENCE_IS_ON="Yes"
+ export PERSISTENCE_IS_ON
+ fi
root_snapdata=$(find_snap "${root_snapshot_label}" "${blacklistdev}")
# This second type should be removed when snapshot will get smarter,
# hence when "/etc/live-snapshot*list" will be supported also by
--- /dev/null
+#!/bin/sh
+
+# Persistence enhancer script
+# This script saves precious time on slow persistence devices/image files
+# and writes on flash based device.
+# a tmpfs on $PERSTMP is mounted and directories listed in
+# /etc/live-persistence.binds will be copied there and then bind mounted back.
+
+#set -e
+
+# initramfs-tools header
+
+PREREQ=""
+
+prereqs()
+{
+ echo "${PREREQ}"
+}
+
+case "${1}" in
+ prereqs)
+ prereqs
+ exit 0
+ ;;
+esac
+
+# live-initramfs header
+
+if [ -z "${PERSISTENT}" ] || [ -n "${NOPERSISTENT}" ] || [ -z "${PERSISTENCE_IS_ON}" ] || [ ! -f /root/etc/live-persistence.binds ]
+then
+ exit 0
+fi
+
+. /scripts/live-functions
+
+# live-initramfs script
+
+dirs="$(cat /root/etc/live-persistence.binds | grep -v '^#.*$' | grep -v '^ *$' | tr '\n' '\0')"
+if [ -z "${dirs}" ]
+then
+ exit 0
+fi
+
+log_begin_msg "Moving persistence bind mounts"
+
+PERSTMP="/root/live/persistence-binds"
+CPIO="/bin/cpio"
+
+if [ ! -d "${PERSTMP}" ]
+then
+ mkdir -p "${PERSTMP}"
+fi
+
+mount -t tmpfs tmpfs "${PERSTMP}"
+
+for dir in $(echo "${dirs}" | tr '\0' '\n')
+do
+ if [ ! -e "/root/${dir}" ] && [ ! -L "/root/${dir}" ]
+ then
+ # directory do not exists, create it
+ mkdir -p "/root/${dir}"
+ elif [ ! -d "/root/${dir}" ]
+ then
+ # it is not a directory, skip it
+ break
+ fi
+
+ # Copy previous content if any
+ cd "/root/${dir}"
+ find . -print0 | ${CPIO} -pumd0 "${PERSTMP}/${dir}"
+ cd "${OLDPWD}"
+
+ # Bind mount it to origin
+ mount -o bind "${PERSTMP}/${dir}" "/root/${dir}"
+done
+
+log_end_msg