Cannot create Timeshift Backup on BTRFS: system disk with root subvolume (@)

So I’m on Fedora 34 with the BTRFS and when I try to create a system backup on my btrfs partition with timeshift, I get error "Selected snapshot device is not a system disk
Select a BTRFS system disk with root subvolume (@) "

I’ve done some duckducking on the issue and I saw on reddit that it had something to do with fstab using the old / root. Apparently it’s fixable by booting onto a live pen and making a snapshot and so on… I’m just not advanced enough to understand the procedures that were given.

Any easier fix out there?

Could you post the link, to see what exactly you mean.

Here it is
https://www.reddit.com/r/btrfs/comments/jx71fp/getting_error_select_btrfs_system_disk_with_root/

Another thread:

Instead of changing the subvolume’s name in the installer, I recommend changing it post-install. There’s a bug if you rename the / subvolume (it’s not a bad bug but …)

https://bugzilla.redhat.com/show_bug.cgi?id=1952764

You need to identify which /dev/ node and partition has the btrfs filesystem used for / and /home and mount its top-level so you can rename the subvolumes:

lsblk -f
mount /dev/sdXY /mnt
cd /mnt
mv root @
mv home @home
nano /etc/fstab

In nano:

  • Change subvol=root to subvol=@ for the / mount point.
  • Change subvol=home to subvol=@home for the /home mount point.

Next change each /boot/loader/entries/*conf file’s rootflags=subvol=root to rootlfags=subvol=@ I think it’s easier to just use nano to it in this case, one by one; OR…

It is possible to use grubby to change the BLS drop-in files in /boot/loader/entries instead, which is ordinarily the preferred way, but in this case it involves some extra steps than just using nano or vim.

grubby --remove-arg="rootflags=subvol=root" --update-kernel=ALL
grubby --arg="rootflags=subvol=@" --update-kernel=ALL
nano /etc/default/grub

Remove rootflags=subvol=@ from the /etc/default/grub file - it’s here because of the update-kernel=ALL flag above, but grub has its own way of adding it.

3 Likes

Thank you for your solution Chris I really appreciate it. However I won’t even dare trying these since it’s a bit much for me and I’m scared I will break the system.

It’s a bit of a shame there is not a user-friendlier solution, I don’t think anyone should have to go through those after a fresh install.

Just my opinion but the real issue here is a limitation of timeshift. It requires a highly specific layout for btrfs subvolumes for it to work properly. There is no real valid reason why the root subvolume should be mounted as @. It isn’t even a widely used convention outside of Ubuntu.

5 Likes

Hello, there. I know it has been a while, but I tried this yesterday and it seems to work perfectly (thank you so much!), but one question remains. At a certain point, grubby modifies the /boot/loader/entries/ files of all available kernels. Assuming I followed all the process and chose to use grubby when the option was presented, are the changes I made gonna persist when a new kernel is installed? Thanks again in advance.

It does persist across kernel installs.

Timeshift does have trouble restoring sometimes. I couldn’t get my system to restore two times and I lost a lot of data.

I am trying to work on a way to have a recovery partion with Fedora. Even though btrfs has snapshots they are not so straightforward for users who dont know the syntax’s.

A recovery partition implemented quite well I have seen on PopOS & MacOS. It would be incredible for Fedora, also Nvidia driver options at install.

1 Like