[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