[Fedora-livecd-list] [PATCH] Boot a Live USB device as read-only after persisting some changes.
Frederick Grose
fgrose at sugarlabs.org
Mon Aug 19 14:52:54 UTC 2013
Harald has pushed the dracut part of this. Is this acceptable for
Rawhide spins?
--Fred
On Wed, Aug 14, 2013 at 4:42 PM, <fgrose at gmail.com> wrote:
> From: Frederick Grose <fgrose at sugarlabs.org>
>
> commit a6cd70fc9df2d299ed4f347461c33e4824df62f0
> Author: Frederick Grose <fgrose at sugarlabs.org>
>
> Enable read-only mounting of a persistent home.img filesystem.
> Enable one to call for filesystem checking of home.img before
> mounting on the next boot.
>
> ---
> fedora-live-base.ks | 24 ++++++++++++++++++++++--
> 1 file changed, 22 insertions(+), 2 deletions(-)
>
> diff --git a/fedora-live-base.ks b/fedora-live-base.ks
> index 6c76e96..0512f67 100644
> --- a/fedora-live-base.ks
> +++ b/fedora-live-base.ks
> @@ -116,9 +116,13 @@ mountPersistentHome() {
> elif [ ! -b "\$homedev" ]; then
> loopdev=\`losetup -f\`
> if [ "\${homedev##/run/initramfs/live}" != "\${homedev}" ]; then
> - action "Remounting live store r/w" mount -o remount,rw /run/initramfs/live
> + if [ "\$liverw" = rw ]; then
> + action "Remounting live store r/w" mount -o remount,rw /run/initramfs/live
> + else
> + opts="-r"
> + fi
> fi
> - losetup \$loopdev \$homedev
> + losetup \$opts \$loopdev \$homedev
> homedev=\$loopdev
> fi
>
> @@ -130,6 +134,22 @@ mountPersistentHome() {
> homedev=/dev/mapper/EncHome
> fi
>
> + # If read-only is requested, prepare a non-persistent overlay and snapshot target.
> + if [ "\$opts" = "-r" ]; then
> + dd if=/dev/null of=/run/initramfs/overlayfs/home_overlay bs=1024 count=1 seek=\$((512*1024)) 2> /dev/null
> + HOME_OVERLAY_LOOPDEV=\$(losetup -f)
> + losetup \$HOME_OVERLAY_LOOPDEV /run/initramfs/overlayfs/home_overlay
> + sz=\$(blockdev --getsz \$homedev)
> + echo 0 \$sz snapshot \$homedev \$HOME_OVERLAY_LOOPDEV N 8 | dmsetup create home-rw
> + homedev=/dev/mapper/home-rw
> + fi
> +
> + # Check the filesystem, if requested.
> + if [ -e /forcehomefsck ]; then
> + e2fsck -f -y -v \$homedev || e2fsck -f -y \$homedev
> + rm /forcehomefsck
> + fi
> +
> # and finally do the mount
> mount \$mountopts \$homedev /home
> # if we have /home under what's passed for persistent home, then
> --
> 1.8.3.1
>
More information about the livecd
mailing list