Review
The holy grail of desktop engineering is a true immutable sandbox: the ability to boot into a historical snapshot, run risky updates or delete critical system binaries, and have those changes vanish into thin air upon a reboot. To solve this, SparkyLinux 8.4 was chosed (the leanest Debian testing base available) to build a 100% contained RAM sandbox from scratch.
This post is an immediate follow up for https://lxer.com/module/newswire/view/366777/index.html
On Sparky 8.4 up on completion of basic deployment we would have to add two btrfs subvolumes
$ sudo mkdir -p /mnt/btrfs_top
$ sudo mount -o subvolid=5 /dev/vda3 /mnt/btrfs_top
$ sudo btrfs subvolume create /mnt/btrfs_top/@cache
$ sudo btrfs subvolume create /mnt/btrfs_top/@log
$ sudo umount /mnt/btrfs_top
$ sudo rmdir /mnt/btrfs_top
Then add to /etc/fstab two rows
sudo tee -a /etc/fstab << 'EOF'
UUID=BTRFS-UUID /var/cache btrfs subvol=/@cache,defaults 0 0
UUID=BTRFS-UUID /var/log btrfs subvol=/@log,defaults 0 0
EOF
$ sudo systemctl daemon-reload
$ sudo mount -a
==============================================
Phase of Overlay Setup should look as follows
==============================================
$ sudo apt update
$ sudo apt install dracut dracut-core -y
Then update the line starting with "mount -t overlay LiveOS_rootfs" in file /usr/lib/dracut/modules.d/90overlayfs/mount-overlayfs.sh as shown below
if ! strstr "$(cat /proc/mounts)" LiveOS_rootfs; then
mount -t overlay LiveOS_rootfs -o "$ovlfs",upperdir=/run/overlayfs,workdir=/run/ovlwork "$NEWROOT"
fi
==============================================
Inject the working parameters exclusively into the Snapshot Configuration
$ sudo nano /etc/default/grub-btrfs/config
GRUB_BTRFS_SNAPSHOT_KERNEL_PARAMETERS="'rd.live.overlay.overlayfs=1'"
$ echo 'add_dracutmodules+=" overlayfs "' | sudo tee /etc/dracut.conf.d/overlayfs.conf
$ sudo dracut -H --hostonly-mode=sloppy --add overlayfs --force
$ sudo update-grub
Overlay instance status
boris@devs-stable:~$ uname -a
Linux devs-stable 6.12.101+deb13-amd64 #1 SMP PREEMPT_DYNAMIC Debian 6.12.101-1 (2026-08-05) x86_64 GNU/Linux
boris@devs-stable:~$ mount | grep 'on / '
LiveOS_rootfs on / type overlay (rw,relatime,lowerdir=/run/rootfsbase,upperdir=/run/overlayfs,workdir=/run/ovlwork,uuid=on)
boris@devs-stable:~$ df -Th
Filesystem Type Size Used Avail Use% Mounted on
LiveOS_rootfs overlay 3.1G 9.6M 3.1G 1% /run/rootfsbase
devtmpfs devtmpfs 4.0M 0 4.0M 0% /dev
tmpfs tmpfs 7.6G 12K 7.6G 1% /dev/shm
efivarfs efivarfs 256K 138K 114K 55% /sys/firmware/efi/efivars
tmpfs tmpfs 3.1G 9.6M 3.1G 1% /run
tmpfs tmpfs 5.0M 8.0K 5.0M 1% /run/lock
tmpfs tmpfs 7.6G 8.0K 7.6G 1% /tmp
tmpfs tmpfs 1.0M 0 1.0M 0% /run/credentials/systemd-journald.service
/dev/vda3 btrfs 68G 7.9G 59G 12% /home
/dev/vda3 btrfs 68G 7.9G 59G 12% /var/cache
/dev/vda3 btrfs 68G 7.9G 59G 12% /var/log
/dev/vda2 ext4 2.0G 48M 1.8G 3% /boot
/dev/vda1 vfat 300M 12M 288M 4% /boot/efi
tmpfs tmpfs 1.6G 112K 1.6G 1% /run/user/1000
boris@devs-stable:~$ lsblk -f
NAME FSTYPE FSVER LABEL UUID FSAVAIL FSUSE% MOUNTPOINTS
sr0
vda
├─vda1 vfat FAT32 BC5B-499E 287.8M 4% /boot/efi
├─vda2 ext4 1.0 47eb48b0-7552-4db8-a77a-ce37c5fa83e4 1.7G 2% /boot
└─vda3 btrfs 0ef48971-0c2d-4498-a2cb-b0ad655ac160 58.3G 12% /var/log
/var/cache
/home
/run/rootfsbase


No comments:
Post a Comment