Setting up btrfs snapshots on a pre-exisiting installation; is it possible?

Hi, I was looking into setting up btrfs snapshots for my system, it seems that all of the tutorials online are done from the OS installer. If it’s possible to configure post installation, how might I go about doing that?

It depends, if you chose EXT4, you can convert it to BTRFS, and as long as you have a UEFI partition for boot it will work, however, it is tricky.

I’ve had a quick read at this guide, and I think it is correct. It may still be easier and faster to do a reinstall.

hth

I’m not sure if this is what you are looking for, but Fedora Magazine has an article about how to manually create Btrfs snapshots. Everything is done post-installation.

If you decide to reinstall and set this all up from scratch, here are the steps i took in my most recent Fedora 44 KDE installation. I had Claude summarize and format it for readability. It includes adding the ability to select the snapshot you want right from the Grub menu:

Fedora KDE β€” Btrfs Snapshot & Rollback Setup Guide

A complete reference for setting up bootable snapshot rollback on Fedora, from install-time partitioning through day-to-day recovery.

1. Partitioning at Install Time (Anaconda)


Choose Btrfs as the filesystem for the root disk during Fedora installation.
Use custom/manual partitioning (not automatic) so you control the subvolume layout.
Recommended subvolume layout on the root disk:

@ β€” mounted at / (root subvolume)
@home β€” only if you're keeping home on the same disk; skip this if home lives on a second disk (see Pika Backup section below)
EFI System Partition (/boot/efi) β€” separate, non-Btrfs (FAT32)
/boot β€” kept as its own partition, ext4 or Btrfs depending on preference; keeping it separate simplifies GRUB snapshot booting



I use a second disk for /home: format it separately (Btrfs or your filesystem of choice) and mount it at /home β€” this keeps home data isolated from root snapshots and rollbacks.


2. Post-Install Package Installation

Install the supporting applications after first boot:

sudo dnf install snapper btrfs-assistant python3-dnf-plugin-snapper


snapper β€” creates and manages the actual Btrfs snapshots
btrfs-assistant β€” GUI for browsing, restoring, and configuring snapshots
python3-dnf-plugin-snapper β€” hooks into dnf so every sudo dnf upgrade automatically creates a pre/post snapshot pair


3. grub-btrfs Installation (Makes Snapshots Bootable from GRUB)

Fedora doesn't ship grub-btrfs as a package, so it needs to be built from source:

git clone https://github.com/Antynea/grub-btrfs.git
cd grub-btrfs
sudo make install


After installing, enable the service that regenerates the GRUB menu when new snapshots appear:


sudo systemctl enable --now grub-btrfsd


Run sudo grub2-mkconfig -o /boot/grub2/grub.cfg once after install to populate the initial menu.
This adds a "Fedora Linux Snapshots" submenu to GRUB, listing every available snapshot as a bootable entry.


4. Configure Snapper via Btrfs Assistant

Open Btrfs Assistant β†’ Snapper Settings and confirm/enable:


Timeline snapshots β€” automatic snapshots on a schedule (hourly/daily/etc.)
Boot snapshots β€” a snapshot taken at each boot
Cleanup algorithm β€” so old snapshots get pruned automatically instead of filling the disk
DNF pre/post snapshots β€” confirm this is active (it's driven by python3-dnf-plugin-snapper, not a toggle inside Btrfs Assistant itself). Verify by checking /etc/dnf/plugins/snapper.ini or just watching for a snapshot pair after your next sudo dnf upgrade.


5. Pika Backup for /home (If home is on another drive/partition like mine)


Btrfs snapshots via Snapper only cover the @ (root) subvolume β€” they do not protect /home.
Install Pika Backup (flatpak install flathub org.gnome.World.PikaBackup or via dnf if packaged) and configure it to back up /home to your second disk on a regular schedule.
This is a separate, complementary layer of protection β€” not a substitute for the root snapshot system.


6. How Rollback Actually Works

Understanding the two-stage process matters β€” booting a snapshot from GRUB does not by itself fix anything permanently.


Stage 1 β€” Preview (read-only):

Reboot the machine
In GRUB, select Fedora Linux Snapshots
Pick the snapshot from before the problem (e.g., right before the last dnf upgrade)
This boots you into a read-only preview of the system at that point in time β€” you can verify the issue is gone, but changes made here don't persist



Stage 2 β€” Make it permanent:

Reboot back into your normal (current) system
Open Btrfs Assistant β†’ Snapper β†’ Browse/Restore
Select the same snapshot you verified in Stage 1
Click Restore β€” this replaces your current @ subvolume with the snapshot
Reboot β€” you're now permanently running the restored state



If you're already confident which snapshot you need, you can skip Stage 1 and restore directly from Btrfs Assistant without the GRUB preview step.


Summary Checklist


 Root disk formatted Btrfs with @ (and optionally @home) subvolume layout at install time
 snapper, btrfs-assistant, python3-dnf-plugin-snapper installed
 grub-btrfs built from source and grub-btrfsd service enabled
 Timeline, boot, and cleanup snapshots enabled in Snapper settings
 DNF pre/post snapshot pairs confirmed working
 Pika Backup configured for /home on separate disk
 Rollback workflow understood: GRUB boot = preview only, Btrfs Assistant Restore = permanent