Dieser Artikel ist inzwischen weitgehend überholt, da der wesentliche Befehl bzw. die wesentliche Einstellung fsck.repair=yes inzwischen in der Steuerdatei cmdline.txt enthalten ist.
Inhalt
Filesystem nach Stromausfall kaputt?
Ganz schlimm ist das plötzliche Abschalten des Pi durch Stecker ziehen oder einen Stromnetzausfall. Das führt öfter zu unvollständig geschlossenen Dateien. Im schlimmsten Fall bootet der Pi dann nicht. Hier zeige ich euch, wie man ein defektes Filesystem reparieren kann.
Manuelle Reparatur mit fsck
Mit dem Kommando
fsck
kann man ein Dateisystem (engl. Filesystem) überprüfen und notfalls reparieren. Blöderweise darf das Filesystem dabei nicht gemounted sein. Also bräuchte man zumindest einen SD Kartenleser und eine zweite funktionierende Raspbian SD Karte. Mit der anderen System SD Karte wird der Pi gebootet. Mittels Kartenleser inkl. eingelegter nicht funktionierender SD Karte wird die defekte Karte dann geprüft. Das ganze ist etwas kompliziert – mir jedenfalls zu kompliziert. Anleitungen gibts im Web.
Einmalige Reparatur
Möchte man die Root Partition nur einmalig während des nächsten Bootvorgangs checken und reparieren, reicht es, im Hauptverzeichnis eine Datei mit Namen
forcefsck
anzulegen. Der dazu nötige Befehl lautet
1 |
sudo touch /forcefsck |
Das funktioniert natürlich nur, wenn der Pi noch starten konnte und ich das Shell Kommando absetzen kann. Immerhin werde so noch offene Dateien wieder ordnungsgemäß geschlossen.
Automatische Reparatur
Startet der Pi überhaupt nicht, können wir folgendes versuchen: Steckt die SD Karte in einen PC – ob direkt in einen SD Kartenslot oder einen USB Kartenleser ist egal. Die /root Partition können wir damit zwar nicht ansehen, die Boot Partition hingegen schon.
Das Verzeichnis /boot der Karte bekommt im PC beim Einstecken einen Windows Laufwerksbuchstaben verpasst und kann unter Windows gelesen und beschrieben werden. Dort die Datei cmdline.txt editieren und noch den Text
fsck.repair=yes
am Ende der Zeile dranhängen. Das geht mit dem Texteditor von Windows (aber bitte nicht mit Word o.ä.) oder besser und sicherer mit einem Editor, der Linux Zeilenumbrüche beherrscht.
Die Datei cmdline.txt besteht aus einer einzigen – unter Umständen sehr langen – Zeile. Keinesfalls Zeilenumbrüche einfügen!
Die Karte wieder in den Raspi stecken und neu starten. Beim Hochfahren aber noch vor dem Mounten wird dann jedes Mal die Root Partition automatisch geprüft und ggf. repariert. Der Bootvorgang dauert dadurch minimal länger.
Gerade bei Servern, die vielleicht auch irgendwo anders stehen oder generell headless betrieben werden, macht so ein Eintrag Sinn.
Nachdem ich gestern meine erste SD Karte mit dem neuen Raspbian "Stretch" gebrannt habe, muss ich feststellen, dass
fsck.repair=yes
bereits standardmäßig in die cmdline.txt Datei eingetragen wird. Bei den älteren Wheezy und Jessie Versionen war das nicht so, hier nützt der Beitrag also noch etwas.
Natürlich kann es auch aus anderen Gründen zu Problemen mit der SD Karte kommen. Z.B. wenn sie verschlissen ist und einer oder mehrere Datenblöcke nicht mehr gelesen werden können. Dann hilft dieser Beitrag nur wenig, da er ja nur das Filesystem reparieren hilft – also die logische Zuordnung der einzelnen Datenblöcke, nicht aber physische Medienfehler. Wie man generell den Verschleiß einer SD Karte minimieren kann, steht in diesem Beitrag meines Blogs.