Copyright © 1995 by O'Reilly/International Thomson Verlag

Bitte denken Sie daran: Sie dürfen zwar die Online-Version ausdrucken, aber diesen Druck nicht fotokopieren oder verkaufen.

Wünschen Sie mehr Informationen zu der gedruckten Version des Buches "Linux - Wegweiser zur Installation & Konfiguration", dann klicken Sie hier.


Kapitel 4

Die Rettung in der Not

Es ist gar nicht schwierig, als root unversehens einen Fehler zu machen, der auf Ihrem System zu einem ernsten Problem werden kann -- etwa in der Form, daß Sie nicht mehr einloggen können oder daß wichtige Dateien verlorengehen. Dies gilt insbesondere für Neulinge auf dem Gebiet der Systemverwaltung, die gerade anfangen, ihr System zu erkunden. Fast alle neuen Systemverwalter lernen ihre Lektionen »auf die harte Tour«, indem sie gezwungen sind, sich aus einer wirklichen Notlage zu befreien. In diesem Abschnitt geben wir Ihnen einige Tips dazu, was Sie tun können, wenn das Unvermeidliche eintritt.

Sie sollten sich immer der Möglichkeiten bewußt sein, mit vorbeugenden Maßnahmen die Auswirkungen solcher Notlagen zu mindern. Erstellen Sie z.B. Backups aller wichtigen Systemdateien -- wenn nicht sogar des ganzen Systems. Falls Sie eine Distribution auf CD-ROM benutzen, haben Sie bereits ein erstklassiges Backup der meisten Dateien (solange Sie noch in der Lage sind, auf die CD-ROM zuzugreifen, wenn es einmal eng wird -- mehr dazu weiter unten). Datensicherungen sind unentbehrlich, wenn es darum geht, bestimmte Probleme zu lösen; lassen Sie nicht zu, daß die wochenlange Arbeit zur Konfiguration Ihres Systems vergeblich war.

Sorgen Sie auch dafür, daß Sie Ihre Systemkonfiguration schriftlich festhalten -- so z.B. die Einträge in der Partitionstabelle, die Größe der Partitionen und ihr Typ, die Dateisysteme. Falls Sie irgendwann die Partitionstabelle zerstören, läßt sich der Schaden vielleicht einfach dadurch beheben, daß Sie fdisk noch einmal aufrufen, aber das funktioniert natürlich nur, wenn Sie noch wissen, wie die Partitionstabelle vorher ausgesehen hat. (11)

Natürlich brauchen Sie im Notfall eine Möglichkeit, entweder das System zu booten und auf Ihre Dateien zuzugreifen, oder eine Datensicherung zurückzuspielen. Am besten benutzen Sie dafür eine »Rettungsdiskette« oder »Root-Diskette«. Eine solche Diskette enthält ein kleines Root-Dateisystem sowie die Mindestausstattung, um ein Linux-System komplett von der Diskette aus zu betreiben -- also die unbedingt notwendigen Befehle und Systemdateien zusammen mit einigen Tools, die bei der Behebung von Problemen nützlich sind. Sie können solch eine Rettungsdiskette benutzen, indem Sie zunächst einen Kernel von einer anderen Diskette booten (wie wir das in » Von einer Diskette booten « besprochen haben) und dann dem Kernel mitteilen, daß er die Rettungsdiskette als Root-Dateisystem benutzen soll.

Die meisten Linux-Distributionen enthalten ein solches Gespann aus Boot- und Root-Diskette als Original-Installationsdisketten. Darauf befindet sich in der Regel ein kleines Linux-System, das komplett von der Diskette aus laufen kann, und mit dem sowohl Software installiert als auch die grundlegende Systemverwaltung erledigt werden kann. Einige Systeme enthalten den Kernel und das Root-Dateisystem auf einer einzigen Diskette, aber dabei bleibt auf dieser Rettungsdiskette nur noch sehr wenig Platz für andere Dateien. Wie nützlich solche Disketten im Notfall als Werkzeug tatsächlich sind, hängt auch davon ab, ob sie die notwendigen Tools zur Behebung des Problems enthalten oder nicht (etwa fsck , fdisk , einen kleinen Editor wie vi usw.). Manche Distributionen bieten eine dermaßen aufwendige Installationsroutine, daß auf den Floppies nur wenig Raum für irgend etwas anderes bleibt.

Auf jeden Fall können Sie eine solche Root-Diskette selbst erstellen. Damit Sie das von Grund auf tun können, brauchen Sie genaue Kenntnisse dessen, was zum Booten und bei der Benutzung des Systems notwendig ist; Sie müssen ganz genau wissen, wo Sie sich beschränken müssen und was ausgelassen werden kann. So könnten Sie z.B. die Startprogramme init , getty und login weglassen, wenn Sie wissen, wie Sie das System so einrichten, daß der Kernel auf einer Konsole eine Shell startet, statt die übliche Boot-Prozedur zu durchlaufen. (Eine Möglichkeit wäre es, /etc/init als symbolischen Link auf /sbin/bash einzurichten, und zwar im Dateisystem auf der Rettungsdiskette.)

Wir können hier nicht auf alle Details eingehen, aber der erste Schritt zur Erstellung einer Rettungsdiskette besteht darin, daß Sie mit mkfs auf einer Floppy ein Dateisystem einrichten (siehe auch den Abschnitt » Dateisysteme erzeugen « ). Anschließend mounten Sie die Floppy und kopieren die benötigten Dateien dorthin; darunter die relevanten Dateien in /dev (die meisten davon können Sie aus dem Verzeichnis /dev im Root-Dateisystem der Festplatte übernehmen). Sie brauchen außerdem eine Boot-Diskette, die nur einen Kernel enthält. In diesem Kernel sollte Root mittels rdev auf /dev/fd0 gesetzt sein. Wir beschreiben dies im Abschnitt » Von einer Diskette booten « . Sie müssen außerdem entscheiden, ob Sie das Root-Dateisystem von der Floppy in eine RAM-Disk laden wollen (auch dies können Sie mittels rdev einstellen). Wenn Sie mehr als vier Megabytes an RAM haben, ist das sicherlich eine gute Idee, weil Sie damit das Diskettenlaufwerk freimachen, um darin z.B. eine andere Diskette mit weiteren Tools unterzubringen. Falls Sie zwei Diskettenlaufwerke haben, ist dies auch ohne die RAM-Disk möglich.

Auf jeden Fall sollten Sie mit den Installationsdisketten beginnen. Wenn diese Disketten nicht alle Tools enthalten, die Sie brauchen, richten Sie auf einer weiteren Diskette ein Dateisystem ein und kopieren Sie die fehlenden Programme dorthin. Wenn Sie dann das Root-Dateisystem von der Floppy in eine RAM-Disk laden oder ein zweites Diskettenlaufwerk benutzen, können Sie diese andere Diskette mounten, um auf die benötigten Tools zuzugreifen.

Welche Tools brauchen Sie? In den folgenden Abschnitten werden wir einige häufige Notfälle sowie Möglichkeiten der Schadensbehebung besprechen -- das soll Ihnen als Anhaltspunkt dafür dienen, welche Programme Sie in verschiedenen Situationen benötigen.

Dateisysteme reparieren

Wir haben bereits im Abschnitt » Dateisysteme prüfen und reparieren « besprochen, daß mit fsck verschiedene Schäden an Dateisystemen behoben werden können. Da die meisten dieser Beschädigungen relativ klein sind, lassen Sie sich beheben, indem Sie das System in der üblichen Weise starten und dann fsck von der Festplatte aus aufrufen. Allerdings ist es in der Regel besser, das Root-Dateisystem zu prüfen und zu reparieren, während es nicht aufgesetzt ist. In diesem Fall ist es einfacher, fsck von der Rettungsdiskette aus aufzurufen.

Es spielt keine Rolle, ob Sie fsck von der Festplatte oder einer Diskette aus starten; die Syntax entspricht auf jeden Fall der, die wir weiter oben in diesem Kapitel beschrieben haben. Denken Sie aber daran, daß fsck meistens ein Front-End für Programme wie fsck.ext2 ist. Auf manchen Systemen müssen Sie (für das Second Extended-Dateisystem) auch e2fsck aufrufen.

Ein Dateisystem kann so beschädigt werden, daß es sich nicht mehr aufsetzen läßt. Das passiert in der Regel dann, wenn der Superblock des Dateisystems beschädigt wird, in dem Informationen zum Dateisystem als Ganzem gespeichert sind. Wenn der Superblock zerstört ist, kann das System überhaupt nicht mehr auf das Dateisystem zugreifen und jeder Mount-Versuch wird scheitern (wahrscheinlich mit einer Fehlermeldung wie: »can't read superblock«).

Wegen der herausragenden Bedeutung des Superblocks legt das System innerhalb des Dateisystems in bestimmten Intervallen Sicherungskopien dieser Blöcke an. Dateisysteme vom Typ Second Extended sind in »Blockgruppen« zusammengefaßt, wobei die voreingestellte Größe einer Gruppe 8192 Blöcke ist. Deshalb finden Sie die Sicherungskopien des Superblocks an den Block-Offsets 8193, 16.385 (also 8192 × 2 + 1), 24.577 usw. Wenn Sie das ext2 -Dateisystem benutzen, sollten Sie mit dem Befehl:

dumpe2fs gerätename | more

bestätigen, daß das Dateisystem Gruppen zu 8192 Blöcken benutzt. (Dies funktioniert natürlich nur, wenn der Master-Superblock unbeschädigt ist.) Dieser Befehl zeigt eine ganze Menge an Informationen über das Dateisystem an, und Sie sollten etwa folgendes sehen:

Blocks per group:         8192

Falls ein anderes Offset angezeigt wird, können Sie daraus, wie weiter oben gezeigt, die Lage der Superblockkopien errechnen.

Wenn Sie ein Dateisystem aufgrund von Problemen mit dem Superblock nicht aufsetzen können, ist die Wahrscheinlichkeit groß, daß auch fsck oder e2fsck nicht funktionieren. Sie können e2fsck anweisen, eine der Kopien des Superblocks für die Reparatur zu benutzen, indem Sie eingeben:

e2fsck -f -b offset  gerätename

Dabei ist Offset das Block-Offset für eine der Kopien des Superblocks; meistens ist das 8193. Mit dem Schalter -f erzwingen Sie die Prüfung des Dateisystems; wenn Sie Kopien des Superblocks benutzen, könnte das Dateisystem »sauber« erscheinen, so daß keine Prüfung stattfindet. Mit dem Schalter -f findet die Prüfung auf jeden Fall statt. Wenn Sie z.B. das Dateisystem auf /dev/hda2 reparieren möchten, dessen Superblock beschädigt ist, geben Sie ein:

e2fsck -f -b 8193 /dev/hda2

Die Kopien des Superblocks können den Tag retten!

Sie können die hier gezeigten Befehle von einer Rettungsdiskette aus aufrufen und sind anschließend hoffentlich wieder in der Lage, Ihre Dateisysteme aufzusetzen.

Auf beschädigte Dateien zugreifen

Wenn Sie von einer Rettungsdiskette booten, müssen Sie vielleicht auf Dateien zugreifen, die in einem Dateisystem auf der Festplatte stehen. Benutzen Sie dazu einfach den Befehl mount , wie wir das im Abschnitt » Dateisysteme aufsetzen « beschrieben haben, und setzen Sie die Fesplattendateisysteme z.B. auf das Verzeichnis /mnt auf. (Dieses Verzeichnis muß im Root-Dateisystem auf der Rettungsdiskette vorhanden sein.) Mit dem Befehl:

mount -t ext2 /dev/hda2 /mnt

schaffen Sie die Möglichkeit, im Verzeichnis /mnt auf die Dateien zuzugreifen, die im Second Extended-Dateisystem auf /dev/hda2 stehen. Sie können direkt auf die Dateien zugreifen und sogar Programme ausführen, die in den Dateisystemen der Festplatte vorhanden sind. Wenn Sie z.B. den Editor vi auf der Festplatte aufrufen wollen, der normalerweise in /usr/bin/vi steht, geben Sie ein:

/mnt/usr/bin/vi filename

Sie können sogar Unterverzeichnisse von /mnt in den Suchpfad aufnehmen, um dies weiter zu vereinfachen.

Setzen Sie auf jeden Fall die Festplattendateisysteme wieder ab, bevor Sie das System erneut booten. Falls Ihre Rettungsdisketten das System nicht ordungsgemäß herunterfahren können, sollten Sie die Dateisysteme mit umount von Hand absetzen.

Ein Problem, das sich auf diese Weise leicht beheben läßt, ist ein vergessenes root-Paßwort oder eine zerstörte /etc/passwd -Datei. In beiden Fällen können Sie sich eventuell nicht mehr in das System einloggen oder sich mittels su zu root machen. Um dieses Problem zu beheben, booten Sie mit den Rettungsdisketten, mounten Sie das Root-Dateisystem unter /mnt , und editieren Sie dann /mnt/etc /passwd . (Vielleicht ist es eine gute Idee, irgendwo eine Sicherungskopie dieser Datei aufzuheben, für den Fall, daß sie einmal versehentlich gelöscht wird.) Wenn Sie z.B. das alte root-Paßwort löschen wollen, ändern Sie den root-Eintrag auf:

root::0:0:The root of all evil:/:/bin/bash

Damit gibt es kein Paßwort mehr für root; Sie können das System von der Festplatte neu booten und mit dem Befehl passwd ein neues Paßwort setzen.

Ein anderes häufiges Problem sind falsche Links auf die Shared Libraries des Systems. Die Abbilder der Shared Libraries in /lib werden meist über symbolische Links wie /lib/libc.so.4 angesprochen, die auf die eigentliche Bibliothek /lib /libc.so.version verweisen. Falls dieser Link entfernt wird oder einen falschen Verweis enthält, werden viele Befehle auf dem System nicht funktionieren. Sie können dieses Problem beheben, indem Sie die Festplattendateisysteme mounten und die Libraries z.B. mit folgendem Befehl erneut linken:

cd /mnt/lib; ln -sf libc.so.4.5.26 libc.so.4

Damit bewirken Sie, daß libc.so.4 auf libc.so.4.5.26 verweist. Denken Sie daran, daß symbolische Links den Pfad benutzen, der auf der Befehlszeile mit ln übergeben wird. Aus diesem Grund würde der Befehl:

ln -sf /mnt/lib/libc.so.4.5.26 /mnt/lib/libc.so.4

nicht das tun, was Sie erreichen möchten; libc.so.4 würde auf /mnt/lib /libc.so.4.5.26 verweisen. Wenn Sie anschließend von der Festplatte booten, kann auf /mnt/lib nicht zugegriffen werden und die Bibliothek wird nicht gefunden. Der erste Befehl funktioniert, weil der symbolische Link auf eine Datei im selben Verzeichnis zeigt.

Datei aus einem Backup einspielen

Wenn Sie wichtige Systemdateien gelöscht haben, kann es notwendig sein, Back- up-Dateien einzuspielen, nachdem Sie von einer Rettungsdiskette gebootet haben. Deshalb ist es wichtig, daß Sie auf der Rettungsdiskette die notwendigen Tools zum Einspielen von Backups vorfinden -- dazu gehören Programme wie tar und gzip sowie die Treiber für Ihr Backup-Medium. Wenn Sie Ihre Datensicherungen z.B. auf einem Floppy-Streamer erstellen, sollten auf jeden Fall ftape und der Befehl insmod auf der Rettungsdiskette enthalten sein. Im Abschnitt » Die ladbaren Gerätetreiber « finden Sie mehr zu diesem Thema.

Zum Einspielen von Backups in Ihre Festplattendateisysteme müssen Sie nur diese Dateisysteme mounten (wie wir das oben beschrieben haben) und die Inhalte der Archive in diese Dateisysteme entpacken (z.B. indem Sie die entsprechenden tar - und gzip -Befehle ausführen; siehe auch den Abschnitt » Backups erstellen « ). Denken Sie daran, daß beim Einspielen eines Backups bereits vorhandene Systemdateien überschrieben werden. Vergewissern Sie sich, daß Sie korrekt vorgehen und die Situation nicht noch verschlimmern. Die meisten Archivierungsprogramme erlauben es, einzelne Dateien aus einem Archiv zu extrahieren.

Für den Fall, daß Sie Ihre Original-CD-ROM als Backup-Medium benutzen möchten, müssen Sie natürlich dafür sorgen, daß der Kernel auf Ihren Rettungsdisketten die Treiber für den Zugriff auf das CD-ROM-Laufwerk enthält. Dann können Sie die CD-ROM mounten (denken Sie an die Flags -r -t iso9660 für den mount -Befehl) und Dateien von dort kopieren.

Die Dateisysteme auf Ihren Rettungsdisketten sollten auch wichtige Systemdateien enthalten; falls Sie solche Dateien in Ihrem System gelöscht haben, können Sie die verlorengegangenen Daten ohne Probleme von der Rettungsdiskette wieder auf die Festplatte kopieren.


Fußnoten

(11)
Eine wahre Geschichte: Dem Schreiber passierte das einmal, als er mit einer leeren Diskette bootete und nicht wußte, wie die Partitionstabelle ausgesehen hatte. Muß ich erwähnen, daß ich eine ganze Weile raten mußte, bevor ich die Partitionstabelle wieder in den alten Zustand versetzt hatte?


Inhaltsverzeichnis Vorherige Abschnitt Nächstes Kapitel