Right now, it's easy enough to set up automatic snapshotting with Snapper triggered by the DNF Snapper plugin.
However, that in itself is not the complete story for this feature to be useful. Some work will be needed to align the capability with the bootloader team's efforts to unify on the Bootloader Spec.
Finally, it also needs to be straightforward to enable, as it is unlikely to be shipped active out of the box.
Talking to @dbrandonjohnson today led me down the path again on this and I remembered that we can probably use Boom for this. We need a DNF plugin to trigger snapshot creation similar to what Snapper does, though.
cc: @mcsontos
cc: @bmr
Brandon expressed interest in developing this within the context of CentOS Hyperscale and also bringing this into Fedora too.
See centos-sig-hyperscale/sig#111
Full system restores + automatic snapshot management and boot to a specific snapshot (from Grub2 menu) is already feasible with little effort on Fedora 36.
Look at point (6) in the above link regarding some negative aspects this setup has.
$ git clone https://github.com/Antynea/grub-btrfs.git $ cd grub-btrfs $ sudo make install $ sudo vim /etc/default/grub-btrfs/config ---snip--- GRUB_BTRFS_SHOW_TOTAL_SNAPSHOTS_FOUND="true" GRUB_BTRFS_GRUB_DIRNAME="/boot/grub2" GRUB_BTRFS_MKCONFIG=/usr/sbin/grub2-mkconfig GRUB_BTRFS_SCRIPT_CHECK=grub2-script-check ---snip--- $ sudo grub2-mkconfig -o /boot/grub2/grub.cfg $ sudo systemctl enable --now grub-btrfs.path
This bug is probably a blocker for this feature https://bugzilla.redhat.com/show_bug.cgi?id=2120845
Anyone who runs grub2-mkconfig on a system with BLS snippets that use rootflags=subvol=$ROOT to know which root to boot, will have this boot parameter stepped on in favor of whatever is in /etc/kernel/cmdline.
rootflags=subvol=$ROOT
/etc/kernel/cmdline
CentOS Stream bug grub2-mkconfig does not apply settings to BLS entries resulted in commit 3e40727 Skip machine ID check when updating BLS which means side by side installations of Fedora will have their BLS snippets' rootflags=subvol=$ROOT entry (wrongly) rewritten.
Anaconda calls grub2-mkconfig here which unconditionally steps on /boot/loader/entries/*.conf files even if my anaconda RP Don't remove existing BLS entries were accepted.
@chrismurphy does that GRUB bug also affect Silverblue or does Silverblue have its own workaround?
I'm not sure, I'd have to test it. There are some differences where Silverblue stores BLS snippets so it's possible it's not affected.
Looks like the Kubuntu Focus folks wrote a graphical tool for this for their laptops: https://github.com/kfocus/kfocus-source/tree/NN-2024-Q3/package-rollback
It might be interesting to look into this.
Log in to comment on this ticket.