Btrfs, steps to do a clean rollback

Technically a rollback makes a new writable snapshot initialized from the target snapshot and then sets that new writable snapshot as the default. (It also creates a read-only snapshot of the previous state in case you want to rollback the rollback to create maximum confusion.)

The easiest way to do a rollback is by selecting the snapshot you want from the boot screen for read-only booting. Then when the system is up and running the command is simply

sudo snapper rollback

followed by rebooting.

In my opinion, every proud owner of a system with snapper integration should practice this procedure at least once because it is so much easier than the traditional way of e.g. fixing driver issues by reinstalling the driver, realizing that it doesn’t work, reinstalling other stuff, realizing that it still doesn’t work, trying dracut --force --regenerate-all because why not, followed by the ignominy of a full reinstall.

undochange is sometimes useful when you started with a manual change and then realize that you, uh, want to undo your half-baked edit. I would never use it to fix a bad dist-upgrade. For example

$ snapper create --type=pre --print-number --cleanup-algorithm number --userdata 'important=no' --description testing
453

$ echo 42 > /etc/the_answer

$ snapper status 453..0
+..... /etc/the_answer

$ snapper undochange 453..0
create:0 modify:0 delete:1

$ cat /etc/the_answer
cat: /etc/the_answer: No such file or directory

$ snapper remove 453
2 Likes

Thank you for the explanation, this answered my question. It is also the reason I switched to using btrfs, so I can easily rollback to a working state. In the past I had to resort to doing a fresh reinstall when an update to the system or nvidia driver made the system unusable.

This topic was automatically closed 7 days after the last reply. New replies are no longer allowed.