### **Overview** This technical guide will walk you through the process of identifying your BTRFS partitions, exploring available snapshots for the home partition, and rolling back your home subvolume (`@home`) to a previous state using **Snapper**. It will also include troubleshooting steps in case you encounter issues along the way. Garuda Linux KDE, which uses BTRFS as the default filesystem, supports snapshots via Snapper. This guide assumes you have Snapper set up for your home subvolume and want to perform a rollback to a previous snapshot. --- ### **Pre-requisites** - **Snapper**: You should already have Snapper configured to take snapshots of the `@home` subvolume. If not, refer to the Snapper setup guide. - **BTRFS Filesystem**: Ensure that your `/home` partition uses the BTRFS filesystem and that Snapper is taking snapshots for it. - **Backup**: Always make sure you have a backup of critical data before performing a rollback. --- ### **Step 1: Identifying the Correct Partition** Before performing any rollback operations, you need to identify which partition contains your BTRFS subvolumes, including the `@home` subvolume. ### **Using `lsblk` to List Block Devices** ```bash lsblk -f ``` Example output: ```bash NAME FSTYPE LABEL UUID MOUNTPOINT sda ├─sda1 ext4 xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx /boot ├─sda2 btrfs yyyyyyyy-yyyy-yyyy-yyyy-yyyyyyyyyyyy / sdb └─sdb1 btrfs zzzzzzzz-zzzz-zzzz-zzzz-zzzzzzzzzzzz /home ``` In this case: - `/dev/sda2` is the root partition (BTRFS). - `/dev/sdb1` is the home partition (BTRFS). Look for `FSTYPE="btrfs"` and identify the partition for `/home`. ### **Using `blkid` to List Filesystems** ```bash sudo blkid ``` Example output: ```bash /dev/sda1: UUID="xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx" TYPE="ext4" /dev/sda2: UUID="yyyyyyyy-yyyy-yyyy-yyyy-yyyyyyyyyyyy" TYPE="btrfs" /dev/sdb1: UUID="zzzzzzzz-zzzz-zzzz-zzzz-zzzzzzzzzzzz" TYPE="btrfs" ``` Identify the partition where `TYPE="btrfs"` is listed and matches the `/home` mount. ### **Using `df -h` to See Mounted Partitions** ```bash df -h ``` Example output: ```bash Filesystem Size Used Avail Use% Mounted on /dev/sda2 100G 30G 70G 30% / /dev/sdb1 200G 50G 150G 25% /home ``` Check for `/home` and identify the associated device. ### **Using `btrfs filesystem show` to List BTRFS Filesystems** ```bash sudo btrfs filesystem show ``` Example output: ```bash Label: none uuid: yyyyyyyy-yyyy-yyyy-yyyy-yyyyyyyyyyyy Total devices 1 FS bytes used 30.00GiB devid 1 size 100.00GiB used 50.00GiB path /dev/sda2 Label: none uuid: zzzzzzzz-zzzz-zzzz-zzzz-zzzzzzzzzzzz Total devices 1 FS bytes used 50.00GiB devid 1 size 200.00GiB used 100.00GiB path /dev/sdb1 ``` Here, `/dev/sdb1` is the BTRFS volume containing your home subvolume. --- ### **Step 2: Listing Snapshots for the Home Subvolume** Once you've identified the partition, you can list the snapshots for the home subvolume (`@home`). ```bash sudo snapper -c home list ``` Example output: ```bash # | Type | Pre # | Date | User | Cleanup | Description | Userdata ---+--------+-------+-------------+------+---------+--------------------+--------- 0 | single | | | root | | current | 1 | single | | 2024-10-01 | root | timeline| hourly snapshot | 2 | single | | 2024-10-02 | root | timeline| daily snapshot | ... ``` - **Snapshot #**: This is the snapshot identifier you will use for rollback. - **Description**: Identifies the snapshot (e.g., "hourly snapshot"). --- ### **Step 3: Exploring a Snapshot Before Rollback** You can explore a snapshot to verify its contents before rolling back. First, create a mount point: ```bash sudo mkdir /mnt/snapshot ``` Mount the desired snapshot (e.g., snapshot `5`): ```bash sudo mount -o subvol=.snapshots/5/snapshot /dev/sdb1 /mnt/snapshot ``` Explore the mounted snapshot at `/mnt/snapshot` and verify its contents. To unmount the snapshot: ```bash sudo umount /mnt/snapshot ``` --- ### **Step 4: Rolling Back the Home Subvolume** ### **Option 1: Rolling Back Using a Live Environment** 1. Boot into a **live environment** (Garuda Live USB or similar). 2. Mount the BTRFS filesystem: ```bash sudo mount /dev/sdb1 /mnt ``` 3. Delete the current home subvolume: ```bash sudo btrfs subvolume delete /mnt/@home ``` 4. Restore the home subvolume from the desired snapshot (e.g., snapshot `5`): ```bash sudo btrfs subvolume snapshot /mnt/.snapshots/5/snapshot /mnt/@home ``` 5. Unmount and reboot your system. ### **Option 2: Rolling Back from a Running System** 1. Switch to a **root shell**: ```bash sudo su ``` 2. Unmount the home partition: ```bash umount /home ``` 3. Delete the current home subvolume: ```bash btrfs subvolume delete /home ``` 4. Restore the subvolume from the snapshot: ```bash btrfs subvolume snapshot /.snapshots/5/snapshot /home ``` 5. Remount the home partition: ```bash mount /home ``` 6. Exit the root shell: ```bash exit ``` --- ### **Step 5: Verifying the Rollback** Once the rollback is complete, reboot your system and log in. Verify that your home directory is in the state it was at the time of the snapshot you restored. You can list the snapshots again using: ```bash sudo snapper -c home list ``` This should show you the current and previous snapshots, confirming the rollback. --- ### **Troubleshooting and Common Issues** 1. **Snapshot Not Found**: - If you don't see the snapshot in the list, ensure that Snapper is correctly configured for the `home` subvolume by checking `/etc/snapper/configs/home`. 2. **Unable to Unmount `/home`**: - Make sure you are logged in as root, and no user processes are using `/home`. You may need to log in via a different TTY or boot into a live environment. 3. **Insufficient Disk Space**: - If the rollback fails due to insufficient space, free up space by deleting unnecessary files or older snapshots. 4. **Snapshot Restore Failed**: - If restoring the snapshot fails, check the system logs (`journalctl`) for detailed error messages. You may need to manually clean up and retry. --- ### **Conclusion** Rolling back a BTRFS subvolume such as `@home` using Snapper is a powerful way to restore your system to a previous state. This guide covered how to: - Identify the correct partition. - List and explore available snapshots. - Roll back using either a live environment or from a running system. - Verify the rollback and troubleshoot common issues. By following this guide, you can confidently manage your home subvolume snapshots and perform rollbacks when needed. Snapper and BTRFS provide a robust and efficient snapshot management system for Linux systems like Garuda KDE.