Adding persistent-method=METHOD...
authorTails developers <amnesia@boum.org>
Tue, 8 Nov 2011 20:14:59 +0000 (21:14 +0100)
committerDaniel Baumann <daniel@debian.org>
Thu, 24 Nov 2011 08:42:08 +0000 (09:42 +0100)
The comma-separated list METHOD... specifies which types of persistent
setups we allow. Current possible METHODs are {snapshot, overlay}. The
default value is both, i.e. persistent-method=snapshot,overlay.

scripts/live

index 24dc468..c3732fe 100755 (executable)
@@ -253,6 +253,10 @@ Arguments ()
                                PERSISTENT_MEDIA="${ARGUMENT#*=}"
                                export PERSISTENT_MEDIA
                                ;;
+                       persistent-method=*)
+                               PERSISTENT_METHOD="${ARGUMENT#*=}"
+                               export PERSISTENT_METHOD
+                               ;;
 
                        persistent-path=*)
                                PERSISTENT_PATH="${ARGUMENT#persistent-path=}"
@@ -387,6 +391,12 @@ Arguments ()
                export UNIONTYPE
        fi
 
+       if [ -n "${PERSISTENT}" ] && [ -z "${PERSISTENT_METHOD}" ]
+       then
+               PERSISTENT_METHOD="snapshot,overlay"
+               export PERSISTENT_METHOD
+       fi
+
        if [ -n "${PERSISTENT}" ] && [ -z "${PERSISTENT_STORAGE}" ]
        then
                PERSISTENT_STORAGE="filesystem,file"
@@ -1385,30 +1395,37 @@ setup_unionfs ()
                                ;;
                esac
 
-               # search for label and files (this could be hugely optimized)
-               cowprobe=$(find_cow_device "${root_persistence}" "${blacklistdev}" "${whitelistdev}")
-               if [ -b "${cowprobe}" ]
+               if echo ${PERSISTENT_METHOD} | grep -qw overlay
                then
-                       # Blacklist /cow device, to avoid inconsistent setups for overlapping snapshots
-                       # makes sense to have both persistence for /cow and /home mounted, maybe also with
-                       # snapshots to be sure to really store some e.g key config files,
-                       # but not on the same media
-                       blacklistdev="${cowprobe}"
-                       PERSISTENCE_IS_ON="1"
-                       export PERSISTENCE_IS_ON
+                       # search for label and files (this could be hugely optimized)
+                       cowprobe=$(find_cow_device "${root_persistence}" "${blacklistdev}" "${whitelistdev}")
+                       if [ -b "${cowprobe}" ]
+                       then
+                               # Blacklist /cow device, to avoid inconsistent setups for overlapping snapshots
+                               # makes sense to have both persistence for /cow and /home mounted, maybe also with
+                               # snapshots to be sure to really store some e.g key config files,
+                               # but not on the same media
+                               blacklistdev="${cowprobe}"
+                               PERSISTENCE_IS_ON="1"
+                               export PERSISTENCE_IS_ON
+                       fi
+                       # homecow just mount something on /home, this should be generalized some way
+                       homecow=$(find_cow_device "${home_persistence}" "${blacklistdev}" "${whitelistdev}")
+                       if [ -b "${homecow}" ]
+                       then
+                               PERSISTENCE_IS_ON="1"
+                               export PERSISTENCE_IS_ON
+                       fi
                fi
-               # homecow just mount something on /home, this should be generalized some way
-               homecow=$(find_cow_device "${home_persistence}" "${blacklistdev}" "${whitelistdev}")
-               if [ -b "${homecow}" ]
+
+               if echo ${PERSISTENT_METHOD} | grep -qw snapshot
                then
-                       PERSISTENCE_IS_ON="1"
-                       export PERSISTENCE_IS_ON
+                       root_snapdata=$(find_snap "${root_snapshot_label}" "${blacklistdev}" "${whitelistdev}")
+                       # This second type should be removed when snapshot will get smarter,
+                       # hence when "/etc/live-snapshot*list" will be supported also by
+                       # ext2|ext3|ext4|jffs2 snapshot types.
+                       home_snapdata=$(find_snap "${home_snapshot_label}" "${blacklistdev}" "${whitelistdev}")
                fi
-               root_snapdata=$(find_snap "${root_snapshot_label}" "${blacklistdev}" "${whitelistdev}")
-               # This second type should be removed when snapshot will get smarter,
-               # hence when "/etc/live-snapshot*list" will be supported also by
-               # ext2|ext3|ext4|jffs2 snapshot types.
-               home_snapdata=$(find_snap "${home_snapshot_label}" "${blacklistdev}" "${whitelistdev}")
 
                if [ -b "${cowprobe}" ]
                then