siduction / sidu-manual

2 stars 6 forks source link

How to, quick and dirty, make a rollback. #69

Closed hhl closed 3 months ago

hhl commented 5 months ago

This is a reminder, we talked about at clt. It is not easy to understand how it works! We need some examples at the end of the chapter and maybe a fixed topic in the forum.

ak-li commented 5 months ago

Journal of rollback

Wir befinden uns im aktuellen default Snapshot 10 mit Kernel 6.6.7-1 Dann wurde der alte Kernel 6.4.10-1 entfernt (Snapshot 11 und 12) Anschließend ein DU (Snapshot 13 und 14), wir erhalten Kernel 6.6.8-1 Wir befinden uns nach wie vor in Snapshot 10, der sich mit den Snapshots 11 bis 14 weiter entwickelt hat.

Jetzt wird das Rollbackkommando zu Snapshot 11 ausgeführt: "snapper -a classic rollback 11" Snapper erstellt den Backup Snapshot 15, der den augenblicklichen Systemzustand enthält. (Snapschot 10 inklusive der Änderungen durch Snapshot 11 bis 14) Anschließend erstellt snapper den Rollback Snapshot 16 als r/w Kopie von Snapshot 11 und ändert das Btrfs default Subvolumen von 10 zu 16.

Daraufhin enthält die Datei grub.cfg den Kernel 6.6.8-1 NICHT mehr, dafür den Kernel 6.4.10-1 wieder und der Standardbooteintrag bootet Snapshot 16. Wir befinden uns nach wie vor in Snapshot 10, der noch r/w gemountet ist. Aus diesem liest grub die grub.cfg so lange, bis aus dem neuen default Snapshot 16 heraus grub-install ausgeführt wurde. Das Journal zeigt die meisten Details mit einigen zusätzlichen Erklärungen. Dann erfolgt der Reboot.

# snapperd.service startet mit dem Rollback Kommando
Dez 21 15:36:44 lap dbus-daemon[597]: [system] Activating via systemd: service name='org.opensuse.Snapper' unit='snapperd.service' requested by ':1.70' (uid=0 pid=71663 comm="snapper -a classic rollback 11")
Dez 21 15:36:44 lap systemd[1]: Starting snapperd.service - DBus interface for snapper...
Dez 21 15:36:44 lap dbus-daemon[597]: [system] Successfully activated service 'org.opensuse.Snapper'
Dez 21 15:36:44 lap systemd[1]: Started snapperd.service - DBus interface for snapper.

# grub-btrfs.path findet neue Snapshots und startet grub-btrfs.service.
Dez 21 15:36:44 lap systemd[1]: Starting grub-btrfs.service - Regenerate grub-btrfs.cfg...
Dez 21 15:36:44 lap bash[71667]: Detecting snapshots ...
Dez 21 15:36:44 lap bash[71667]: Found snapshot: 2023-12-21 15:36:44 | @snapshots/16/snapshot | single | writable copy of #11   |
Dez 21 15:36:44 lap bash[71667]: Found snapshot: 2023-12-21 15:36:44 | @snapshots/15/snapshot | single | rollback backup of #10 |
Dez 21 15:36:44 lap bash[71667]: Found snapshot: 2023-12-21 14:49:45 | @snapshots/14/snapshot | post   | apt DU                 |
Dez 21 15:36:44 lap bash[71667]: Found snapshot: 2023-12-21 14:48:48 | @snapshots/13/snapshot | pre    | apt DU                 |
Dez 21 15:36:44 lap bash[71667]: Found snapshot: 2023-12-21 13:36:56 | @snapshots/12/snapshot | post   | apt - 6.4.10-1         |
Dez 21 15:36:44 lap bash[71667]: Found snapshot: 2023-12-21 13:36:53 | @snapshots/11/snapshot | pre    | apt - 6.4.10-1         |
Dez 21 15:36:44 lap bash[71667]: Found snapshot: 2023-12-04 15:14:24 | @snapshots/10/snapshot | single | writable copy of #7    |
Dez 21 15:36:44 lap bash[71667]: Found snapshot: 2023-12-04 15:14:24 | @snapshots/9/snapshot  | single | rollback backup of #8  |
Dez 21 15:36:44 lap bash[71667]: Found snapshot: 2023-12-04 14:47:50 | @snapshots/8/snapshot  | single | writable copy of #5    |
Dez 21 15:36:44 lap bash[71667]: Found snapshot: 2023-12-04 14:47:50 | @snapshots/7/snapshot  | single | rollback backup        |
Dez 21 15:36:44 lap bash[71667]: Found snapshot: 2023-11-29 11:23:29 | @snapshots/6/snapshot  | post   | apt                    |
Dez 21 15:36:44 lap bash[71667]: Found snapshot: 2023-11-29 11:21:29 | @snapshots/5/snapshot  | pre    | apt                    |
Dez 21 15:36:44 lap bash[71667]: Found 12 snapshot(s)
Dez 21 15:36:44 lap bash[72010]: submenu 'siduction snapshots' {
Dez 21 15:36:44 lap bash[72010]:     configfile "${prefix}/grub-btrfs.cfg"
Dez 21 15:36:44 lap bash[72010]: }
Dez 21 15:36:44 lap bash[71667]: Unmount /tmp/grub-btrfs.JNzX2cxkic .. Success
Dez 21 15:36:44 lap systemd[1]: tmp-grub\x2dbtrfs.JNzX2cxkic.mount: Deactivated successfully.
Dez 21 15:36:44 lap systemd[1]: grub-btrfs.service: Deactivated successfully.
Dez 21 15:36:44 lap systemd[1]: Finished grub-btrfs.service - Regenerate grub-btrfs.cfg.

# siduction_btrfs.path findet neue grub-btrfs.cfg und startet siduction_btrfs.service und dieser wiederum test-btrfs-default.sh
Dez 21 15:36:44 lap systemd[1]: Starting siduction_btrfs.service - Execute 'update-grub' if btrfs-default-subvolume changed....
Dez 21 15:36:49 lap test-btrfs-default.sh[72015]: Btrfs default and booted subvolume differ.
Dez 21 15:36:49 lap test-btrfs-default.sh[72015]: Run "update-grub"

# ANFANG weitergeleitete Meldungen von update-grub.
Dez 21 15:36:49 lap test-btrfs-default.sh[72558]: Generating grub configuration file ...
Dez 21 15:36:50 lap test-btrfs-default.sh[72560]: Found theme: /usr/share/grub/themes/giants/theme.txt
Dez 21 15:36:50 lap test-btrfs-default.sh[72617]: Found linux image: .snapshots/16/snapshot/boot/vmlinuz-6.6.7-1-siduction-amd64
Dez 21 15:36:50 lap test-btrfs-default.sh[72617]: Found initrd image: .snapshots/16/snapshot/boot/initrd.img-6.6.7-1-siduction-amd64
Dez 21 15:36:50 lap test-btrfs-default.sh[72617]: Found linux image: .snapshots/16/snapshot/boot/vmlinuz-6.6.3-1-siduction-amd64
Dez 21 15:36:50 lap test-btrfs-default.sh[72617]: Found initrd image: .snapshots/16/snapshot/boot/initrd.img-6.6.3-1-siduction-amd64
Dez 21 15:36:50 lap test-btrfs-default.sh[72617]: Found linux image: .snapshots/16/snapshot/boot/vmlinuz-6.6.2-1-siduction-amd64
Dez 21 15:36:50 lap test-btrfs-default.sh[72617]: Found initrd image: .snapshots/16/snapshot/boot/initrd.img-6.6.2-1-siduction-amd64
Dez 21 15:36:50 lap test-btrfs-default.sh[72617]: Found linux image: .snapshots/16/snapshot/boot/vmlinuz-6.4.10-1-siduction-amd64
Dez 21 15:36:50 lap test-btrfs-default.sh[72617]: Found initrd image: .snapshots/16/snapshot/boot/initrd.img-6.4.10-1-siduction-amd64
Dez 21 15:36:50 lap test-btrfs-default.sh[72923]: Found memtest86+ 64bit EFI image: /@snapshots/10/snapshot/boot/memtest86+x64.efi
Dez 21 15:36:50 lap test-btrfs-default.sh[72946]: Warning: os-prober will be executed to detect other bootable partitions.
Dez 21 15:36:50 lap test-btrfs-default.sh[72946]: Its output will be used to detect bootable binaries on them and create new boot entries.
Dez 21 15:36:50 lap os-prober[73068]: debug: running /usr/lib/os-probes/mounted/05efi on mounted /dev/nvme0n1p1
Dez 21 15:36:50 lap 05efi[73070]: debug: /dev/nvme0n1p1 is a FAT32 partition
Dez 21 15:36:50 lap 05efi[73078]: debug: /dev/nvme0n1p1 partition scheme is gpt
Dez 21 15:36:50 lap 05efi[73079]: debug: /dev/nvme0n1p1 partition type is c12a7328-f81f-11d2-ba4b-00a0c93ec93b
Dez 21 15:36:50 lap 05efi[73083]: debug: running subtest /usr/lib/os-probes/mounted/efi/10elilo
Dez 21 15:36:50 lap 05efi[73086]: debug: running subtest /usr/lib/os-probes/mounted/efi/20microsoft
[...]
Dez 21 15:36:51 lap 50mounted-tests[73311]: debug: running subtest /usr/lib/os-probes/mounted/90linux-distro
Dez 21 15:36:51 lap 50mounted-tests[73315]: debug: running subtest /usr/lib/os-probes/mounted/90solaris
Dez 21 15:36:51 lap 50mounted-tests[73317]: debug: running subtest /usr/lib/os-probes/mounted/efi
Dez 21 15:36:51 lap test-btrfs-default.sh[73321]: Adding boot menu entry for UEFI Firmware Settings ...
Dez 21 15:36:51 lap test-btrfs-default.sh[73327]: Detecting snapshots ...
Dez 21 15:36:51 lap test-btrfs-default.sh[73327]: Found snapshot: 2023-12-21 15:36:44 | @snapshots/16/snapshot | single | writable copy of #11   |
Dez 21 15:36:51 lap test-btrfs-default.sh[73327]: Found snapshot: 2023-12-21 15:36:44 | @snapshots/15/snapshot | single | rollback backup of #10 |
Dez 21 15:36:51 lap test-btrfs-default.sh[73327]: Found snapshot: 2023-12-21 14:49:45 | @snapshots/14/snapshot | post   | apt DU                 |
Dez 21 15:36:51 lap test-btrfs-default.sh[73327]: Found snapshot: 2023-12-21 14:48:48 | @snapshots/13/snapshot | pre    | apt DU                 |
Dez 21 15:36:51 lap test-btrfs-default.sh[73327]: Found snapshot: 2023-12-21 13:36:56 | @snapshots/12/snapshot | post   | apt - 6.4.10-1         |
Dez 21 15:36:51 lap test-btrfs-default.sh[73327]: Found snapshot: 2023-12-21 13:36:53 | @snapshots/11/snapshot | pre    | apt - 6.4.10-1         |
Dez 21 15:36:51 lap test-btrfs-default.sh[73327]: Found snapshot: 2023-12-04 15:14:24 | @snapshots/10/snapshot | single | writable copy of #7    |
Dez 21 15:36:51 lap test-btrfs-default.sh[73327]: Found snapshot: 2023-12-04 15:14:24 | @snapshots/9/snapshot  | single | rollback backup of #8  |
Dez 21 15:36:51 lap test-btrfs-default.sh[73327]: Found snapshot: 2023-12-04 14:47:50 | @snapshots/8/snapshot  | single | writable copy of #5    |
Dez 21 15:36:51 lap test-btrfs-default.sh[73327]: Found snapshot: 2023-12-04 14:47:50 | @snapshots/7/snapshot  | single | rollback backup        |
Dez 21 15:36:51 lap test-btrfs-default.sh[73327]: Found snapshot: 2023-11-29 11:23:29 | @snapshots/6/snapshot  | post   | apt                    |
Dez 21 15:36:51 lap test-btrfs-default.sh[73327]: Found snapshot: 2023-11-29 11:21:29 | @snapshots/5/snapshot  | pre    | apt                    |
Dez 21 15:36:51 lap test-btrfs-default.sh[73327]: Found 12 snapshot(s)
Dez 21 15:36:51 lap test-btrfs-default.sh[73327]: Unmount /tmp/grub-btrfs.hxf9HMnSEn .. Success
Dez 21 15:36:51 lap test-btrfs-default.sh[73676]: done
# ENDE weitergeleitete Meldungen von update-grub.

Dez 21 15:36:51 lap systemd[1]: siduction_btrfs.service: Deactivated successfully.
Dez 21 15:36:51 lap systemd[1]: Finished siduction_btrfs.service - Execute 'update-grub' if btrfs-default-subvolume changed..
Dez 21 15:36:51 lap systemd[1]: siduction_btrfs.service: Consumed 1.339s CPU time.

Reboot mit grub default Eintrag zu Snapshot 16

Wir booten erstmals nach dem Rollback in Snapshot 16. Grub hat das Menü noch aus der grub.cfg des Snapshot 10 gelesen. Das Skript test-btrfs-default.sh erkennt die Abweichung und führt die notwendigen Befehle aus. Die vorhandene Datei grub.cfg muss aktualisiert werden und grub muss diese Datei in Zukunft lesen. Das Journal zeigt relevante Teile des Bootvorgangs und der Anpassung von grub mit einigen zusätzlichen Erklärungen.

[...]
Dez 21 15:41:12 lap kernel: Linux version 6.6.7-1-siduction-amd64 (towo@siduction.org) (gcc-13 (Debian 13.2.0-8) 13.2.0, GNU ld (GNU Binutils for Debian) 2.41.50.20231206) #1 SMP PREEMPT_DYNAMIC siduction 6.6-7 (2023-12-13)
Dez 21 15:41:12 lap kernel: Command line: BOOT_IMAGE=/@snapshots/16/snapshot/boot/vmlinuz-6.6.7-1-siduction-amd64 root=UUID=c64ea0d6-fd62-40ad-b580-f4203f860a86 ro rootflags=subvol=@snapshots/16/snapshot quiet systemd.show_status=1
[...]
Dez 21 15:41:12 lap kernel: Trying to unpack rootfs image as initramfs...
[...]
Dez 21 15:41:12 lap kernel: Run /init as init process
Dez 21 15:41:12 lap kernel:   with arguments:
Dez 21 15:41:12 lap kernel:     /init
Dez 21 15:41:12 lap kernel:   with environment:
Dez 21 15:41:12 lap kernel:     HOME=/
Dez 21 15:41:12 lap kernel:     TERM=linux
Dez 21 15:41:12 lap kernel:     BOOT_IMAGE=/@snapshots/16/snapshot/boot/vmlinuz-6.6.7-1-siduction-amd64
[...]
Dez 21 15:41:12 lap systemd[1]: Mounting home.mount - /home...
Dez 21 15:41:12 lap systemd[1]: Mounting root.mount - /root...
Dez 21 15:41:12 lap systemd[1]: Mounting var-log.mount - /var/log...
Dez 21 15:41:12 lap systemd[1]: Activated swap dev-disk-by\x2ddiskseq-25\x2dpart5.swap - Swap Partition.
Dez 21 15:41:12 lap systemd[1]: Mounted \x2esnapshots.mount - /.snapshots.
Dez 21 15:41:12 lap systemd[1]: Mounted home.mount - /home.
Dez 21 15:41:12 lap systemd[1]: Mounted root.mount - /root.
Dez 21 15:41:12 lap systemd[1]: Mounted var-log.mount - /var/log.
Dez 21 15:41:12 lap systemd[1]: Started grub-btrfs.path - Monitors for new snapshots.
Dez 21 15:41:12 lap systemd[1]: Reached target swap.target - Swaps.
[...]
Dez 21 15:41:13 lap systemd[1]: Mounting boot-efi.mount - /boot/efi...
Dez 21 15:41:13 lap systemd[1]: Mounted boot-efi.mount - /boot/efi.
Dez 21 15:41:13 lap systemd[1]: Reached target local-fs.target - Local File Systems.
[...]
Dez 21 15:41:13 lap systemd[1]: Started siduction_btrfs.path - Monitors changes of /boot/grub/grub-btrfs.cfg.
Dez 21 15:41:13 lap systemd[1]: Started siduction_btrfs.timer - After booting, checks if btrfs-default-subvolume and config-grub last used subvolume match..
[...]
Dez 21 15:41:14 lap systemd[1]: Reached target multi-user.target - Multi-User System.
Dez 21 15:41:14 lap systemd[1]: Reached target graphical.target - Graphical Interface.
[...]

# Siduction_btrfs.timer löst 15 sec nach dem Boot siduction_btrfs.service aus, und dieser führt test-btrfs-default.sh aus.
Dez 21 15:41:31 lap systemd[1]: Starting siduction_btrfs.service - Execute 'update-grub' if btrfs-default-subvolume changed....
[...]
Dez 21 15:41:36 lap test-btrfs-default.sh[2603]: Btrfs default subvolume and Grub default menu item differ.
Dez 21 15:41:36 lap test-btrfs-default.sh[2603]: Run "update-grub" and "grub-install"

# ANFANG weitergeleitete Meldungen von update-grub.
Dez 21 15:41:36 lap test-btrfs-default.sh[3141]: Generating grub configuration file ...
Dez 21 15:41:36 lap test-btrfs-default.sh[3143]: Found theme: /usr/share/grub/themes/giants/theme.txt
Dez 21 15:41:37 lap test-btrfs-default.sh[3200]: Found linux image: .snapshots/16/snapshot/boot/vmlinuz-6.6.7-1-siduction-amd64
Dez 21 15:41:37 lap test-btrfs-default.sh[3200]: Found initrd image: .snapshots/16/snapshot/boot/initrd.img-6.6.7-1-siduction-amd64
Dez 21 15:41:37 lap test-btrfs-default.sh[3200]: Found linux image: .snapshots/16/snapshot/boot/vmlinuz-6.6.3-1-siduction-amd64
Dez 21 15:41:37 lap test-btrfs-default.sh[3200]: Found initrd image: .snapshots/16/snapshot/boot/initrd.img-6.6.3-1-siduction-amd64
Dez 21 15:41:37 lap test-btrfs-default.sh[3200]: Found linux image: .snapshots/16/snapshot/boot/vmlinuz-6.6.2-1-siduction-amd64
Dez 21 15:41:37 lap test-btrfs-default.sh[3200]: Found initrd image: .snapshots/16/snapshot/boot/initrd.img-6.6.2-1-siduction-amd64
Dez 21 15:41:37 lap test-btrfs-default.sh[3200]: Found linux image: .snapshots/16/snapshot/boot/vmlinuz-6.4.10-1-siduction-amd64
Dez 21 15:41:37 lap test-btrfs-default.sh[3200]: Found initrd image: .snapshots/16/snapshot/boot/initrd.img-6.4.10-1-siduction-amd64
Dez 21 15:41:37 lap test-btrfs-default.sh[3506]: Found memtest86+ 64bit EFI image: /@snapshots/16/snapshot/boot/memtest86+x64.efi
Dez 21 15:41:37 lap test-btrfs-default.sh[3529]: Warning: os-prober will be executed to detect other bootable partitions.
Dez 21 15:41:37 lap test-btrfs-default.sh[3529]: Its output will be used to detect bootable binaries on them and create new boot entries.
[...]
Dez 21 15:41:38 lap 50mounted-tests[3898]: debug: running subtest /usr/lib/os-probes/mounted/efi
Dez 21 15:41:38 lap test-btrfs-default.sh[3902]: Adding boot menu entry for UEFI Firmware Settings ...
Dez 21 15:41:38 lap test-btrfs-default.sh[3908]: Detecting snapshots ...
Dez 21 15:41:38 lap test-btrfs-default.sh[3908]: Found snapshot: 2023-12-21 15:36:44 | @snapshots/16/snapshot | single | writable copy of #11   |
Dez 21 15:41:38 lap test-btrfs-default.sh[3908]: Found snapshot: 2023-12-21 15:36:44 | @snapshots/15/snapshot | single | rollback backup of #10 |
Dez 21 15:41:38 lap test-btrfs-default.sh[3908]: Found snapshot: 2023-12-21 14:49:45 | @snapshots/14/snapshot | post   | apt DU                 |
Dez 21 15:41:38 lap test-btrfs-default.sh[3908]: Found snapshot: 2023-12-21 14:48:48 | @snapshots/13/snapshot | pre    | apt DU                 |
Dez 21 15:41:38 lap test-btrfs-default.sh[3908]: Found snapshot: 2023-12-21 13:36:56 | @snapshots/12/snapshot | post   | apt - 6.4.10-1         |
Dez 21 15:41:38 lap test-btrfs-default.sh[3908]: Found snapshot: 2023-12-21 13:36:53 | @snapshots/11/snapshot | pre    | apt - 6.4.10-1         |
Dez 21 15:41:38 lap test-btrfs-default.sh[3908]: Found snapshot: 2023-12-04 15:14:24 | @snapshots/10/snapshot | single | writable copy of #7    |
Dez 21 15:41:38 lap test-btrfs-default.sh[3908]: Found snapshot: 2023-12-04 15:14:24 | @snapshots/9/snapshot  | single | rollback backup of #8  |
Dez 21 15:41:38 lap test-btrfs-default.sh[3908]: Found snapshot: 2023-12-04 14:47:50 | @snapshots/8/snapshot  | single | writable copy of #5    |
Dez 21 15:41:38 lap test-btrfs-default.sh[3908]: Found snapshot: 2023-12-04 14:47:50 | @snapshots/7/snapshot  | single | rollback backup        |
Dez 21 15:41:38 lap test-btrfs-default.sh[3908]: Found snapshot: 2023-11-29 11:23:29 | @snapshots/6/snapshot  | post   | apt                    |
Dez 21 15:41:38 lap test-btrfs-default.sh[3908]: Found snapshot: 2023-11-29 11:21:29 | @snapshots/5/snapshot  | pre    | apt                    |
Dez 21 15:41:38 lap test-btrfs-default.sh[3908]: Found 12 snapshot(s)
Dez 21 15:41:38 lap test-btrfs-default.sh[3908]: Unmount /tmp/grub-btrfs.sRAXPvIBvJ .. Success
Dez 21 15:41:38 lap test-btrfs-default.sh[4257]: done
# ENDE weitergeleitete Meldungen von update-grub.

Dez 21 15:41:38 lap test-btrfs-default.sh[2603]: Found EFI. Install grub.

# ANFANG weitergeleitete Meldungen von grub-install
Dez 21 15:41:38 lap test-btrfs-default.sh[4258]: x86_64-efi wird für Ihre Plattform installiert.
Dez 21 15:41:39 lap test-btrfs-default.sh[4258]: installation beendet. Keine Fehler aufgetreten.
# ENDE weitergeleitete Meldungen von grub-install

Dez 21 15:41:39 lap systemd[1]: siduction_btrfs.service: Deactivated successfully.
Dez 21 15:41:39 lap systemd[1]: Finished siduction_btrfs.service - Execute 'update-grub' if btrfs-default-subvolume changed..
Dez 21 15:41:39 lap systemd[1]: siduction_btrfs.service: Consumed 1.790s CPU time.
ak-li commented 5 months ago

Btrfs mit snapper - Kurzanleitung

Systemzustand

Alle nachfolgenden Aktionen basieren auf dem hier gezeigten Systemzustand des '/' Dateisystems.
Die Befehle je nach Konfiguration als root oder user ausführen.

Die Ausgabe von snapper list

 # |Typ   |Pre #|Date          |User|Cleanup|Description        
---+------+-----+--------------+----+-------+------------------|
 0 |single|     |              |root|       |current           |
 7 |pre   |     |12-04 14:47:50|root|number |apt DU            |
 8 |post  |    7|12-04 14:50:32|root|number |apt DU            |
 9 |single|     |12-04 15:14:24|root|number |rollback bak of #8|
10*|single|     |12-04 15:14:24|root|       |writable cp of #7 |
11 |pre   |     |12-21 13:36:53|root|number |apt - 6.4.10-1    |
12 |post  |   11|12-21 13:37:46|root|number |apt - 6.4.10-1    |
13 |pre   |     |12-21 13:48:48|root|number |apt DU            |
14 |post  |   13|12-21 13:52:45|root|number |apt DU            |
15 |pre   |     |12-28 09:18:08|root|number |apt + gnome       |
16 |post  |   15|12-28 09:21:35|root|number |apt + gnome       |

Erläuterungen:

Mit dem Dist Upgrade (7 und 8) erhielten wir ein fehlerhaftes Paket, dass die Funktion des Systems stark beeinträchtigte. Deshalb wurde ein Rollback zu dem Systemzustand unmittelbar vor dem Dist Upgrade (7) ausgeführt.
Der Btrfs default Snapshot 10 entwickelte sich mit den Aktionen 11 bis 16 weiter.

Einen Snapshot erstellen

Wir wollen umfangreiche Änderungen der Netzwerkkonfiguration vornehmen. Ein Snapshot fixiert den bisherigen Zustand.
Der Befehl:

snapper create -t single -c number -d "Netconfig change"

Ergebnis:

Die Ausgabe von snapper list

 # |Typ   |Pre #|Date          |User|Cleanup|Description        
---+------+-----+--------------+----+-------+------------------|
 0 |single|     |              |root|       |current           |
 7 |pre   |     |12-04 14:47:50|root|number |apt DU            |
 9 |single|     |12-04 15:14:24|root|number |rollback bak of #8|
10*|single|     |12-04 15:14:24|root|       |writable cp of #7 |
11 |pre   |     |12-21 13:36:53|root|number |apt - 6.4.10-1    |
12 |post  |   11|12-21 13:37:46|root|number |apt - 6.4.10-1    |
13 |pre   |     |12-21 13:48:48|root|number |apt DU            |
14 |post  |   13|12-21 13:52:45|root|number |apt DU            |
15 |pre   |     |12-28 09:18:08|root|number |apt + gnome       |
16 |post  |   15|12-28 09:21:35|root|number |apt + gnome       |
17 |single|     |12-29 11:14:19|user|number |Netconfig change  |

Einen Snapshot entfernen

Wir benötigen 8 nicht mehr.
Der Befehl:

snapper delete 8

Ergebnis:

Die Ausgabe von snapper list

 # |Typ   |Pre #|Date          |User|Cleanup|Description        
---+------+-----+--------------+----+-------+------------------|
 0 |single|     |              |root|       |current           |
 7 |pre   |     |12-04 14:47:50|root|number |apt DU            |
 9 |single|     |12-04 15:14:24|root|number |rollback bak of #8|
10*|single|     |12-04 15:14:24|root|       |writable cp of #7 |
11 |pre   |     |12-21 13:36:53|root|number |apt - 6.4.10-1    |
12 |post  |   11|12-21 13:37:46|root|number |apt - 6.4.10-1    |
13 |pre   |     |12-21 13:48:48|root|number |apt DU            |
14 |post  |   13|12-21 13:52:45|root|number |apt DU            |
15 |pre   |     |12-28 09:18:08|root|number |apt + gnome       |
16 |post  |   15|12-28 09:21:35|root|number |apt + gnome       |

Aufräumen

Das System läuft seit geraumer Zeit fehlerlos.
Wir entfernen alle nicht mehr benötigten Snapshots. Der Befehl:

snapper delete 7-9 11-16

Ergebnis:

Die Ausgabe von snapper list

 # |Typ   |Pre #|Date          |User|Cleanup|Description        
---+------+-----+--------------+----+-------+------------------|
 0 |single|     |              |root|       |current           |
10*|single|     |12-04 15:14:24|root|       |writable cp of #7 |

Erläuterungen:

Alle Snapshots außer 0 und 10 bilden Etappen in der Entwicklung des Systems ab. Der default Snapshot 10 entspricht genau dem augenblicklichen Zustand unseres Systems. Durch löschen aller anderen Snapshots erklärten wir sinnbildlich, dass wir mit unserem System vollständig zufrieden sind.

Rollback ausführen

Wir wollen Gnome wieder entfernen. Mit apt ist es sehr aufwändig, da viele Abhängigkeiten der Installation auf dem System verbleiben.
Einfacher ist ein Rollback zu 15:

snapper --ambit classic rollback 15
  Anwendungsbereich ist classic
  Nur-Lesen-Schnappschuss des Standard-Subvolumens erstellen. (Schnappschuss 17.)
  Lesen-Schreiben-Schnappschuss des derzeit laufenden Subvolumens erstellen. (Schnappschuss 18.)
  Einstellung des Standard-Subvolumens zu Schnappschuss 18.

Anschließend ist ein Reboot notwendig um in das Rollbackziel 18 zu gelangen.
(Als Root im Terminal, oder die graphischen Oberfläche benutzen.)

init 6

Ergebnis:

Die Ausgabe von snapper list nach dem Reboot:

 # |Typ   |Pre#|Date          |User|Cleanup|Description         
---+------+----+--------------+----+-------+-------------------|
 0 |single|    |              |root|       |current            |
 7 |pre   |    |12-04 14:47:50|root|number |apt DU             |
 8 |post  |   7|12-04 14:50:32|root|number |apt DU             |
 9 |single|    |12-04 15:14:24|root|number |rollback bak of #8 |
10 |single|    |12-04 15:14:24|root|       |writable cp of #7  |
11 |pre   |    |12-21 13:36:53|root|number |apt - 6.4.10-1     |
12 |post  |  11|12-21 13:37:46|root|number |apt - 6.4.10-1     |
13 |pre   |    |12-21 13:48:48|root|number |apt DU             |
14 |post  |  13|12-21 13:52:45|root|number |apt DU             |
15 |pre   |    |12-28 09:18:08|root|number |apt + gnome        |
16 |post  |  15|12-28 09:21:35|root|number |apt + gnome        |
17 |single|    |01-14 12:03:24|root|number |rollback bak of #16|
18*|single|    |01-14 12:03:24|root|       |writable cp of #15 |

Erläuterungen:

Nach dem Rollback und vor dem Reboot ändert sich die Ausgabe von snapper list zu:

 # |Typ   |Pre#|Date          |User|Cleanup|Description         
---+------+----+--------------+----+-------+-------------------|
 0 |single|    |              |root|       |current            |
 7 |pre   |    |12-04 14:47:50|root|number |apt DU             |
 8 |post  |   7|12-04 14:50:32|root|number |apt DU             |
 9 |single|    |12-04 15:14:24|root|number |rollback bak of #8 |
10-|single|    |12-04 15:14:24|root|       |writable cp of #7  |
11 |pre   |    |12-21 13:36:53|root|number |apt - 6.4.10-1     |
12 |post  |  11|12-21 13:37:46|root|number |apt - 6.4.10-1     |
13 |pre   |    |12-21 13:48:48|root|number |apt DU             |
14 |post  |  13|12-21 13:52:45|root|number |apt DU             |
15 |pre   |    |12-28 09:18:08|root|number |apt + gnome        |
16 |post  |  15|12-28 09:21:35|root|number |apt + gnome        |
17 |single|    |01-14 12:03:24|root|number |rollback bak of #16|
18+|single|    |01-14 12:03:24|root|       |writable cp of #15 |

Bitte die Zeichen - und + hinter den Ziffern 10 und 18 beachten.
Sie bedeuten, dass wir uns im Snapshot 10 befinden, er aber nicht mehr Btrfs default ist. Snapschot 18 ist jetzt der neue Btrfs default.
Damit wir problemlos in den Snapshot 18 booten können, erstellt unser Skript test-btrfs-default.sh eine neue Menüdatei für GRUB im derzeitigen Subvolumen 10. Nach dem Reboot erstellt unser Skript auch in Snapshot 18 eine neue Menüdate und installiert von dort aus GRUB. Fortan liest GRUB die Menüdatei aus Snapshot 18.

ak-li commented 3 months ago

Mit dem Einfügen der Graphik sollte alles klar sein. https://github.com/siduction/sidu-manual/commit/fb4fa75b0110a19ef57230ec35aec4a0b79e7b6c Rollback Kommando absetzen - Reboot - Fertig

# snapper --ambit classic rollback 13
Anwendungsbereich ist classic
Nur-Lesen-Schnappschuss des Standard-Subvolumens erstellen. (Schnappschuss 15.)
Lesen-Schreiben-Schnappschuss des Schnappschusses 13 erstellen. (Schnappschuss 16.)
Einstellung des Standard-Subvolumens zu Schnappschuss 16.

Reboot. Der Standardeintrag führt zum Rollbackziel (Schnappschuss 16.).

Fertig.