Skip to content

Instantly share code, notes, and snippets.

@bmr-cymru
Last active November 4, 2025 14:29
Show Gist options
  • Select an option

  • Save bmr-cymru/1f8ff5dc46038d9530fd23dc9b720212 to your computer and use it in GitHub Desktop.

Select an option

Save bmr-cymru/1f8ff5dc46038d9530fd23dc9b720212 to your computer and use it in GitHub Desktop.

= Btrfs with Full System Snapshots using snapm and boom =

== Summary == This change is about fixing the remaining issues in the installer, bootloader setup, and software management stack. When a user selects a Btrfs-based installation in Fedora, it will set up an optimal Btrfs configuration (including /boot on Btrfs). The system will be configured to automatically create full OS snapshots for each package management transaction using snapm. The boom boot manager will be configured to create bootloader entries for these snapshots, allowing a user to easily boot into a previous system state if necessary.

== Owner ==

Name: [[User:ngompa| Neal Gompa]], [[User:bmr|Bryn M. Reeves]],

Email: ngompa13@gmail.com, bmr@redhat.com

Release notes owner:

== Current status ==

Targeted release: [[Releases/45 | Fedora 45]]

Last updated: {{REVISIONYEAR}}-{{REVISIONMONTH}}-{{REVISIONDAY2}}

Tracker bug:

== Detailed Description == Btrfs is a next-generation, volume-managing filesystem that provides facilities for spanning multiple disks with integrated RAID, cheap filesystem snapshots due to its copy-on-write nature, and strong integrity through data and metadata checksumming. However, in Fedora, the ability to take advantage of this has been handicapped by issues across Fedora-specific tools at the lower levels of the distribution that kept us from using these features to their fullest extent.

This change encompasses the work to fix these issues in those tools so that if a user wishes to set up Fedora with Btrfs, they get a first-class experience using the filesystem. We will be using snapm for snapshot management and boom for bootloader integration.

== Benefit to Fedora == This will enable users on Fedora to finally be able to use a full Btrfs disk configuration without custom work outside of the installer. It will also help with improving the safety of software updates for those using Btrfs by having the system configured to automatically generate full system snapshots and boot entries for those snapshots for rescue/recovery purposes. In addition, this will enable future work on interesting custom alternative approaches for producing appliances (such as appliances built so that they receive updates via btrfs send/receive atomically and re-root) without unusual tooling.

== Scope ==

Proposal owners:

Adjust the default proposed Btrfs layout by Anaconda to be more optimal (potentially [https://rootco.de/2018-01-19-opensuse-btrfs-subvolumes/ derived from the openSUSE one]).

Add support for automatically configuring snapm and the dnf-plugin-snapm on Btrfs installs.

Integrate boom to automatically create and manage boot entries for snapshots generated by snapm, ensuring they are available in the GRUB 2 menu.

Other developers:

Include snapm, python3-snapm, dnf-plugin-snapm, and boom in the live/install media so that they can be configured during installation.

Release engineering: [https://pagure.io/releng/issue/7591 #7591] UPDATE ME (a check of an impact with Release Engineering is needed) ** [[Fedora_Program_Management/ReleaseBlocking/Fedora{{FedoraVersionNumber|next}}|List of deliverables]]: *** Live Media: Addition of snapm, python3-snapm, dnf-plugin-snapm, and boom on all images. *** Install DVD: Addition of snapm, python3-snapm, dnf-plugin-snapm, and boom for Anaconda to install when Btrfs is selected. *** Netinstall: Addition of snapm, python3-snapm, dnf-plugin-snapm, and boom for Anaconda to install when Btrfs is selected.

Policies and guidelines: N/A (not needed for this Change)

Trademark approval: N/A (not needed for this Change)

== Upgrade/compatibility impact == N/A (enables new functionality previously unavailable in Fedora)

== How To Test ==

Basic flow:

Set up the system fully on Btrfs using the installer.

Ensure snapshots are taken automatically when package management actions happen (e.g., dnf install, dnf update).

Verify the snapshot is registered by boom and able to be selected to boot from in the GRUB menu.

Verify boot-to-snapshot function lets you boot into that older system state.

Verify that you can manage snapshots and boot entries using the snapm and boom command-line tools.

== User Experience == When users select Btrfs for their system on install, they will get a Fedora system that will automatically snapshot itself on software management actions. They will have the ability to select those snapshots from the boot menu to boot into for recovery purposes, with the boot entries being managed transparently.

== Dependencies ==

anaconda

boom-boot

grub2

snapm [snapshotmanager/snapm#382 BTRFS support]

python3-snapm

dnf-plugin-snapm [snapshotmanager/snapm#539 event-driven snapset creation]

== Contingency Plan ==

Contingency mechanism: Disable auto-configuration of snapm and boom in Anaconda.

Contingency deadline: Beta freeze

Blocks release? Yes

Blocks product? N/A

== Documentation ==

[https://snapm.readthedocs.io/en/latest/ snapm Documentation]

[https://boom.readthedocs.io/en/latest/ boom Documentation]

[https://rootco.de/2018-01-19-opensuse-btrfs-subvolumes/ openSUSE Btrfs layout]

== Release Notes == Fedora now offers automated system snapshots on Btrfs installations. Using the powerful snapm and boom tools, the system automatically creates a snapshot before any package management operation. If an update causes issues, users can easily reboot into a previous, working system state by selecting the snapshot from the boot menu.

@RokeJulianLockhart
Copy link

@bmr-cymru, doesn't appear to be rendering as CommonMark. Is this a dialect that GHFM doesn't support?

@bmr-cymru
Copy link
Author

@RokeJulianLockhart right - GitHub doesn't seem to support rendering CommonMark files with the .md extension properly (or any extension, fwiw). I should probably move it over to a draft page on https://fedoraproject.org/wiki/ for the next revision.

@RokeJulianLockhart
Copy link

@bmr-cymru, the reason that I ask is that it should. However, I don't believe that any of that is CommonMark. Certainly not the hyperlink syntax. Have you confused it for MediaWiki's WikiText?

@bmr-cymru
Copy link
Author

@RokeJulianLockhart you're right - the markup is all taken from the original Fedora wiki Change proposal:

https://fedoraproject.org/w/index.php?title=Changes/BtrfsWithFullSystemSnapshots&action=edit

I just looked up https://fedoraproject.org/wiki/Help:Wiki_syntax_and_markup and it is indeed MediaWiki (I haven't edited the Fedora wiki before). I'll create a page for future revisions since that's the format it will want to be in ultimately.

@Conan-Kudo
Copy link

Might as well just update that wiki page, since we'll submit it once we have everything fleshed out.

@bmr-cymru
Copy link
Author

Might as well just update that wiki page, since we'll submit it once we have everything fleshed out.

Will do

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment