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.

5 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

Hello Chris, i have the same prblem, but when i did the installation i created subvolumes @ and @home.

sudo btrfs subvolume list /btrfs-pool
ID 256 gen 157 top level 5 path @home
ID 257 gen 159 top level 5 path @-0

THe SSD is nvme1n1
me@192:~$ lsblk -f
NAME FSTYPE FSVER LABEL UUID FSAVAIL FSUSE% MOUNTPOINTS
zram0 [SWAP]
nvme0n1
├─nvme0n1p1 vfat FAT32 BOOT 1117-6312
├─nvme0n1p2 ext4 1.0 2e611b56-afa6-46f1-8cf4-6dfde3193662
├─nvme0n1p3 crypto_LUKS 2 614b0ff8-9aa6-4376-9dfe-8444a569a8a1
└─nvme0n1p4 btrfs @ 394f2d69-3191-4b36-b5a0-dda0a293d795
nvme1n1
├─nvme1n1p1 ext4 1.0 2ccac7e3-b9d8-45e2-af9c-61a3ded4c59a 525.7M 39% /boot
├─nvme1n1p2 vfat FAT32 6782-8180 579.8M 3% /boot/efi
└─nvme1n1p3 crypto_LUKS 2 692d0381-e51a-4d16-b105-51c16fb95ea1
└─luks-692d0381-e51a-4d16-b105-51c16fb95ea1 btrfs fedora 4fa1f2a8-cd9b-4f88-8efc-c4b5d03bdf9a 920.7G 1% /home
/
Any help? :wink:

Just to mention that @-0 is not the same as @. Can you not fix this?

1 Like

Done, now i have a little “problem”. I would like to save snapshots in another empty SSD.
Maybe allocating 50GB for snapshots, but i don’t know how to do :wink:
I formatted as btrfs with only / with @ as label, but Timeshift don’t recognize as btrfs file system.
Screenshot from 2024-04-25 16-26-59
lsblk -p
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTS
/dev/zram0 252:0 0 8G 0 disk [SWAP]
/dev/nvme1n1 259:0 0 931.5G 0 disk
├─/dev/nvme1n1p1 259:1 0 600M 0 part /boot/efi
├─/dev/nvme1n1p2 259:2 0 1G 0 part /boot
└─/dev/nvme1n1p3 259:3 0 929.9G 0 part /home
/
/dev/nvme0n1 259:4 0 465.8G 0 disk
└─/dev/nvme0n1p1 259:6 0 48.8G 0 part /mnt

Man this thread is from 2021. . . Couldn’t the new questions be moved to a new thread?

1 Like

@hamrheadcorvette of course we can … you can flag the new question and write to create a new topic … as we as TL3 can not do it.

But I think with time-shift there is still the same issue?!

1 Like