In dieser Ausgabe der OpenSuse-Tipps lernen Sie einige Kniffe kennen, mit denen Sie zickende Systeme und Anwendungen wieder flottmachen.
Zeigt der Rechner beim Starten statt des gewohnten Grub-Menüs nur noch einen blinkenden Cursor oder eine Fehlermeldung, dann ist zum Glück meist nicht die gesamte Linux-Installation verschwunden, sondern lediglich der Bootloader beschädigt.
Indem Sie den Bootloader reparieren, erhalten Sie wieder Zugriff auf den Rest des Systems, samt aller Einstellungen und Daten. Das erfordert glücklicherweise kein vertieftes technisches Know-how. Um die Eingabe einer Reihe von Konsolenbefehlen kommen Sie allerdings nicht herum.
Starthilfe
Um dem System von außen Starthilfe zu geben, booten Sie von einem OpenSuse-Installationsmedium. Am einfachsten verwenden Sie dazu eine OpenSuse-DVD; Hilfestellung für das Präparieren eines Installations-USB-Sticks gibt ein Artikel in der Support-Datenbank von OpenSuse [1]. Nach dem Start des Installers wählen Sie nicht den Menüpunkt Installation, sondern das Rescue System, das Sie nach Auswahl des Eintrags More in der zweiten Menüebene finden.
Das Rettungssystem fragt zunächst nach der Sprache und richtet das passende Tastaturlayout ein. Nach dem Durchscrollen der Startmeldungen der Systemdienste, die der Bootsplash im normalen OpenSuse-System verbirgt, erscheint in der letzten Zeile der Prompt rescue login:. Geben Sie hier root ein; ein Passwort ist in der Rettungsumgebung nicht erforderlich. Damit haben Sie das OpenSuse-Rettungssystem gestartet, eine Art Live-DVD, allerdings ohne grafische Oberfläche (Abbildung 1).
Traditionell startete auf PCs früher vor dem eigentlichen Betriebssystem das sogenannte BIOS. Ab 2012 ersetzte UEFI das BIOS, doch praktisch alle UEFI-Systeme bringen bis heute einen BIOS-Kompatibilitätsmodus mit. Bei vorinstalliert erworbenen Windows-Systemen ist dieser oft aktiv, denn dann startet Windows sofort ohne weitere Nachfrage. Allerdings überschreibt eine Windows-Installation in diesem BIOS-Modus den Linux-Bootloader – der häufigste Grund, warum Sie diesen überhaupt wiederherstellen müssen.
Was im Detail hinter BIOS oder UEFI steckt, braucht Sie nicht zu kümmern. Sie müssen lediglich herausfinden, ob Ihr Computer im BIOS-(Kompatibilitäts-)Modus oder via UEFI bootet. Starten Sie dazu im Rettungssystem das Konsolenprogramm Cfdisk (Abbildung 1). UEFI-Systeme erkennen Sie an einer Partition namens EFI System. Fehlt sie, dann liegt ein BIOS-System vor.

Abbildung 1: Mithilfe des Konsolenwerkzeugs Cfdisk machen Sie die OpenSuse-Systempartition (hier 197,5 GByte) und gegebenenfalls die kleine EFI-Bootpartition (hier 500 MByte) leicht ausfindig.
Merken Sie sich die unter Device angegebenen Gerätenamen der EFI-System-Partition (in Abbildung 1 ganz oben in der Liste) und der ersten, mehrere GBytes großen Partition des Typs Linux filesystem, also der Systempartition der OpenSuse-Installation.
Bewegen Sie dann mit [Pfeil-rechts]+ oder [Pfeil-links] die Hervorhebung in der unteren Menüzeile zum Punkt Quit, und verlassen Sie Cfdisk durch einen Druck auf die Eingabetaste. Sie wollten die Partitionen ja nur prüfen, nicht verändern.
Aufsperren
Als ersten Schritt müssen Sie die nun ermittelte Systempartition dem Live-System zugänglich machen, sie also einhängen (“mounten”). Für das Beispiel aus Abbildung 1 erledigt das der Befehl mount /dev/sda2 /mnt; den Gerätenamen sda2 passen Sie für Ihr System entsprechend der mit Cfdisk ermittelten Bezeichnung an. Nun ist das nicht mehr startende System im Verzeichnis /mnt sichtbar, was Sie mit ls /mnt prüfen können: Der Ls-Befehl sollte Ordner wie /usr, /home, /var oder /dev anzeigen.
Bei UEFI-System liegen Teile des Bootloaders Grub in der Partition mit der Bezeichnung EFI System. Wenn Sie in Cfdisk eine solche Partition vorgefunden haben, dann hängen Sie sie nun ein. Im Beispiel aus Abbildung 1 lautet der passende Befehl mount /dev/sda1 /mnt/boot/efi, wobei Sie sda1 auf Ihrem System wieder gemäß der Device-Zeichenfolge aus Cfdisk anpassen.
Um Grub erneut zu installieren, wenden Sie einen Root Jail genannten Trick an. Dabei täuscht Linux den von einer Konsole gestarteten Programmen vor, beim Verzeichnis /mnt handle es sich um das Wurzelverzeichnis (Root, /) des Dateisystems. Sie sperren die Programme also quasi im vorgetäuschten Root ein.
Der Linux-Kernel kommuniziert über virtuelle Verzeichnisse wie /dev oder /sys mit den laufenden Programmen. Bevor Sie das angesprochene Root Jail einrichten, müssen wir diese Verzeichnisse daher unter /mnt einhängen. Geben Sie dazu auf der Konsole nacheinander die Befehle aus Listing 1 ein. Der Parameter -o bind überblendet die Verzeichnisse unter /mnt mit deren Entsprechungen aus dem Root des Rettungssystems.
Listing 1
# mount -o bind /dev /mnt/dev # mount -o bind /run /mnt/run # mount -o bind /sys /mnt/sys # mount -o bind /proc /mnt/proc
Nun wechseln Sie mit chroot /mnt in die Root-Jail-Umgebung (Abbildung 2). Dort können Sie an der Eingabeaufforderung alle im havarierten System installierten Konsolenprogramme starten. Zum Reparieren des Bootloaders genügt der Aufruf grub2-install: Sofern alle Konfigurationsdateien intakt sind, installiert er den Bootloader wieder genauso wie vor der Beschädigung. Dann verlassen Sie das Root Jail mit exit und starten den Rechner mit reboot neu.

Abbildung 2: Als subtiler Hinweis, dass das Einrichten der Root-Jail-Umgebung nach den vorbereitenden Mount-Befehlen geklappt hat, erscheint die Eingabeaufforderung in Rot.
Zurücksetzen
Bereitet nicht das ganze System Probleme, sondern nur eine einzelne Anwendung, bleibt immer ein simpler letzter Ausweg: Nach Löschen der zugehörigen Konfigurationsdateien startet das Programm wieder in der Ausgangskonfiguration. Diese Holzhammermethode hilft auch dann, wenn es Ihnen nicht mehr gelingt, eine unerwünschte Einstellung rückgängig zu machen. Ein Programm zu deinstallieren und neu zu installieren löst unter Linux dagegen keine Probleme: Die Konfigurationsdateien verbleiben dabei unverändert im Home.
Allerdings ist es oft schwer, die Konfigurationsdaten zu finden: Früher legten die Programme sie in einem Ordner ab, dessen Name mit einem Punkt begann. Unter Linux kennzeichnet der führende Punkt im Namen versteckte Dateien und Verzeichnisse, die weder ein Dateimanager noch der Ls-Befehl auf der Konsole ohne explizite Aufforderung anzeigen. Das ändert sich erst, wenn Sie im KDE- oder Gnome-Dateimanager [Strg]+[H] (für “hidden”, versteckt) drücken (Abbildung 3). Auf der Konsole zeigt ls -a solche Dateien und Verzeichnisse an.

Abbildung 3: Die benutzerspezifischen Einstellungen von Desktop-Programmen liegen entweder in versteckten Ordnern direkt im Home oder unterhalb der ebenfalls versteckten Verzeichnisse .config/ und .local/.
Laut Konvention legen Anwendungen ihre Konfigurationsdaten im versteckten Verzeichnis /home/Benutzer/.config ab, andere benutzerspezifische Daten landen dagegen unter /home/Benutzer/.local/share. Allerdings können Sie nicht wissen, ob das fragliche Programm zu den inzwischen wenigen gehört, die ihre Daten noch direkt im Home ablegen. Zudem ist die Trennung zwischen Benutzerdaten und Konfiguration nicht immer evident. Daher müssen Sie an drei Stellen nach einem Ordner oder einer Datei suchen, die Sie namentlich zuordnen können: in .config/, .local/share/ und direkt im Home.
Wenn Sie gleich fündig werden, umso besser: Benennen Sie den Ordner oder die Datei um, statt sie zu löschen. Sie können dann später wieder zu der für das Programm jetzt nicht mehr zugänglichen Konfiguration zurückkehren. Linux-Programme haben kein Problem damit, beim Start keine Konfiguration vorzufinden: Nach der Erstinstallation fehlt eine solche grundsätzlich.
Vexierspiel
Manchmal gelingt es jedoch nicht oder erst nach langem Suchen, die Konfigurationsdaten für ein Programm anhand des Ordner- oder Dateinamens auszumachen. Dann hilft ein simpler Trick: Schließen Sie alle Anwendungen, und starten Sie das Programm, dessen Konfiguration Sie zurücksetzen möchten. Verändern Sie eine beliebige Einstellung, und beenden Sie die Anwendung wieder. Sie hat nun ihre Konfigurationsdatei(en) neu geschrieben.
Diese lassen sich anhand des Änderungsdatums herausfiltern: find ~ -mmin -1 zeigt alle in der letzten Minute veränderten Dateien im Home. War in dieser Zeit kein anderes Programm aktiv als das zum Auffinden der Konfigurationsdateien gestartete, dann umfasst diese Liste neben den eigentlich gesuchten Konfigurationsdateien allenfalls noch Daten, die die Desktop-Umgebung in dieser Zeit abgelegt hat. Die gesuchten Konfigurationsdateien lassen sich jetzt dennoch leicht identifizieren (Abbildung 4).

Abbildung 4: Neben einigen Schreibaktivitäten der Desktop-Umgebung filtert find ~ --mmin -1 die gesuchten Konfigurationsdateien von LibreOffice heraus, die unmittelbar vor dem Befehlsaufruf verändert wurden.
Allerdings ist nicht garantiert, dass Find alle benutzerspezifischen Daten zutage fördert: Vielleicht hat das Programm beim Verändern der Einstellungen nur die Daten in .config/ neu geschrieben, obwohl es auch .local/share/ nutzt.
Tabula rasa
Möchten Sie zuverlässig reinen Tisch machen, hilft ein weiterer Trick: Legen Sie einen neuen Benutzer an, melden Sie sich am entsprechenden Konto an, und starten Sie das fragliche Programm. Dann brauchen Sie nur noch zu prüfen, welche Dateien im fast leeren Home des neuen Benutzers hinzugekommen sind. Die Entsprechungen löschen Sie dann in Ihrem eigentlichen Home-Verzeichnis.
Starten Sie dazu das YaST-Modul Benutzer- und Gruppenverwaltung in der Rubrik Sicherheit und Benutzer (Abbildung 5), klicken Sie im Reiter Benutzer auf hinzufügen, und tragen Sie einen Benutzernamen wie temp und ein Passwort ein. Nach einem Klick auf OK beenden Sie die aktuelle Desktop-Sitzung und melden sich mit dem eben erstellten Benutzernamen an.

Abbildung 5: Das YaST-Modul Benutzer- und Gruppenverwaltung bietet eine handliche GUI zum Anlegen und späteren Löschen temporärer Benutzerkonten.
Dann kopieren Sie als Root auf der Konsole das noch kleine Home dieses Benutzers (Listing 2, erste Zeile). Den Verzeichnisnamen temp/ müssen Sie anpassen, wenn Sie den neu angelegten Benutzer anders benannt haben. Starten Sie nun das betreffende Programm, arbeiten Sie am besten kurz damit, verändern Sie eine der Einstellungen, und beenden Sie es wieder. Rufen Sie dann auf der Konsole wieder als Root das Kommando aus der zweiten Zeile von Listing 2 auf.
Listing 2
# cp /home/temp cp /home/temp_vorher # diff -qr /home/temp_vorher/ /home/temp/ | grep "Nur in"
In Abbildung 6 wurde nach dem Duplizieren des Home-Verzeichnisses LibreOffice gestartet. KDE hat seit dem Kopiervorgang einige Dateien angelegt (emaildefaults, klipper, RecentDocuments). Die Daten im Verzeichnis .cache haben generell nichts mit Einstellungen zu tun. Daher bleibt in unserem Fall lediglich die Zeile Nur in /home/temp/.config: libreoffice übrig: LibreOffice hat also das Verzeichnis .config/libreoffice/ angelegt. Melden Sie sich wieder mit Ihrem gewöhnlichen Benutzernamen an und löschen dieses Verzeichnis in Ihrem Home, dann startet LibreOffice erneut mit den Standardeinstellungen.

Abbildung 6: Seit dem Duplizieren des Home-Verzeichnisses kamen einige versteckte Ordner hinzu. Es fällt aber dennoch leicht, libreoffice als die Konfiguration der Bürosuite auszumachen.
Eine für alles
Mit OpenSuse 15.1 hat der Installer sein Verhalten geändert: Ohne Benutzereingriff installiert er jetzt das komplette System inklusive Home-Verzeichnis in eine einzige, mit dem Dateisystem Btrfs [2] formatierte Partition. Die früher übliche gesonderte Home-Partition bildet ein Subvolume dieser großen, einheitlichen Partition.
Das erschwert eine Neuinstallation, ohne die Daten im Benutzerverzeichnis zu überschreiben. Der offensichtliche Vorteil: Die Home-Partition kann nicht mehr volllaufen, während in der Systempartition noch Speicher brachliegt. Ein weiteres Plus ist die Tatsache, dass sich nun das in den OpenSuse-Tipps bereits vorgestellte System-Snapshot-Tool Snapper [3] ohne Weiteres auch für die Home-Partition nutzen lässt.
Nach der Installation sind die zurückdrehbaren Schnappschüsse nur für das Systemverzeichnis aktiv: Dort löst jede Software-Installation oder Veränderung der Einstellungen in YaST automatisch einen Schnappschuss aus. Haben Sie jedoch wie vom Installer vorgeschlagen das Gesamtsystem in eine einzige Btrfs-Partition installiert, kostet es nur einen Kommandozeilenaufruf, die Schnappschüsse auch auf das Home-Verzeichnis und die darin abgelegten Einstellungen auszudehnen.
Der folgende Befehl legt eine gesonderte Snapper-Konfiguration für die Home-Verzeichnisse aller Anwender an, die in der Voreinstellung stündlich den Inhalt aller Benutzerverzeichnisse festhält:
# snapper -c home create-config /home
Sehen wir uns die grafische Oberfläche für Snapper an, das YaST-Modul Filesystem Snapshots. Wählen Sie im Ausklappmenü links oben die eben erstellte aktuelle Konfiguration namens home aus. Die Systemschnappschüsse der vom Installer automatisch angelegten Konfiguration root haben die OpenSuse-Tipps in LU 12/2018 erläutert [3], auch das englische OpenSuse-Wiki erklärt das Tool [4].
In Abbildung 7 sind drei Schnappschüsse zu sehen: ein vom System automatisch erzeugter stündlicher (ID 1, Typ Einzeln, Beschreibung timeline) sowie ein manuell erstelltes Paar Vorher & Nachher, das Veränderungen an der Konfiguration von LibreOffice festhalten soll. Über Letzteres lassen sich nicht nur die Änderungen bei Bedarf wieder rückgängig machen. Es erleichtert auch, herausfinden, wo LibreOffice seine Konfigurationsdateien ablegt.

Abbildung 7: Dank der nach der Installation noch anzulegenden Konfiguration home erfasst Snapper nun nicht mehr nur Veränderungen des Grundsystems, sondern auch des Home-Verzeichnisses.
Um ein solches Schnappschusspaar anzulegen, klicken Sie im YaST-Modul auf Erzeugen, geben eine Beschreibung ein, wählen die Option Vorher und klicken auf OK. Dann starten Sie LibreOffice (oder ein beliebiges anderes Programm), verändern dessen Einstellungen, und schließen es wieder. Im YaST-Modul Erzeugen Sie nochmals einen Schnappschuss mit demselben Namen, wählen diesmal aber die Option Nachher. Prüfen Sie, ob die Verknüpfungs-ID im Ausklappmenü darunter zum Vorher-Schnappschuss passt, und bestätigen Sie erneut mit OK.
Wenn Sie dieses Schnappschusspaar nun im Basisfenster des YaST-Moduls auswählen und auf Änderungen anzeigen klicken, erscheint ein ausklappbarer Verzeichnisbaum mit den zwischen Vorher und Nachher veränderten Dateien (Abbildung 8).

Abbildung 8: Ein Haken vor dem Verzeichnis libreoffice genügt, um mit dem YaST-Modul die zwischen dem ersten und zweiten Home-Schnappschuss vorgenommenen Konfigurationsänderungen rückgängig zu machen.
Zu LibreOffice passt lediglich der Pfad peter/.config/libreoffice/. Die Veränderungen unter peter/.local/share/ gehören zu KDE-Komponenten, die unter .cache/ sind für Programmkonfigurationen nicht von Belang. Wenn Sie das Kontrollkästchen vor dem Verzeichnis aktivieren und dann die Auswahl wiederherstellen, machen Sie die zwischen dem Vorher– und Nachher-Schnappschuss vorgenommenen Änderungen rückgängig.
Fazit
Falls nicht gerade wegen eines Hardware-Defekts sämtliche Daten verlorengehen, müssen Sie ein Linux-System so gut wie nie neu installieren. Ein nicht mehr funktionierender Bootloader lässt sich mithilfe eines Live-Systems im Handumdrehen reparieren. Das ist beinahe der einzige Fall einer systemweiten Störung, bei der das von Suse entwickelte Schnappschuss-Tool Snapper nicht weiterhelfen kann.
In der Ausgangskonfiguration erfasst Snapper nur die Systemeinstellungen im Verzeichnis /etc, lässt sich jedoch leicht auch auf die benutzerspezifische Konfiguration von Desktop-Programmen im Home ansetzen. Mit einfachen Tricks spüren Sie selbst gut versteckte Konfigurationsdateien auf, um als letzten Ausweg Einstellungen komplett zurückzusetzen. (jlu)
Infos
-
USB-Installationsmedium für OpenSuse: https://de.opensuse.org/SDB:Live_USB_Stick#Anleitung_f.C3.BCr_Linux
-
OpenSuse-Tipps: Peter Kreußel, “Backup per Fingerschnipp”, LU 12/2018, S. 72, https://www.linux-community.de/41915
-
Snapper im OpenSuse-Wiki: https://en.opensuse.org/Portal:Snapper





