X-Git-Url: http://git.grml.org/?a=blobdiff_plain;f=scripts%2Flive;h=5af7ad8e93dedb6047859ce68f4c3eea56c12851;hb=f12da76bfe6fa2d134788541d7c74512a3ebb17a;hp=970853c79e020ff5c07356f77b5c6b14f20e4f25;hpb=05dd30f7923913a060d7bef57b167386c988bc7c;p=live-boot-grml.git diff --git a/scripts/live b/scripts/live index 970853c..5af7ad8 100755 --- a/scripts/live +++ b/scripts/live @@ -395,19 +395,23 @@ Arguments () export UNIONTYPE fi - if [ "${PERSISTENT_ENCRYPTION}" = "luks" ] + if [ -z "${PERSISTENT_ENCRYPTION}" ] + then + PERSISTENT_ENCRYPTION="none" + export PERSISTENT_ENCRYPTION + elif echo ${PERSISTENT_ENCRYPTION} | grep -qe "\" then if ! modprobe dm-crypt then log_warning_msg "Unable to load module dm-crypt" - PERSISTENT_ENCRYPTION="none" + PERSISTENT_ENCRYPTION=$(echo ${PERSISTENT_ENCRYPTION} | sed -e 's/\" then overlays="${root_persistence} ${home_persistence}" fi - if echo ${PERSISTENT_METHOD} | grep -qw snapshot + if echo ${PERSISTENT_METHOD} | grep -qe "\" then snapshots="${root_snapshot_label} ${home_snapshot_label}" fi @@ -1444,16 +1448,17 @@ setup_unionfs () then cowdevice=${cowprobe} cow_fstype=$(get_fstype "${cowprobe}") - cow_mountopt="rw,noatime" + if [ -z "${PERSISTENT_READONLY}" ] + then + cow_mountopt="rw,noatime" + else + cow_mountopt="ro,noatime" + fi if [ "${FORCEPERSISTENTFSCK}" = "Yes" ] then fsck -y ${cowdevice} fi - else - cowdevice="tmpfs" - cow_fstype="tmpfs" - cow_mountopt="rw,noatime,mode=755" fi elif [ -n "${NFS_COW}" ] && [ -z "${NOPERSISTENT}" ] then @@ -1466,6 +1471,12 @@ setup_unionfs () nfs_cow_opts="-o nolock" nfs_cow=${NFS_COW} fi + + if [ -n "${PERSISTENT_READONLY}" ] + then + nfs_cow_opts="${nfs_cow_opts},nocto,ro" + fi + mac="$(get_mac)" if [ -n "${mac}" ] then @@ -1474,7 +1485,10 @@ setup_unionfs () else panic "unable to determine mac address" fi - else + fi + + if [ -z "${cowdevice}" ] + then cowdevice="tmpfs" cow_fstype="tmpfs" cow_mountopt="rw,noatime,mode=755" @@ -1482,16 +1496,23 @@ setup_unionfs () if [ "${UNIONTYPE}" != "unionmount" ] then + if [ -n "${PERSISTENT_READONLY}" ] + then + persistent_root="/$(basename ${cowdevice})-backing" + mkdir -p ${persistent_root} + else + persistent_root="/cow" + fi if [ "${cow_fstype}" = "nfs" ] then log_begin_msg \ - "Trying nfsmount ${nfs_cow_opts} ${cowdevice} /cow" - nfsmount ${nfs_cow_opts} ${cowdevice} /cow || \ - panic "Can not mount ${cowdevice} (n: ${cow_fstype}) on /cow" + "Trying nfsmount ${nfs_cow_opts} ${cowdevice} ${persistent_root}" + nfsmount ${nfs_cow_opts} ${cowdevice} ${persistent_root} || \ + panic "Can not mount ${cowdevice} (n: ${cow_fstype}) on ${persistent_root}" else - mount -t ${cow_fstype} -o ${cow_mountopt} ${cowdevice} /cow || \ - panic "Can not mount ${cowdevice} (o: ${cow_fstype}) on /cow" + mount -t ${cow_fstype} -o ${cow_mountopt} ${cowdevice} ${persistent_root} || \ + panic "Can not mount ${cowdevice} (o: ${cow_fstype}) on ${persistent_root}" fi fi @@ -1549,9 +1570,19 @@ setup_unionfs () mount_full $unionmountopts "${unionmountpoint}" ;; + overlayfs) + unionmountopts="-o noatime,${noxino_opt},lowerdir=${unionro},upperdir=${unionrw}" + mount -t ${UNIONTYPE} ${unionmountopts} ${UNIONTYPE} "${unionmountpoint}" + ;; *) - unionmountopts="-o noatime,${noxino_opt}dirs=${unionrw}=rw:${unionro}=${roopt}" + if [ -n "${PERSISTENT_READONLY}" ] + then + mount -t tmpfs -o rw,noatime,mode=755 tmpfs "${unionrw}" + unionmountopts="-o noatime,${noxino_opt}dirs=${unionrw}=rw:${persistent_root}=${roopt}:${unionro}=${roopt}" + else + unionmountopts="-o noatime,${noxino_opt}dirs=${unionrw}=rw:${unionro}=${roopt}" + fi mount -t ${UNIONTYPE} ${unionmountopts} ${UNIONTYPE} "${unionmountpoint}" ;; esac || \ @@ -1574,7 +1605,17 @@ setup_unionfs () 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"