20.8 Systemreparatur
Eine vorhandene Systemkomplettsicherung ist ungemein beruhigend. Dennoch kann das Rückspielen des Backups nur den Systemzustand zum Zeitpunkt der Datensicherung wieder herstellen. Daten, die in der Zwischenzeit auf dem Computer gelandet sind, verliert man unwillkürlich.
Daher ist es immer sinnvoll, vor einer eventuellen Rücksicherung zu versuchen, ein »zerschossenes« System zu reanimieren. Der folgende Abschnitt gibt hierzu einige Tipps.
20.8.1 GRUB installieren/reparieren
Beginnen wir mit dem Notwendigsten: dem Bootloader, der dafür sorgt, dass das Betriebssystem Ihrer Wahl überhaupt startet. Im Fall von Ubuntu heißt der Bootloader GRUB. In Abschnitt 20.1.4 haben Sie bereits gelernt, wie man mit Hilfe des Werkzeugs dd den Bootsektor einer Festplatte sichert. Da man aber in 99\% aller Fälle gerade keine Sicherung des aktuellen Bootsektors greifbar hat, soll an dieser Stelle ein kleiner Exkurs erfolgen, wie man einen Bootsektor wiederbelebt, bei dem der Bootcode beschädigt wurde.
Eine Neuinstallation von GRUB erreichen Sie folgendermaßen:
user$ sudo grub-install /dev/hda
Das Kommando grub-install greift dabei auf die GRUB-Konfigurationsdatei namens menu.lst in
/boot/grub der entsprechenden Partition zurück. Diese Datei kann beispielsweise wie folgt aussehen:
title Linux root (hd1,2) kernel /boot/vmlinuz root=/dev/hdc3 initrd /boot/initrd
Beachten Sie, dass GRUB bei der Angabe der Root-Partition von null an zu zählen beginnt. Das Device /dev/hda1 wäre dann z. B. (hd0,0) usw. Meist kann keine eindeutige Aussage getroffen werden, welche Bezeichnung eine bootbare Partition unter GRUB hat. Dann schlägt die große Stunde der GRUB-Kommandozeile: Begeben Sie sich bei einem angezeigten Fehler während des Bootens mittels (E) in den Editiermodus oder geben Sie die obigen Befehle in der GRUB-Shell nach dem Prompt > ein. Nun können verschiedene Root-Partitionen getestet werden, bis der Bootvorgang schließlich ordnungsgemäß startet.
20.8.2 Passwörter zurücksetzen
Haben Sie sich schon einmal gefragt, warum jeder Administrator einer größeren Ansammlung von Computern peinlich darauf bedacht ist, das Disketten- und CD-ROM-Laufwerk von der Liste der bootbaren Medien im BIOS zu entfernen? Nun, jeder halbwegs computerkundige Mensch könnte durch Booten einer Live-CD die Kontrolle über die entsprechenden Rechner erhalten, indem er einfach die Administrator- oder Benutzerkennwörter ändert.
Gehen wir im Folgenden einmal davon aus, dass Sie nicht vorhaben, irgendeinen armen Administrator ins Unglück zu stürzen, sondern einfach das Administrator- oder Benutzerkennwort in der Linux-Installation auf dem heimischen Rechner vergessen oder verlegt haben. Dann brauchen Sie nur eine Live-CD und gehen wie folgt vor:
- Booten Sie zunächst das Livesystem und starten Sie eine Konsole. Mounten Sie die Partition les- und schreibbar, auf der sich Ihre Linux-Installation befindet:
user$ sudo mount -o rw /dev/hda9 /mnt/hda9
- Wechseln Sie wie oben beschrieben mit dem Befehl chroot in die externe Linux-Installation:
user$ chroot /mnt/hda9
- Sie sind nun als Root in der Installation eingeloggt. Möchten Sie das root-Passwort ändern, so genügt die Eingabe des Befehls passwd in der Shell:
user$ passwd Enter new UNIX password: Retype new UNIX password: passwd: password updated successfully
Soll hingegen nur das Passwort eines »normalen« Benutzers geändert werden, so ist dem Kommando passwd noch der Name des entsprechenden Benutzers als Argument zu übergeben, beispielsweise: passwd marcus. Das klingt erschreckend einfach, ist es auch. Aber keine Angst, das sieht bei Windows nicht anders aus …
20.8.3 Beschädigte Dateisysteme reparieren
Das kommt in den besten Familien vor: Ein Mitbewohner steckt den Staubsauger in die Steckdose, die Sicherung fliegt raus und das gerade hochgefahrene Linux-System wird in einer Nanosekunde von 100 auf null gefahren. Linux-Veteranen der ersten Stunde wissen, was in früheren Zeiten damit verbunden war: eine mühsame Überprüfung des Dateisystems, die einige Zeit in Anspruch nahm.
Grund für die Verhaltensweise ist der linux-typische Umgang mit Schreib-/ Lesevorgängen im System: Das System puffert diese im RAM und führt den Befehl dann aus, wenn wenig zu tun ist. Hier wirkt sich ein Crash natürlich tödlich aus: Stürzt das System ab, wenn noch nicht alle Schreib-/ Lesevorgänge abgeschlossen sind, so kann es unweigerlich zu Datenverlusten kommen. Nach dem erneuten Hochfahren des Computers muss dann in jedem Fall das Dateisystem überprüft werden, was je nach Größe der Partition recht langwierig sein kann.
Heute verwendet man unter Linux so genannte Journaling-Dateisysteme. Diese führen genau Protokoll über alle anstehenden und abgeschlossenen Dateioperationen, so dass ein Dateisystemcheck relativ schnell erfolgen kann.
Für den Zweck der Überprüfung dieser Dateisysteme bieten sich mehrere Tools an. Die Kommandos beginnen allesamt mit fsck. Bei Ubuntu werden eine Vielzahl von Dateisystemen unterstützt:
user$ fsck <TabulatorgpTastatur><TabulatorgpTastatur> fsck fsck.ext3 fsck.msdos fsck.reiserfs fsck.cramfs fsck.jfs fsck.nfs fsck.vfat fsck.ext2 fsck.minix fsck.reiser4 fsck.xfs
Bevor Sie aber eines Ihrer installierten Systeme auf Herz und Nieren prüfen, beachten Sie folgenden wichtigen Hinweis: Ein Dateisystem, das überprüft werden soll, muss ausgebunden sein! Anderenfalls bestehen gute Chancen, durch die Reparatur den Zustand des Systems zu »verschlimmbessern«. Ein ext2- bzw. ext3-Dateisystem wird folgendermaßen überprüft: Geben Sie direkt auf einer Kommandozeile den Befehl
user$ sudo fsck /dev/hda9 fsck 1.35 e2fsck 1.35 /dev/hda9: i.O., 154647/738432 Dateien
ein. Wer zu dieser langwierigen Aktion einen Fortschrittsbalken sehen möchte, verwendet den Parameter -C. Sollte die Routine nun auf Fehler stoßen, so wird versucht, diese zu reparieren. Bestätigen Sie in diesem Fall sämtliche Nachfragen mit (Y). Zur Überprüfung des Reiser-Dateisystems verwendet man den folgenden Befehl:
user$ sudo reiserfsck --check /dev/hda10
Weitere Parameter und deren Wirkungsweise entnehmen Sie bitte den manpages von fsck und reiserfsck.