Manjaro Linux und Transaktionale updates

  Sebastian Blei   Lesezeit: 10 Minuten  🗪 9 Kommentare

Automatisieren von Updates und einer Rollback Funktion.

manjaro linux und transaktionale updates

Immer öfter lesen wir über unveränderbare Systeme, Transaktionale Updates und Adaptable Linux Platform (ALP) wie z.b bei openSUSE MicroOS, Fedoras Silverblue und Kinoite. Da scheint Manjaro Linux auf den ersten Blick ein wenig angestaubt zu sein, doch weit gefehlt. Dass dem nicht so ist, zeige ich in diesem Artikel. Begleite mich auf dem Weg vom Mauerblümchen zum Phönix.

Automatische Updates beim Herunterfahren installieren

Zu Beginn wird mit pamac-manager (Add/Remove Software) das Herunterladen der Updates automatisiert. Dazu werden die pamac-manager/Einstellungen geöffnet und das automatische Herunterladen ausgewählt.

Damit die Updates nicht nur heruntergeladen werden, sondern auch installiert, wird eine systemd-Unit des Typen service konfiguriert. Starte ein Terminal und erstelle mit dem Editor deiner Wahl z. B. nano folgende Datei:

sudo nano /etc/systemd/system/autoupdate.service

Nun wird die Konfigurationsdatei mit folgendem Inhalt gefüllt:

[Unit]
Description=Automatisches installieren der Updates beim herunterladen

[Service]
ExecStop=/usr/bin/pacman -Syuq --noconfirm
RemainAfterExit=yes
TimeoutStopSec=7200
KillMode=process
KillSignal=SIGINT

[Install]
WantedBy=multi-user.target

Mit RemainAfterExit=yes wird pacman als aktiv deklariert, auch wenn der Prozess beendet ist. Damit wird sichergestellt, dass der Befehl von ExecStop bei jedem herunterfahren ausgeführt wird.

Der Wert TimeoutStopSec=7200 entspricht in Sekunden der maximalen Zeit des Updates, bevor der Prozess abgebrochen wird. In diesem Fall dauert es 2 Stunden, bevor der Prozess beendet wird. Auf meinem System dauern größere Updates ca. 5 Minuten (mit M2 SSD-Festplatte und Glasfaser). Wir haben hier also einen großzügigen Puffer, auch für langsamere Internetverbindungen und Computer, eingeplant. Die beiden nachfolgenden Optionen sorgen für das Beenden von pacman.

WantedBy=multi-user.target sorgt dafür, dass der Dienst im Systemstatus Multi-user.target ausgeführt wird, indem noch alle benötigten Schnittstellen aktiv sind.

Der Editor speichert und wird beendet mit (Strg + o, Strg + x)

Damit die neue Unit auch läuft, müssen die Konfigurationen neu geladen und die neu erstellte Unit aktiviert werden. Dazu folgende Befehle im Terminal starten:

sudo systemctl daemon-reload
sudo systemctl start autoupdate
sudo systemctl enable autoupdate

Jetzt sollten alle Updates (außer vom AUR und flatpak) beim Herunterfahren installiert werden.

Zum Überprüfen, ob der Dienst auch ausgeführt wird, gebe folgenden Befehl ein:

sudo systemctl status autoupdate

Die Ausgabe sollte wie folgt aussehen.

Automatisches Erstellen von Schnappschüssen

Für die Einrichtung der Schnappschüsse ist eine Installation mit dem btrfs Dateisystem nötig, welches am besten schon bei der Installation ausgewählt wird.

Die Schnappschüsse werden mit timeshift erstellt, welches mit dem autosnap und grub-btrfs Paketen ergänzt wird. Die Installation erfolgt mit folgendem Befehl:

sudo pacman -S timeshift timeshift-autosnap-manjaro grub-btrfs inotify-tools

Nun wird die Konfiguration von grub-btrfsd geändert. Damit beim Erstellen eines Schnappschusses mit timeshift auch ein Bootmenü-Einrag erstellt wird, muss dazu die Servicedefinition grub-btrfsd.service angepasst werfen. Dazu müssen die folgenden Befehle im Terminal ausgeführt werden:

sudo mkdir /etc/systemd/system/grub-btrfsd.service.d/
sudo nano /etc/systemd/system/grub-btrfsd.service.d/override.conf

[Service]
ExecStart=
ExecStart=/usr/bin/grub-btrfsd --syslog --timeshift-auto

Der Dienst wird mit folgenden Befehlen gestartet und aktiviert:

sudo systemctl daemon-reload
sudo systemctl start grub-btrfsd
sudo systemctl enable grub-btrfsd

Um zu verhindern, dass update-grub bei einem automatischen Schnappschuss zweimal ausgeführt wird, empfehle ich, die folgende Zeile in der Konfigurationsdatei timeshift-autosnap.conf zu ändern:

sudo nano /etc/timeshift-autosnap.conf

Ändere die folgende Zeile:

updateGrub=true

in

updateGrub=false 

Es werden nur 3 automatisch erstellte Schnappschüsse behalten. Möchte man die Anzahl erhöhen, braucht man nur die Zahl in der folgenden Zeile, wie gewünscht ändern:

maxSnapshots=3

Damit die Schnappschüsse auch beim Booten zur Auswahl stehen, muss das grub Menü angezeigt werden. Dies geschieht durch Anpassung der Konfigurationsdatei /etc/default/grub:

sudo nano /etc/default/grub

Ändere die folgende Zeile:

GRUB_TIMEOUT_STYLE=hidden

in

GRUB_TIMEOUT_STYLE=menu

Um die Einstellungen in grub zu übernehmen, wird folgender Befehl ausgeführt:

sudo update-grub

Die autosnap Funktion kann auch, wie im Folgenden beschrieben, temporär ausgesetzt werden.

sudo SKIP_AUTOSNAP= pacman -Syu

Ein neuer Schnappschuss wird nur bei Updates mit pacman erstellt und nicht bei jeder Software Installation. Es besteht aber die Möglichkeit, mit timeshift einen täglichen Schnappschuss, sowie automatische oder manuelle Schnappschüsse zu erstellen, um die Wiederherstellungsmöglichkeit zu erhöhen.

Wiederherstellen eines Schnappschusses

Um zu zeigen, wie die Wiederherstellung des Systems funktioniert. Installiere ich zum Testen gimp und setze danach das System wieder auf den letzten Schnappschuss zurück.

Nach der Installation starte ich das System neu und wähle im Bootmenü den passenden Schnappschuss aus, mit dem ich das System starten möchte. Wähle im grub Menü Manjaro Linux Snapshots aus.

Danach werden alle Schnappschüsse nach Erstellungsdatum aufgelistet. Suche hier das passende Datum aus, welches wieder hergestellt werden soll.


Zum Schluss wird noch der passende Kernel ausgewählt und der Schnappschuss wird gestartet.


Nach dem Start von gnome wird direkt das root Passwort abgefragt und timeshift automatisch gestartet. Eine Benachrichtigung macht dich darauf aufmerksam, dass es sich hier um ein Schnappschuss handelt und fordert dich auf eine Wiederherstellung zu starten.

Ich wähle den letzten Schnappschuss aus und drücke auf wiederherstellen.

Nach der Wiederherstellung erhältst du den Hinweis, dass nach einem Neustart das System wieder auf dem alten Stand ist. Auch diese Änderung kann bei Bedarf wieder rückgängig gemacht werden. Schließe das Fenster und starte das System ganz normal neu.

Und wie du siehst, ist nach einem Neustart gimp nicht mehr installiert.

Nun ist Manjaro ähnlich funktional wie die oben genannten Platzhirsche und steht diesen in puncto automatische Updates und Rollback in nichts nach.

Quellen:
etsy und ich selber

Tags

Manjaro, btrfs, Timeshift, Snapshot

Andreas Rohr
Geschrieben von Andreas Rohr am 31. März 2023 um 09:35

Sehr interessanter Artikel. Ich frage mich ob, das mit den automatischen Updates auch via Synaptic unter Ubuntu realisierbar ist?

Bassi
Geschrieben von Bassi am 31. März 2023 um 14:34

Sollte auch unter Ubuntu funktionieren anstelle von "pacman -Syuq --noconfirm" wird "apt update -y" benutzt.

Für das Rollback musst du die timeshift-autosnap-apt und grub-btrfs von github selber kompilieren.

Nico
Geschrieben von Nico am 31. März 2023 um 11:15

Fehlt nur noch die readonly-Rootpartition.

noe
Geschrieben von noe am 31. März 2023 um 12:50

Naja. Sorry wenn ich da widerspreche.

Aber das macht Leap jetzt schon so.

Das hat aber nichts mit ALP, immutable und somit Microos, alp, silverligth oder kinotite zu tun. Zum Glück nicht!

Denn Manjaro ist im engeren Kreis welche Distru demnächst openSUSE bei mir ersetzen wird. Genau aus diesem Immutable, Micro, ALP-Zeugs.

BuffaloBill
Geschrieben von BuffaloBill am 31. März 2023 um 13:16

Klingt nach einem ähnlichen Setup, wie man bei Opensuse Tumbledweed erhält, nur mit Thimeshift anstelle von Snapper. Eine gute Anleitung, aber im Prinzip.... ganz streng genommen - nicht unveränderbar.

noe
Geschrieben von noe am 31. März 2023 um 13:20

Warum werden hier Mails einfach gelöscht? Das dann auch noch ohne Hinweis und Begründung? Nur weil ich dem Artikel widersprochen habe?

Der Text lautete ungefähr:

Dem muss ich leider widersprechen. Das tut Leap schon ne ganze Weile.

Und hat nichts mit immutable, transactional und ALP, MicroOS, Silverligtht und Kinotit zu tun.

Zum Glück nicht!

Denn Manjaro ist im engeren Kreise der Distris, die openSUSE bei mir aus genau diesem Grund ersetzen soll.

noe
Geschrieben von noe am 31. März 2023 um 13:21

Dem muss ich leider widersprechen. Das tut Leap schon ne ganze Weile.

Und hat nichts mit immutable, transactional und ALP, MicroOS, Silverligtht und Kinotit zu tun.

Zum Glück nicht!

Denn Manjaro ist im engeren Kreise der Distris, die openSUSE bei mir aus genau diesem Grund ersetzen soll.

samesdat
Geschrieben von samesdat am 31. März 2023 um 19:57

Danke, interessant. Ich benutze Garuda, wo btrfs und snapper schon vorinstalliert sind. Damit sollte sich der Rest einfach erledigen lassen, und der Rechner bei meiner Mutter wäre "wartungsfrei" :-)

Mika
Geschrieben von Mika am 1. April 2023 um 11:06

Super Beitrag, danke für die Infos