PERSISTENT_PATH="${ARGUMENT#persistent-path=}"
export PERSISTENT_PATH
;;
+ persistent-read-only)
+ PERSISTENT_READONLY="Yes"
+ export PERSISTENT_READONLY
+ ;;
persistent-storage=*)
PERSISTENT_STORAGE="${ARGUMENT#persistent-storage=}"
export UNIONTYPE
fi
+ if [ -z "${PERSISTENT_ENCRYPTION}" ]
+ then
+ PERSISTENT_ENCRYPTION="none"
+ export PERSISTENT_ENCRYPTION
+ elif echo ${PERSISTENT_ENCRYPTION} | grep -qw luks
+ then
+ if ! modprobe dm-crypt
+ then
+ log_warning_msg "Unable to load module dm-crypt"
+ PERSISTENT_ENCRYPTION=$(echo ${PERSISTENT_ENCRYPTION} | sed -e 's/\<luks,\|,\?luks$//g')
+ export PERSISTENT_ENCRYPTION
+ fi
+
+ if [ ! -x /lib/cryptsetup/askpass ] || [ ! -x /sbin/cryptsetup ]
+ then
+ log_warning_msg "cryptsetup in unavailable"
+ PERSISTENT_ENCRYPTION=$(echo ${PERSISTENT_ENCRYPTION} | sed -e 's/\<luks,\|,\?luks$//g')
+ export PERSISTENT_ENCRYPTION
+ fi
+ fi
+
if [ -n "${PERSISTENT}" ] && [ -z "${PERSISTENT_METHOD}" ]
then
PERSISTENT_METHOD="snapshot,overlay"
return 1
fi
- echo "export ${snap_type}SNAP=${snap_relpath}:${snapdev}:${snapfile}" >> snapshot.conf # for resync on reboot/halt
+ if [ -z ${PERSISTENT_READONLY} ]
+ then
+ echo "export ${snap_type}SNAP=${snap_relpath}:${snapdev}:${snapfile}" >> snapshot.conf # for resync on reboot/halt
+ fi
return 0
}
if [ -b "${homecow}" ]
then
- mount -t $(get_fstype "${homecow}") -o rw,noatime "${homecow}" "${rootmnt}/home"
+ if [ -z "${PERSISTENT_READONLY}" ]
+ then
+ mount -t $(get_fstype "${homecow}") -o rw,noatime "${homecow}" "${rootmnt}/home"
+ else
+ homerw="/cow/home"
+ homero="/$(basename ${homecow})-backing"
+ homemountpoint="${rootmnt}/home"
+ mkdir -p ${homerw} ${homero} ${homemountpoint}
+ mount -t $(get_fstype "${homecow}") -o ro "${homecow}" "${homero}"
+ mount -t "${UNIONTYPE}" -o "noatime,${noxino_opt}dirs=${homerw}=rw:${homero}=${roopt}" "${UNIONTYPE}" "${homemountpoint}"
+ fi
export HOMEMOUNTED=1 # used to proper calculate free space in do_snap_copy()
else
log_warning_msg "Unable to find the persistent home medium"