Creating a restore point before updating like silverblue in fedora workstation

Hi ,

Is there a simple way to create a restore point in a similar way to Fedora silverblue?

Basically I have not had good experience with timeshift for creating restore points and I thought is there a simple way to rollback in the grub menu or through the command line in case we run into trouble after any critical updates.

3 Likes

I think people have been recommending snapper.

Personally, I use ZFS. But the way I do it is quite complicated.

2 Likes

wow okay great thanks. have you tried this method?

He is using zfs, so probably not. :wink:

That being said, I didn’t watch the video, but I use snapper on Fedora on my laptop. It works fine. Did you have any specific questions we can answer?

3 Likes

That is actually something I have always wondered about. Timeshift isn’t that solid. It has ruined my system before, so, I am always afraid of it. Another thing I’d love to see on fedora is a recovery partition like on pop OS, where you can reinstall the system image while preserving the user files installed apps. That would be an amazing addition to fedora

1 Like

I was curious to know a couple of things.

  1. How do we restore if something goes wrong? Does snapper have a GUI interface?

  2. Is there a way to restore in Grub. i.e in the case where we cannot boot into our system after an update

  3. Its not quite clear which root directory I need to backup on my system

Total                                                                                                                  3.1 MB/s | 249 MB     01:19     
Delta RPMs reduced 249.1 MB of updates to 248.6 MB (0.2% saved)
Running transaction check
Transaction check succeeded.
Running transaction test
Transaction test succeeded.
snapper: creating pre_snapshot failed: error.io_error: .snapshots is not a btrfs subvolume
Running transaction

So it mentions here that snapper pre-snapshot when I upgraded and it failed.

Although I do have Btrfs filesystem on my hardrive which the boot partition is on

But it looks as though the boot partition is Ext 4

see below:

There are actually a lot of ways. It depends how your system is configured. If it is configured to use the default volume, you can use snapper rollback. If not, you can use the standard btrfs snapshot tools to restore them. Lastly, you could take a rw snapshot of one your snapper snapshots and adjust your system to boot off of it.

It doesn’t have one built in but there are 3rd party tools that provide GUI’s for snapper. I have never used any of those since it is so simple to use from a CLI but here is an example of one:
https://github.com/ricardomv/snapper-gui

I have not used it personally, but, yes, btrfs-grub is popular solution for that:
https://github.com/Antynea/grub-btrfs

You should really only have one of those…

To find the root filesystem you can use:

findmnt /

Have you configured snapper already? Can you take manual snapshots? There are some setup steps involved.

That is probably the /boot partition that is ext4. It should only contain grub, your kernels and your initrds. The root filesystem is likely btrfs.

2 Likes

thats such great help thanks, I really appreciate you taking the time to answer those questions.

No i dont think I configured it properly, i added the directories where the snapshots will go and then i thought that was all i needed.

So it seems the autosnapshots will not run as I didnt configure it properly, I will try again from the start and let you know

You can’t add those manually. They can’t be directories, the need to be subvolumes. snapper will create them for you.

1 Like
snapper: creating pre_snapshot failed: error.io_error: .snapshots is not a btrfs subvolume

That explains the error message :wink:

Can’t stress this enough, people should patiently read all error messages, more often than not the resolution is in there.

Hi @dalto

Right so the subvolume would be the sdc1 sdc2 and sdc3 ?

Please see below my output for lsblk

[benji@localhost ~]$ lsblk
NAME   MAJ:MIN RM   SIZE RO TYPE MOUNTPOINT
sda      8:0    0 232.9G  0 disk 
├─sda1   8:1    0 232.4G  0 part 
└─sda2   8:2    0   450M  0 part 
sdb      8:16   0 232.9G  0 disk 
└─sdb1   8:17   0 232.9G  0 part 
sdc      8:32   0 223.6G  0 disk 
├─sdc1   8:33   0   600M  0 part /boot/efi
├─sdc2   8:34   0     1G  0 part /boot
└─sdc3   8:35   0   222G  0 part /home
zram0  252:0    0     4G  0 disk [SWAP]
[benji@localhost ~]$ 

also this is my output for df -h

[benji@localhost ~]$ df -h
Filesystem      Size  Used Avail Use% Mounted on
devtmpfs        7.8G     0  7.8G   0% /dev
tmpfs           7.8G  231M  7.6G   3% /dev/shm
tmpfs           3.2G   18M  3.1G   1% /run
/dev/sdc3       222G  136G   86G  62% /
tmpfs           7.8G   15M  7.8G   1% /tmp
/dev/sdc3       222G  136G   86G  62% /home
/dev/sdc2       976M  247M  662M  28% /boot
/dev/sdc1       599M   21M  579M   4% /boot/efi
tmpfs           1.6G  4.0M  1.6G   1% /run/user/1000
pCloud.fs       500G   21G  480G   5% /home/benji/pCloudDrive

No, those are partitions. You can see the btrfs subvolumes with:

sudo btrfs subvolume list /

right thanks,

this was my output.

[benji@localhost ~]$ sudo btrfs subvolume list /
[sudo] password for benji: 
ID 256 gen 678936 top level 5 path home
ID 257 gen 678935 top level 5 path root
ID 514 gen 678447 top level 257 path var/lib/machines
[benji@localhost ~]$ 

is there some clearer worded instructions to setup snapper to backup my system on updates.

I would like to upgrade to Fedora 34 as it looks fantastic but I am worried about issues afterwards. It took me a long time to configure the drivers for my hardware. Printers, scanners, video cards, etc

I have never used that so I am not sure if anyone has better instructions.

You don’t need auto-snapshots to protect you in the case of F33 to F34 migration. You can take manual snapshots before starting the process.

You can even do that without snapper if you would prefer.

1 Like

Hi,

Thanks for that. How can we take manual snapshots and would these be possible to see in grub when I reboot

Also is this the recommended upgrade command

sudo dnf install dnf-plugin-system-upgrade sudo dnf system-upgrade download --releasever=34 sudo dnf system-upgrade reboot

This would put me through to gnome de though I would assume, we are running cinammon de

First there is some initial setup to hold the snapshots, this only needs to be done once

sudo btrfs subvolume create /.snaps
sudo btrfs subvolume create /home/.snaps

That just create some subvolumes to hold the snapshots. You can name them whatever you want, I used .snaps so it wouldn’t conflict with snapper.

To take the snapshots:

sudo btrfs subvolume snapshot -r / /.snaps/preupgrade
sudo btrfs subvolume snapshot -r /home /home/.snaps/preupgrade

That creates a snapshot named preupgrade for each of your two subvolumes. You probably don’t need snapshots of var/lib/machines, that is a subvolume created by systemd.

btrfs-grub can do this but I don’t know how it works or how to install it.

I have never done a Fedora upgrade of a Cinnamon system but I don’t think it will switch you back to gnome. I think it will just upgrade your version. Certainly that is what has happened with all the upgrades I have done with plasma as my DE.

1 Like

Thanks so much Dalton, this is a big help. I actually I had no idea that you could run snapshots with btrfs, so this is why it is so respected as a file system. Is this a feature of fedora or btrfs?

I’ll run those commands and check back before I upgrade.

Will I need to reinstall all my applications and driver when moving to fedora 34. ?

btrfs.

Normally, you shouldn’t have to unless you have some trouble during the upgrade and need to remove something or something isn’t compatible.

Make sure you update your system with sudo dnf upgrade --refresh before doing the upgrade.

1 Like

Okay I did those commands now I think I run an update to see if it creates a snapshot

[benji@localhost ~]$ sudo btrfs subvolume create /.snaps
[sudo] password for benji: 
Create subvolume '//.snaps'
[benji@localhost ~]$ sudo su
[root@localhost benji]# sudo btrfs subvolume create /home/.snaps
Create subvolume '/home/.snaps'
[root@localhost benji]# sudo btrfs subvolume snapshot -r / /.snaps/preupgrade
Create a readonly snapshot of '/' in '/.snaps/preupgrade'
[root@localhost benji]# sudo btrfs subvolume snapshot -r /home /home/.snaps/preupgrade
Create a readonly snapshot of '/home' in '/home/.snaps/preupgrade'
[root@localhost benji]#