Dies ist eine alte Version des Dokuments!
Inhaltsverzeichnis
ArchLinux - Minimal Server Installation - mit Btrfs - snapper
Die hier verwendete Installationsmethode ist eine Installation von einem ISO-Image/USB-Stick. Es kommt die einzige verfügbare Variante von ArchLinux in der Version 2020.01.01 zum Einsatz.
snapper ist ein Werkzeug zur Verwaltung von Linux-Dateisystem-Snapshots. Abgesehen von der offensichtlichen Erstellung und Löschung von Snapshots, kann snapper Snapshots vergleichen und Unterschiede zwischen Snapshots rückgängig machen. Vereinfacht ausgedrückt ermöglicht dies Root- und Nicht-Root-Benutzern, ältere Versionen von Dateien anzuzeigen und Änderungen rückgängig zu machen.
Beschreibung | Externer Link |
---|---|
Homepage | https://www.archlinux.de/ |
Herunterladen | https://www.archlinux.de/download |
Dokumentation | https://wiki.archlinux.de/title/Hauptseite |
Installation | https://wiki.archlinux.de/title/Anleitung_für_Einsteiger |
- Btrfs | https://btrfs.wiki.kernel.org |
* Quelle: YouTube - Channel: unicks.eu - Total Arch Linux | 3.4 Snapper auf die leichte Art!
Ab hier werden root
-Rechte zur Ausführung der nachfolgenden Befehle benötigt. Um der Benutzer root
zu werden, geben Sie bitte nachfolgenden Befehl ein:
$ su - Password:
Voraussetzungen
Für die nachfolgende Installation wird vorausgesetzt,
- dass eine lauffähige Version von ArchLinux mit dem Dateisystem: Btrfs vorhanden ist
- Das ArchLinux User-Community Repository (AUR) bereits eingebunden ist
Eine der unter nachfolgenden Links beschriebenen Installationen von ArchLinux wird hier als Mindestvoraussetzung angenommen:
Die unter nachfolgendem Link beschriebene Installation von ArchLinux User-Community Repository (AUR) wir hier ebenfalls vorausgesetzt:
Installation: snapper
Zum erstellen von Snapshots ist die Nutzung des Programms snapper erforderlich.
Mit nachfolgendem Befehl, kann snapper installiert werden:
[root@archlinux ~]# pacman -S snapper resolving dependencies... looking for conflicting packages... Packages (2) boost-libs-1.72.0-2 snapper-0.8.12-1 Total Download Size: 3.28 MiB Total Installed Size: 13.42 MiB :: Proceed with installation? [Y/n] Y :: Retrieving packages... boost-libs-1.72.... 2.6 MiB 1457 KiB/s 00:02 [######################] 100% snapper-0.8.12-1... 734.4 KiB 1469 KiB/s 00:01 [######################] 100% (2/2) checking keys in keyring [######################] 100% (2/2) checking package integrity [######################] 100% (2/2) loading package files [######################] 100% (2/2) checking for file conflicts [######################] 100% (2/2) checking available disk space [######################] 100% :: Processing package changes... (1/2) installing boost-libs [######################] 100% Optional dependencies for boost-libs openmpi: for mpi support (2/2) installing snapper [######################] 100% Optional dependencies for snapper pam: pam_snapper [installed] :: Running post-transaction hooks... (1/3) Reloading system manager configuration... (2/3) Arming ConditionNeedsUpdate... (3/3) Reloading system bus configuration...
Konfiguration: snapper
snapper: root
Nach der erfolgreichen Installation von snapper, soll dieser so konfiguriert werden, dass vom Btrfs: Subvolume - /
(root) - Snapshots erstellt werden können.
Dazu ist die Anlage einer Konfiguration für das Btrfs: Subvolume - /
(root) erforderlich, welche mit nachfolgendem Befehl erzeugt werden kann:
[root@archlinux ~]# snapper -c root create-config /
Die so neu erstellte Konfigurationsdatei ist in nachfolgendem Verzeichnis mit nachfolgendem Namen root
zu finden:
/etc/snapper/configs/root
Mit der Erstellung der Konfiguration für das Btrfs: Subvolume - /
(root), wird auch ein Btrfs: Unter-Subvolume, mit der Bezeichnung
.snapshots
erstellt, wie nachfolgender Befehl zeigt:
[root@archlinux ~]# btrfs subvolume list / ID 257 gen 86 top level 5 path root ID 258 gen 77 top level 5 path tmp ID 259 gen 87 top level 5 path var_log ID 260 gen 10 top level 5 path snapshots ID 263 gen 25 top level 257 path var/lib/portables ID 264 gen 26 top level 257 path var/lib/machines ID 265 gen 85 top level 257 path .snapshots
HINWEIS - Das Btrfs: Unter-Subvolume - .snapshots
von root
kann NICHT verwendet werden!
Erklärung
Da bei einem möglichen Zurücksetzen auf einen vorherigen Snapshot, dann die Snapshots darin ebenfalls nicht mehr vorhanden wären! - Dafür wurde ein eigenes Btrfs: Subvolume /.snapshots
angelegt. Siehe auch den nachfolgenden internen Link
Um das automatisch neu erstellte Btrfs: Unter-Subvolume - .snapshots
zu löschen, kann nachfolgender Befehl verwendet werden:
[root@archlinux ~]# btrfs subvolume delete /.snapshots/ Delete subvolume (no-commit): '//.snapshots'
Zur Überprüfung, ob das Entfernen auch korrekt funktioniert hat, kann nachfolgender Befehl verwendet werden:
[root@archlinux ~]# btrfs subvolume list / ID 257 gen 88 top level 5 path root ID 258 gen 77 top level 5 path tmp ID 259 gen 87 top level 5 path var_log ID 260 gen 10 top level 5 path snapshots ID 263 gen 25 top level 257 path var/lib/portables ID 264 gen 26 top level 257 path var/lib/machines
Anschließend legen wir im Wurzelverzeichnis ein neues Verzeichnis mit dem Namen
/.snapshots
mit nachfolgendem Befehl an:
# [root@archlinux ~]# mkdir /.snapshots
Jetzt muss nur noch die Konfigurationsdatei
/etc/fstab
wie folgt erweitert werden, so dass das neue Verzeichnis /.snapshots
auch auf die mit der ursprünglichen Installation angelegtes Btrfs: Subvolume /.snapshots
(welches KEIN Btrfs: Unter-Subvolume ist), automatisch bei jedem Start mit gemounttet wird:
[root@archlinux ~]# vim /etc/fstab
# /dev/vda1 LABEL=ROOT #UUID=7d67e68c-88c6-486f-b79a-506ca7aa9860 / btrfs rw,relatime,compress=lzo,space_cache=v2,subvolid=256,subvol=/root,subvol=root 0 0 # /dev/vda1 LABEL=ROOT UUID=7d67e68c-88c6-486f-b79a-506ca7aa9860 /tmp btrfs rw,relatime,compress=lzo,space_cache=v2,subvol=tmp 0 0 # /dev/vda1 LABEL=ROOT UUID=7d67e68c-88c6-486f-b79a-506ca7aa9860 /var/log btrfs rw,relatime,compress=lzo,space_cache=v2,subvol=var_log 0 0 # /dev/vda1 LABEL=ROOT UUID=7d67e68c-88c6-486f-b79a-506ca7aa9860 /btrfs btrfs rw,relatime,compress=lzo,space_cache=v2,subvolid=5 0 0 # /dev/vda1 LABEL=ROOT UUID=7d67e68c-88c6-486f-b79a-506ca7aa9860 /.snapshots btrfs rw,relatime,compress=lzo,space_cache=v2,subvol=snapshots 0 0 # /dev/vda2 LABEL=SWAP UUID=a3a1f6b2-6fbb-435f-8d71-b90f00701fe1 none swap defaults 0 0
*Der vorletzte Eintrag ist hinzugekommen!
Erklärung
# /dev/vda1 LABEL=ROOT UUID=7d67e68c-88c6-486f-b79a-506ca7aa9860 /.snapshots btrfs rw,relatime,compress=lzo,space_cache=v2,subvol=snapshots 0 0
Hinzufügen eines Mount-Points (Einhängepunktes im Dateisystem) für das Btrfs: Subvolume - snapshots
auf das Verzeichnis /.snapshots
.
Um den in der Konfigurationsdatei /etc/fstab
neu hinzugefügten Eintrag per Hand zu aktivieren, was sonst ja mit dem Starten des Betriebssystems erfolgen wird, kann nachfolgender Befehl verwendet werden:
[root@archlinux ~]# mount /.snapshots/
Ob das mounten von Hand erfolgreich war, kann mit nachfolgendem Befehl überprüft werden:
[root@archlinux ~]# mount | grep /dev/vda /dev/vda1 on / type btrfs (rw,relatime,space_cache=v2,subvolid=256,subvol=/root) /dev/vda1 on /btrfs type btrfs (rw,relatime,space_cache=v2,subvolid=5,subvol=/) /dev/vda1 on /tmp type btrfs (rw,relatime,space_cache=v2,subvolid=258,subvol=/tmp) /dev/vda1 on /var/log type btrfs (rw,relatime,space_cache=v2,subvolid=259,subvol=/var_log) /dev/vda1 on /.snapshots type btrfs (rw,relatime,space_cache=v2,subvolid=260,subvol=/snapshots)
Um sicher zu gehen, das snapper auch weiterhin korrekt funktioniert, kann nachfolgender Befehl verwendet werden, welche den aktuellen Status aller Snapshots auflistet:
[root@archlinux ~]# snapper list # | Type | Pre # | Date | User | Cleanup | Description | Userdata ---+--------+-------+------+------+---------+-------------+--------- 0 | single | | | root | | current |
/etc/snapper/configs/root
Nachfolgende Einstellungen passen das Verhalten von snapper an.
- Es sollen KEINE stündlichen Snapshots durchgeführt werden.
- Die Anzahl von aufzubewahrenden Snapshots soll begrenzt werden.
- Die Anzahl der als wichtig gekennzeichneten Snapshots soll begrenzt werden.
[root@archlinux ~]# vim /etc/snapper/configs/root
# subvolume to snapshot SUBVOLUME="/" # filesystem type FSTYPE="btrfs" # btrfs qgroup for space aware cleanup algorithms QGROUP="" # fraction of the filesystems space the snapshots may use SPACE_LIMIT="0.5" # fraction of the filesystems space that should be free FREE_LIMIT="0.2" # users and groups allowed to work with config ALLOW_USERS="" ALLOW_GROUPS="" # sync users and groups from ALLOW_USERS and ALLOW_GROUPS to .snapshots # directory SYNC_ACL="no" # start comparing pre- and post-snapshot in background after creating # post-snapshot BACKGROUND_COMPARISON="yes" # run daily number cleanup NUMBER_CLEANUP="yes" # limit for number cleanup # Tachtler # default: NUMBER_MIN_AGE="1800" NUMBER_MIN_AGE="0" # Tachtler # default: NUMBER_LIMIT="50" NUMBER_LIMIT="10" # Tachtler # default: NUMBER_LIMIT_IMPORTANT="10" NUMBER_LIMIT_IMPORTANT="3" # create hourly snapshots # Tachtler # default: TIMELINE_CREATE="yes" TIMELINE_CREATE="no" # cleanup hourly snapshots after some time TIMELINE_CLEANUP="yes" # limits for timeline cleanup TIMELINE_MIN_AGE="1800" TIMELINE_LIMIT_HOURLY="10" TIMELINE_LIMIT_DAILY="10" TIMELINE_LIMIT_WEEKLY="0" TIMELINE_LIMIT_MONTHLY="10" TIMELINE_LIMIT_YEARLY="10" # cleanup empty pre-post-pairs EMPTY_PRE_POST_CLEANUP="yes" # limits for empty pre-post-pair cleanup EMPTY_PRE_POST_MIN_AGE="1800"
Erklärungen:
# run daily number cleanup NUMBER_CLEANUP="yes"
Falls nicht bereits auf „yes“ gesetzt, bewrikt dies, das ab einer gewissen Anzahl ältere Snaphots wieder gelöscht werden
# limit for number cleanup # Tachtler # default: NUMBER_MIN_AGE="1800" NUMBER_MIN_AGE="0"
Bewrikt, das das Alter eines Snapshats ignoriert und nur die Anzahl entscheinden ist, da sonst ggf. unbeabsichtigt automatisch evtl. ein Snapshot gelöscht wird.
# Tachtler # default: NUMBER_LIMIT="50" NUMBER_LIMIT="10"
Anzahl der zu speichernden Snapshots.
# Tachtler # default: NUMBER_LIMIT_IMPORTANT="10" NUMBER_LIMIT_IMPORTANT="3"
Anzahl der zu speichernden - wichtigen - Snapshots.
# create hourly snapshots # Tachtler # default: TIMELINE_CREATE="yes" TIMELINE_CREATE="no"
Verhindert, das jede Stunde automatisch ein Snapshot erstellt wird.
/usr/lib/systemd/system/snapper-cleanup.timer
Damit jedoch stündlich durch den systemd - timer ältere, anhand der Anzahl der vorhandenen Snapshots automatishc auch gelöscht werden können, muss mit nachfolgendem Befehl der mit der Installation mit gekommene Timer
/usr/lib/systemd/system/snapper-cleanup.timer
aktiviert werden:
[root@archlinux /]# systemctl enable --now snapper-cleanup.timer Created symlink /etc/systemd/system/timers.target.wants/snapper-cleanup.timer → /usr/lib/systemd/system/snapper-cleanup.timer.
* Die Angabe des Parameters –now
bewirkt die sofortige Ausführung!
Ob dies korrekt funktioniert hat, kann mit nachfolgendem Befehl überprüft werden:
# systemctl list-timers NEXT LEFT LAST PASSED UNIT ACTIVATES Fri 2020-09-11 00:00:00 CEST 8h left n/a n/a man-db.timer man-db.service Fri 2020-09-11 00:00:00 CEST 8h left Thu 2020-09-10 13:06:38 CEST 1h 55min ago shadow.timer shadow.service Fri 2020-09-11 13:22:13 CEST 22h left Thu 2020-09-10 13:22:13 CEST 1h 39min ago systemd-tmpfiles-clean.timer systemd-tmpfiles-clean.service Fri 2020-09-11 15:00:54 CEST 23h left Thu 2020-09-10 15:00:54 CEST 1min 13s ago snapper-cleanup.timer snapper-cleanup.service 4 timers listed. Pass --all to see loaded but inactive timers, too.
Installation: grub-btrfs
Damit aus dem mit snapper erstellten Snapshots auch automatisch - Boot-Menü-Einträge für GRUB erstellt werden, ist die Installation des Programms
erforderlich.
Mit nachfolgendem Befehl, kann snapper installiert werden:
[root@archlinux ~]# pacman -S grub-btrfs resolving dependencies... looking for conflicting packages... Packages (1) grub-btrfs-4.5-1 Total Download Size: 0.02 MiB Total Installed Size: 0.06 MiB :: Proceed with installation? [Y/n] Y :: Retrieving packages... grub-btrfs-4.5-1-any 20.6 KiB 1029 KiB/s 00:00 [###################################] 100% (1/1) checking keys in keyring [###################################] 100% (1/1) checking package integrity [###################################] 100% (1/1) loading package files [###################################] 100% (1/1) checking for file conflicts [###################################] 100% (1/1) checking available disk space [###################################] 100% :: Processing package changes... (1/1) installing grub-btrfs [###################################] 100% Optional dependencies for grub-btrfs snapper: Snapper support [installed] :: Running post-transaction hooks... (1/2) Reloading system manager configuration... (2/2) Arming ConditionNeedsUpdate...
Die Konfiguration für das Programm grub-btrfs ist in nachfolgendem Verzeichnis mit nachfolgendem Namen zu finden:
/etc/grub.d/41_snapshots-btrfs
HINWEIS - Anpassungen müssen hier keine erfolgen!
Installation: snap-pac
Hierbei handelt es sich um eine Reihe von pacman
-„Hooks“ und ein Skript, das automatisch bewirkt, dass snapper einen Snapshot vor und nach pacman
-Transaktionen durchführen.
Dies bietet eine einfache Möglichkeit, Änderungen an einem System nach einer pacman
-Transaktion rückgängig zu machen.
Mit nachfolgendem Befehl, kann snap-pac installiert werden:
[root@archlinux ~]# pacman -S snap-pac resolving dependencies... looking for conflicting packages... Packages (1) snap-pac-2.3.1-2 Total Download Size: 0.02 MiB Total Installed Size: 0.03 MiB :: Proceed with installation? [Y/n] Y :: Retrieving packages... snap-pac-2.3.1-2-any 15.5 KiB 0.00 B/s 00:00 [###################] 100% (1/1) checking keys in keyring [###################] 100% (1/1) checking package integrity [###################] 100% (1/1) loading package files [###################] 100% (1/1) checking for file conflicts [###################] 100% (1/1) checking available disk space [###################] 100% :: Processing package changes... (1/1) installing snap-pac [###################] 100% :: Running post-transaction hooks... (1/3) Arming ConditionNeedsUpdate... (2/3) Performing snapper post snapshots for the following configurations... (3/3) You are installing snap-pac, so no post transaction snapshots will be taken.
Installation: snap-pac-grub
pacman
-Hook zum Aktualisieren von GRUB-Einträgen für grub-btrfs
nach snap-pac
-erstellten Snapshots.
Bavor mit der Installation begonnen werden kann, muss der öffentliche PGP-Schlüssel des Erstellers zuvor importiert werden. Dies kann mit nachfolgendem Befehl durchgeführt werden:
[root@archlinux ~]# gpg --keyserver keys.openpgp.org --recv-keys EB4F9E5A60D32232BB52150C12C87A28FEAC6B20 gpg: /root/.gnupg/trustdb.gpg: trustdb created gpg: key 12C87A28FEAC6B20: public key "Maxim Baz <pgp@maximbaz.com>" imported gpg: Total number processed: 1 gpg: imported: 1
Falls der Shclüssel nicht auf einem „Keyserver“ gefunden werden kann, hier der öffentliche-Schlüssel zum herunterladen:
-----BEGIN PGP PUBLIC KEY BLOCK----- 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 =Ooef -----END PGP PUBLIC KEY BLOCK-----
[root@archlinux ~]# gpg --import EB4F9E5A60D32232BB52150C12C87A28FEAC6B20.asc
Mit nachfolgendem Befehl, kann snap-pac-grub installiert werden:
[root@archlinux ~]# pikaur -S snap-pac-grub Reading repository package databases... Reading local package database... Resolving AUR dependencies... :: AUR package will be installed: snap-pac-grub -> 1.0.4-4 :: Proceed with installation? [Y/n] :: [v]iew package details [m]anually select packages >> Y looking for conflicting AUR packages... :: warning: Not showing diff for snap-pac-grub package (installing for the first time) Do you want to edit PKGBUILD for snap-pac-grub package? [Y/n] n :: Starting the build: Running as unit: run-u41.service Press ^] three times within 1s to disconnect TTY. ==> Making package: snap-pac-grub 1.0.4-4 (Thu 17 Sep 2020 11:26:36 AM CEST) ==> Checking runtime dependencies... ==> Checking buildtime dependencies... ==> Retrieving sources... -> Downloading snap-pac-grub-1.0.4.tar.gz... % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 100 646 100 646 0 0 1993 0 --:--:-- --:--:-- --:--:-- 1993 100 1129 100 1129 0 0 1251 0 --:--:-- --:--:-- --:--:-- 1251 -> Downloading snap-pac-grub-1.0.4.tar.gz.sig... % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 100 650 100 650 0 0 2188 0 --:--:-- --:--:-- --:--:-- 2181 100 566 100 566 0 0 681 0 --:--:-- --:--:-- --:--:-- 681 ==> Validating source files with sha256sums... snap-pac-grub-1.0.4.tar.gz ... Passed snap-pac-grub-1.0.4.tar.gz.sig ... Skipped ==> Verifying source file signatures with gpg... snap-pac-grub-1.0.4.tar.gz ... FAILED (unknown public key 011FDC52DA839335) ==> ERROR: One or more PGP signatures could not be verified! Finished with result: exit-code Main processes terminated with: code=exited/status=1 Service runtime: 2.328s Command 'systemd-run --service-type=oneshot --pipe --wait --pty -p DynamicUser=yes -p CacheDirectory=pikaur -E HOME=/tmp -p WorkingDirectory=/var/cache/pikaur/build/snap-pac-grub makepkg --force' failed to execute. :: Try recovering? [R] retry build [p] PGP check skip [c] checksums skip [i] ignore architecture [d] delete build dir and try again [e] edit PKGBUILD ------------------------ [s] skip building this package [a] abort building all the packages > p Running as unit: run-u46.service Press ^] three times within 1s to disconnect TTY. ==> Making package: snap-pac-grub 1.0.4-4 (Thu 17 Sep 2020 11:26:40 AM CEST) ==> Checking runtime dependencies... ==> Checking buildtime dependencies... ==> Retrieving sources... -> Found snap-pac-grub-1.0.4.tar.gz -> Found snap-pac-grub-1.0.4.tar.gz.sig ==> WARNING: Skipping verification of source file PGP signatures. ==> Validating source files with sha256sums... snap-pac-grub-1.0.4.tar.gz ... Passed snap-pac-grub-1.0.4.tar.gz.sig ... Skipped ==> Extracting sources... -> Extracting snap-pac-grub-1.0.4.tar.gz with bsdtar ==> Entering fakeroot environment... ==> Starting package()... ==> Tidying install... -> Removing libtool files... -> Purging unwanted files... -> Removing static library files... -> Stripping unneeded symbols from binaries and libraries... -> Compressing man and info pages... ==> Checking for packaging issues... ==> Creating package "snap-pac-grub"... -> Generating .PKGINFO file... -> Generating .BUILDINFO file... -> Generating .MTREE file... -> Compressing package... ==> Leaving fakeroot environment. ==> Finished making: snap-pac-grub 1.0.4-4 (Thu 17 Sep 2020 11:26:41 AM CEST) Finished with result: success Main processes terminated with: code=exited/status=0 Service runtime: 1.214s loading packages... resolving dependencies... looking for conflicting packages... Packages (1) snap-pac-grub-1.0.4-4 Total Installed Size: 0.00 MiB :: Proceed with installation? [Y/n] Y (1/1) checking keys in keyring [####################################] 100% (1/1) checking package integrity [####################################] 100% (1/1) loading package files [####################################] 100% (1/1) checking for file conflicts [####################################] 100% (1/1) checking available disk space [####################################] 100% :: Running pre-transaction hooks... (1/1) Performing snapper pre snapshots for the following configurations... ==> root: 1 :: Processing package changes... (1/1) installing snap-pac-grub [####################################] 100% :: Running post-transaction hooks... (1/3) Arming ConditionNeedsUpdate... (2/3) Performing snapper post snapshots for the following configurations... ==> root: 2 (3/3) Generate GRUB config to let grub-btrfs detect new snapshots Generating grub configuration file ... Found linux image: /boot/vmlinuz-linux-lts Found initrd image: /boot/initramfs-linux-lts.img Found fallback initrd image(s) in /boot: initramfs-linux-lts-fallback.img ###### - Grub-btrfs: Snapshot detection started - ###### # Info: Separate boot partition not detected # Info: snapper detected, using config 'root' # Found snapshot: 2020-09-17 11:26:42 | snapshots/2/snapshot | post | snap-pac-grub # Found snapshot: 2020-09-17 11:26:42 | snapshots/1/snapshot | pre | pacman --color=always --upgrade /var/cache/pikaur/pkg/snap-pac-grub-1.0.... # Found 2 snapshot(s) ###### - Grub-btrfs: Snapshot detection ended - ###### done
HINWEIS - Leider entspricht der aktuelle öffentliche PGP-Schlüssel nicht dem des Paketes, so das die Überprüfung des PGP-Schlüssels leider zum Erstellungszeitpunkt übersprungen werden musste, da sonst keine Installation möglich wäre!
Eine Überprüfung ob alles funktioniert hat, kann mit nachfolgendem Befehl erfolgen:
[root@archlinux ~]# snapper list # | Type | Pre # | Date | User | Cleanup | Description | Userdata ---+--------+-------+----------------------------------+------+---------+-----------------------------------------------------------------------------+--------- 0 | single | | | root | | current | 1 | pre | | Thu 17 Sep 2020 11:26:42 AM CEST | root | number | pacman --color=always --upgrade /var/cache/pikaur/pkg/snap-pac-grub-1.0.... | 2 | post | 1 | Thu 17 Sep 2020 11:26:42 AM CEST | root | number | snap-pac-grub
Praxis
Auf einen snapshot zurücksetzen
Nachfolgender soll das Programm screenfatch
installoert werden und anschließend die Installation durch starten eines vorhergehenden Snapshots rückgängig gemacht werden.
Mit nachfolgendem Befehl, kann screenfetch
installiert werden:
[root@archlinux ~]# pacman -S screenfetch resolving dependencies... looking for conflicting packages... Packages (18) bc-1.07.1-4 libx11-1.6.12-1 libxau-1.0.9-3 libxcb-1.14-1 libxcomposite-0.4.5-3 libxdmcp-1.1.3-3 libxext-1.3.4-3 libxfixes-5.0.3-4 libxi-1.7.10-3 libxinerama-1.1.4-3 libxrender-0.9.10-4 libxtst-1.2.3-4 libxxf86vm-1.1.4-4 xcb-proto-1.14-1 xorg-xdpyinfo-1.3.2-4 xorg-xprop-1.2.4-2 xorgproto-2020.1-1 screenfetch-3.9.1-1 Total Download Size: 3.95 MiB Total Installed Size: 17.84 MiB :: Proceed with installation? [Y/n] Y :: Retrieving packages... bc-1.07.1-4-x86_64 87.8 KiB 1464 KiB/s 00:00 [####################################] 100% xcb-proto-1.14-1-any 108.9 KiB 1556 KiB/s 00:00 [####################################] 100% libxdmcp-1.1.3-3-x86_64 27.4 KiB 2.68 MiB/s 00:00 [####################################] 100% libxau-1.0.9-3-x86_64 10.9 KiB 0.00 B/s 00:00 [####################################] 100% libxcb-1.14-1-x86_64 999.8 KiB 1492 KiB/s 00:01 [####################################] 100% xorgproto-2020.1-1-any 237.9 KiB 1399 KiB/s 00:00 [####################################] 100% libx11-1.6.12-1-x86_64 2.1 MiB 1444 KiB/s 00:01 [####################################] 100% libxext-1.3.4-3-x86_64 107.3 KiB 1533 KiB/s 00:00 [####################################] 100% libxi-1.7.10-3-x86_64 148.3 KiB 1483 KiB/s 00:00 [####################################] 100% libxfixes-5.0.3-4-x86_64 13.4 KiB 0.00 B/s 00:00 [####################################] 100% libxtst-1.2.3-4-x86_64 29.5 KiB 2.89 MiB/s 00:00 [####################################] 100% libxxf86vm-1.1.4-4-x86_64 15.7 KiB 0.00 B/s 00:00 [####################################] 100% libxrender-0.9.10-4-x86_64 26.0 KiB 0.00 B/s 00:00 [####################################] 100% libxcomposite-0.4.5-3-x86_64 11.4 KiB 0.00 B/s 00:00 [####################################] 100% libxinerama-1.1.4-3-x86_64 10.1 KiB 0.00 B/s 00:00 [####################################] 100% xorg-xdpyinfo-1.3.2-4-x86_64 16.0 KiB 0.00 B/s 00:00 [####################################] 100% xorg-xprop-1.2.4-2-x86_64 25.8 KiB 2.51 MiB/s 00:00 [####################################] 100% screenfetch-3.9.1-1-any 50.9 KiB 4.97 MiB/s 00:00 [####################################] 100% (18/18) checking keys in keyring [####################################] 100% (18/18) checking package integrity [####################################] 100% (18/18) loading package files [####################################] 100% (18/18) checking for file conflicts [####################################] 100% (18/18) checking available disk space [####################################] 100% :: Running pre-transaction hooks... (1/1) Performing snapper pre snapshots for the following configurations... ==> root: 3 :: Processing package changes... ( 1/18) installing bc [####################################] 100% ( 2/18) installing xcb-proto [####################################] 100% ( 3/18) installing libxdmcp [####################################] 100% ( 4/18) installing libxau [####################################] 100% ( 5/18) installing libxcb [####################################] 100% ( 6/18) installing xorgproto [####################################] 100% ( 7/18) installing libx11 [####################################] 100% ( 8/18) installing libxext [####################################] 100% ( 9/18) installing libxi [####################################] 100% (10/18) installing libxfixes [####################################] 100% (11/18) installing libxtst [####################################] 100% (12/18) installing libxxf86vm [####################################] 100% (13/18) installing libxrender [####################################] 100% (14/18) installing libxcomposite [####################################] 100% (15/18) installing libxinerama [####################################] 100% (16/18) installing xorg-xdpyinfo [####################################] 100% (17/18) installing xorg-xprop [####################################] 100% (18/18) installing screenfetch [####################################] 100% Optional dependencies for screenfetch scrot: to take screenshot :: Running post-transaction hooks... (1/4) Arming ConditionNeedsUpdate... (2/4) Updating the info directory file... (3/4) Performing snapper post snapshots for the following configurations... ==> root: 4 (4/4) Generate GRUB config to let grub-btrfs detect new snapshots Generating grub configuration file ... Found linux image: /boot/vmlinuz-linux-lts Found initrd image: /boot/initramfs-linux-lts.img Found fallback initrd image(s) in /boot: initramfs-linux-lts-fallback.img ###### - Grub-btrfs: Snapshot detection started - ###### # Info: Separate boot partition not detected # Info: snapper detected, using config 'root' # Found snapshot: 2020-09-17 11:30:13 | snapshots/4/snapshot | post | bc libx11 libxau libxcb libxcomposite libxdmcp libxext libxfixes libxi l... # Found snapshot: 2020-09-17 11:30:12 | snapshots/3/snapshot | pre | pacman -S screenfetch # Found snapshot: 2020-09-17 11:26:42 | snapshots/2/snapshot | post | snap-pac-grub # Found snapshot: 2020-09-17 11:26:42 | snapshots/1/snapshot | pre | pacman --color=always --upgrade /var/cache/pikaur/pkg/snap-pac-grub-1.0.... # Found 4 snapshot(s) ###### - Grub-btrfs: Snapshot detection ended - ###### done
Anhand der Ausgabe bei der Installation, kann in Erfahrung gebracht werden das zwei Snapshots erstellt wurden:
- Snapshot:
3
- Vor der Installation vonscreenfetch
- Snapshot:
4
- Nach der Installation vonscreenfetch
Dies kann auch durch Abfrage mit nachfolgendem Befehl bestätigt werden:
[root@archlinux ~]# snapper list # | Type | Pre # | Date | User | Cleanup | Description | Userdata ---+--------+-------+----------------------------------+------+---------+-----------------------------------------------------------------------------+--------- 0 | single | | | root | | current | 1 | pre | | Thu 17 Sep 2020 11:26:42 AM CEST | root | number | pacman --color=always --upgrade /var/cache/pikaur/pkg/snap-pac-grub-1.0.... | 2 | post | 1 | Thu 17 Sep 2020 11:26:42 AM CEST | root | number | snap-pac-grub | 3 | pre | | Thu 17 Sep 2020 11:30:12 AM CEST | root | number | pacman -S screenfetch | 4 | post | 3 | Thu 17 Sep 2020 11:30:13 AM CEST | root | number | bc libx11 libxau libxcb libxcomposite libxdmcp libxext libxfixes libxi l... |
Eine Überprüfung, ob das Programm screenfetch
aufgrufen und ausgeführt werden kann, kann durch Aufruf von screenfetch
durchgeführt werden:
root@archlinux ~]# screenfetch -` .o+` root@archlinux `ooo/ OS: Arch Linux `+oooo: Kernel: x86_64 Linux 5.4.63-1-lts `+oooooo: Uptime: 2h 59m -+oooooo+: Packages: 186 `/:-:++oooo+: Shell: bash 5.0.18 `/++++/+++++++: Disk: 8.9G / 92G (10%) `/++++++++++++++: CPU: Intel Core (Skylake, IBRS) @ 2.304GHz `/+++ooooooooooooo/` GPU: Red Hat, Inc. Virtio GPU (rev 01) ./ooosssso++osssssso+` RAM: 250MiB / 983MiB .oossssso-````/ossssss+` -osssssso. :ssssssso. :osssssss/ osssso+++. /ossssssss/ +ssssooo/- `/ossssso+/:- -:/+osssso+- `+sso+:-` `.-/+oso: `++:. `-/+/ .` `/ [root@archlinux ~]#
Um jetzt die Installation von screenfetch
rückgängig machen zu können, kann nachfolgender Befehl nun angewendet werden:
[root@archlinux ~]# snapper -v undochange 3..4 create:0 modify:3 delete:4306 ...
Ein erneuter Aufruf von screenfetch
, sollte nun zu einer Fehlermeldung führen und anzeigen, das das Programm nicht gefunden werden kann und somit auch nicht installiert ist:
[root@archlinux ~]# screenfetch -bash: /usr/bin/screenfetch: No such file or directory
In einen snapshot starten (booten)
Alle möglichen Snapshots in die gestartet werden kann, sind in einem Untermenü beim Neustart in GRUB ersichtlich, wie nachfolgende Bildschirmkopien zeigen:
Druch Auswahl des GRUB-Menüpunktes Arch Linux snapshots, sollte in etwa ein Bildschirm wie nachfolgender zum Vorschein kommen:
Durch Auswahl des obersten Menüpunktes, sollte nun eine Anzeige wie nachfolgende erscheinen, in dem der zu startende (boot) Kernel ausgewählt werden kann:
Nach einem erfolgeichen Startvorgang (booten), kann das Programm screenfetch
wieder verwendet werden, wie nachfolgender Aufruf zeigt:
[root@archlinux ~]# screenfetch -` .o+` root@archlinux `ooo/ OS: Arch Linux `+oooo: Kernel: x86_64 Linux 5.4.63-1-lts `+oooooo: Uptime: 8m -+oooooo+: Packages: 186 `/:-:++oooo+: Shell: bash 5.0.18 `/++++/+++++++: Disk: 8.9G / 92G (10%) `/++++++++++++++: CPU: Intel Core (Skylake, IBRS) @ 2.304GHz `/+++ooooooooooooo/` GPU: Red Hat, Inc. Virtio GPU (rev 01) ./ooosssso++osssssso+` RAM: 186MiB / 983MiB .oossssso-````/ossssss+` -osssssso. :ssssssso. :osssssss/ osssso+++. /ossssssss/ +ssssooo/- `/ossssso+/:- -:/+osssso+- `+sso+:-` `.-/+oso: `++:. `-/+/ .` `/ [root@archlinux ~]#
ACHTUNG - Der gestartet Snapshot ist ein „read-only“ Snapshot !!!
Der Versuch in das Btrfs: Subvolume - /
(root) zu schreiben schlägt fehl, wie nachfolgendes Beispiel zeigt:
[root@archlinux ~]# touch /test.txt touch: cannot touch '/test.txt': Read-only file system
Damit wieder eine read-write Snapshot aus dem aktuell gestarteten Snapshot wird, sind nachfolgende Schritte erforderlich.
Einen read-write snapshot erzeugen
Mit nachfolgenden Befehlen und einem Neustart wird aus einem read-only Snapshot wieder ein read-write Snapshot.
Nachfolgender Befehl überprüft, welcher Snapshot aktuell gemountet ist (Hier die Nummer 4
):
[root@archlinux ~]# mount | grep /snapshots/ /dev/vda1 on / type btrfs (rw,relatime,space_cache=v2,subvolid=269,subvol=/snapshots/4/snapshot)
Um jetzt mit einen Rollback (zurücksetzen) auch auf einen beliebigen startbaren (boot) Snapshot gehen zu können, ist es erforderlich aus dem read-only Snapshot wieder einen read-write Snapshot zu erstellen, was mit nachfolgendem Befehl durchgeführt werden kann:
[root@archlinux ~]# snapper -a classic rollback 4 Ambit is classic. Creating read-only snapshot of current system. (Snapshot 5.) Creating read-write snapshot of snapshot 4. (Snapshot 6.) Setting default subvolume to snapshot 6.
Wichtig ist hier der Snapshot mit der Nummer 6
welcher einen startbereiten (boot) read-write Snapshot darstellt.
WICHTIG - Leider kann nur über das editieren beim Starten via GRUB dieser Snapshot gestartet (boot) werden !!!
[root@archlinux ~]# systemctl reboot
Nachfolgend ist wieder ein Neustart durchzuführen:
Durch Auswahl des GRUB-Menüpunktes Arch Linux snapshots, sollte in etwa ein Bildschirm wie nachfolgender zum Vorschein kommen:
Durch Auswahl des obersten Menüpunktes, sollte nun eine Anzeige wie nachfolgende erscheinen, in dem der zu startende (boot) Kernel ausgewählt werden kann:
WICHTIG - Jetzt ist die [e]-Taste zu drücken um den GRUB-Kernel-Bootmenü-Eintrag editieren zu können !!!
WICHTIG - Ersetzen der Snapshot-Nummer 4
durch die Snapshot_nummer 6
!!!
WICHTIG - Um die Änderungen wirksam werden zu lassen, ist die [F10]-Taste oder [Ctrl-x]|[Strg-x] zu betätigen !!!
Jetzt kann mit nachfolgendem Befehl überprüft werden, ob der Snapshot mit der Nummer 12
gestartet (boot) wurde:
[root@archlinux ~]# mount | grep /snapshots/ /dev/vda1 on / type btrfs (rw,relatime,space_cache=v2,subvolid=271,subvol=/snapshots/6/snapshot)
Und ob dieser auch ein read-write Snapshot ist, wie nachfolgender Befehl beweist:
[root@archlinux ~]# touch /test.txt
[root@archlinux ~]# ls -la /test.txt -rw-r--r-- 1 root root 0 Sep 10 17:21 /test.txt
WICHTIG - Damit zukünftig von diesem Snapshot - standardmässig gestartet wird, muss nachfolgender Befehl ausgeführt werden:
Hier wird der Bootloader - hier GRUB neu installiert:
[root@archlinux ~]# grub-install /dev/vda Installing for i386-pc platform. Installation finished. No error reported.
Anschließend muss noch der Bootloader - hier GRUB neu konfiguriert werden:
[root@archlinux ~]# grub-mkconfig -o /boot/grub/grub.cfg Generating grub configuration file ... Found linux image: /boot/vmlinuz-linux-lts Found initrd image: /boot/initramfs-linux-lts.img Found fallback initrd image(s) in /boot: initramfs-linux-lts-fallback.img ###### - Grub-btrfs: Snapshot detection started - ###### # Info: Separate boot partition not detected # Info: snapper detected, using config 'root' # Found snapshot: 2020-09-17 12:03:14 | snapshots/6/snapshot | single | writable copy of #4 # Found snapshot: 2020-09-17 12:03:14 | snapshots/5/snapshot | single | rollback backup # Found snapshot: 2020-09-17 11:30:13 | snapshots/4/snapshot | post | bc libx11 libxau libxcb libxcomposite libxdmcp libxext libxfixes libxi l... # Found snapshot: 2020-09-17 11:30:12 | snapshots/3/snapshot | pre | pacman -S screenfetch # Found snapshot: 2020-09-17 11:26:42 | snapshots/2/snapshot | post | snap-pac-grub # Found snapshot: 2020-09-17 11:26:42 | snapshots/1/snapshot | pre | pacman --color=always --upgrade /var/cache/pikaur/pkg/snap-pac-grub-1.0.... # Found 6 snapshot(s) ###### - Grub-btrfs: Snapshot detection ended - ###### done
[root@archlinux ~]# systemctl reboot
Nach einem erneuten Neustart sollte jetzt der Snapshot mit der Nummer 6
der Snapshot sein, welcher auch über den Standardeintrag gestartet wird, was nachfolgende Bildschirmkopie zeigt:
Eine Überprüfung, welcher Snapshot gestartet (boot) ist, kann nochmals mit nachfolgendem Befehl durchgeführt werden:
[root@archlinux ~]# mount | grep /snapshots/ /dev/vda1 on / type btrfs (rw,relatime,space_cache=v2,subvolid=271,subvol=/snapshots/6/snapshot)
Einen snapshot zu root zurücksetzen
Nachdem in einen read-write Snapshot gestartet (boot) wurde, soll dieser wieder zum root
gemacht werden, damit ggf. später auch der aktuelle Snapshot von dem gerade gestartet (boot) wurde auch gelöscht werden kann.
Dazu soll zuerst der „alte“ Stand von root
mit nachfolgendem Befehl gelöscht werden:
[root@archlinux ~]# rm /btrfs/root -rf
Anschließend sol leine read-write - Snapshot vom aktuellen Snapshot von dem gerade gebootet wurde via snapper kopiert werden, was mit nachfolgendem Befehl durchgeführt werden soll:
[root@archlinux ~]# btrfs subvol snapshot /.snapshots/6/snapshot /btrfs Create a snapshot of '/.snapshots/6/snapshot' in '/btrfs/snapshot'
Der so erzeugte read-write Snapshot in nachfolgendem Verzeichnis mit nachfolgendem Namen
/btrfs/snapshot
muss nun noch umbenannt werden, was mit nachfolgendem Befehl durchgeführt werden soll:
[root@archlinux ~]# mv /btrfs/snapshot /btrfs/root
Abschließend muss nun die GRUB-Konfigurationsdatei in nachfolgendem Verzeichnis mit nachfolgendem Namen
/boot/grub/grub.cfg
noch entsprechend angepasst werden.
[root@archlinux ~]# vim /boot/grub/grub.cfg
WICHTIG - font=„/snapshots/6/snapshot/usr/share/grub/unicode.pf2“
muss gegen font=„/usr/share/grub/unicode.pf2“
ausgetauscht werden.
HINWEIS - Alle Einträge mit snapshots/6/snapshot
müssen gegen /root
ausgetauscht werden!
Nachfolgend eine Liste der relevanten Stellen (nur relevanter Ausschnitt):
font="/usr/share/grub/unicode.pf2"
Eine Suche im Editor nach fonts=„
findet die Stelle am schnellsten.
linux /root/boot/vmlinuz-linux-lts root=UUID=7d67e68c-88c6-486f-b79a-506ca7aa9860 rw rootflags=subvol=root loglevel=3 net.ifnames=0
menuentry 'Arch Linux
' - Wichtig ist hier die Angabe subvol=
, die wie oben gezeigt angepasst werden muss.
initrd /root/boot/initramfs-linux-lts.img
menuentry 'Arch Linux
' - initrd
muss ebenfalls ausgetauscht werden.
linux /root/boot/vmlinuz-linux-lts root=UUID=7d67e68c-88c6-486f-b79a-506ca7aa9860 rw rootflags=subvol=root loglevel=3 net.ifnames=0
submenu 'Advanced options for Arch Linux
' - Wichtig ist hier die Angabe subvol=
, die wie oben gezeigt angepasst werden muss.
initrd /root/boot/initramfs-linux-lts.img
submenu 'Advanced options for Arch Linux
' - initrd
muss ebenfalls ausgetauscht werden.
linux /root/boot/vmlinuz-linux-lts root=UUID=7d67e68c-88c6-486f-b79a-506ca7aa9860 rw rootflags=subvol=root loglevel=3 net.ifnames=0
menuentry 'Arch Linux, with Linux linux-lts (fallback initramfs)
' - Wichtig ist hier die Angabe subvol=
, die wie oben gezeigt angepasst werden muss.
initrd /root/boot/initramfs-linux-lts-fallback.img
menuentry 'Arch Linux, with Linux linux-lts (fallback initramfs)
' - initrd
muss ebenfalls ausgetauscht werden.
WICHTIG - Damit zukünftig von diesem Snapshot - standardmässig gestartet wird, muss nachfolgender Befehl ausgeführt werden:
Hier wird der Bootloader - hier GRUB neu installiert:
[root@archlinux ~]# grub-install /dev/vda Installing for i386-pc platform. Installation finished. No error reported.
[root@archlinux ~]# systemctl reboot
Nach einem Neustart, sollte nun wieder root
gestartet (boot) werden, was nachfolgende Bildschirmkopie zeigt:
Eine Überprüfung, ob root
gestartet (boot) wurde, kann mit nachfolgendem Befehl durchgeführt werden:
[root@archlinux ~]# mount | grep /root /dev/vda1 on / type btrfs (rw,relatime,space_cache=v2,subvolid=272,subvol=/root) [root@archlinux ~]#
Anschließend soll das Subvolume - /
wieder der default werden, was mit nachfolgendem Befehl durchgeführt werden kann:
[root@archlinux ~]# btrfs subvolume set-default 0 /
Zur Überprüfung kann nachfolgende Befehl verwendet werden:
[root@archlinux ~]# btrfs subvolume get-default / ID 272 gen 133 top level 5 path root
Nun können auch beispielsweise alle Snapshots mit nachfolgendem Befehl gelöscht werden:
[root@archlinux ~]# snapper delete 6 [root@archlinux ~]# snapper delete 5 [root@archlinux ~]# snapper delete 4 [root@archlinux ~]# snapper delete 3 [root@archlinux ~]# snapper delete 1
Abschließend würde dann die Anzeige aller Snapshots wie folgt aussehen:
[root@archlinux ~]# snapper list # | Type | Pre # | Date | User | Cleanup | Description | Userdata ---+--------+-------+------+------+---------+-------------+--------- 0 | single | | | root | | current |
Auch die Anzeige des via BtrfS verwendeten Speicherplatzes zeigt nur die für root
verwendeten daten an:
[root@archlinux ~]# df -Th | grep /dev/vda /dev/vda1 btrfs 19G 1.8G 17G 10% / /dev/vda1 btrfs 19G 1.8G 17G 10% /btrfs /dev/vda1 btrfs 19G 1.8G 17G 10% /.snapshots /dev/vda1 btrfs 19G 1.8G 17G 10% /tmp /dev/vda1 btrfs 19G 1.8G 17G 10% /var/log
bzw.
[root@archlinux ~]# btrfs filesystem df / Data, single: total=2.01GiB, used=1.67GiB System, DUP: total=8.00MiB, used=16.00KiB Metadata, DUP: total=256.00MiB, used=54.36MiB GlobalReserve, single: total=4.94MiB, used=0.00B