Beheben von Read-Only File System

Symptome

  • Der LoxBerry Selbsttest / Healthcheck liefert einen Fehler mit der Meldung "RootFS is not mounted ReadWrite. This is NOT fine."
  • Einstellungen im LoxBerry und den Plugins lassen sich nicht speichern.
  • Plugins lassen sich nicht installieren oder deinstallieren (bleiben weiterhin vorhanden, oder erscheinen nicht nach der Installation)

Beschreibung

LoxBerry verwendet die SD-Karte, um Daten zu speichern. Auf der SD-Karte befindest sich das Linux-Dateisystem ext4. Gibt es bei diesem Dateisystem einen Fehler, wird die SD-Karte zum Schutz "read-only" (schreibgeschützt) ins Betriebssystem eingehängt. Auf der SD können keine Daten mehr geschrieben werden.

Ursachen dafür sind in der Regel:

  • Der Strom von LoxBerry wurde abgeschaltet bzw. ausgesteckt, ohne den LoxBerry ordnungsgemäß herunterzufahren (in 99% der Fälle).
  • Ein Benutzer hat selbst die Datei /etc/fstab (jene Datei, die beschreibt, welche Datenträger wo eingehängt werden sollen) bearbeitet und dabei Fehler gemacht.
  • Die SD-Karte wird defekt (viele Schreibvorgänge lassen die Karte schneller altern)

Lösung

Prüfen und Wiederherstellen der Datei /etc/fstab

In LoxBerry-Versionen vor LoxBerry 2.2 gab es einen Defekt, der in gewissen Situationen zum Verlust bzw. dem Leeren der Datei /etc/fstab führen konnte. Dies ist ab LoxBerry 2.2 behoben.

  • Mit Putty an der Shell anmelden: Eine SSH-Verbindung mit putty aufbauen / Shell-Zugriff
  • Zum Benutzer root hochstufen: su und die Entertaste, und dann das root-Passwort eingeben
  • ls -l /etc/fstab
  • Wenn die Datei nicht vorhanden ist, oder 0 Bytes groß ist, ist die Datei beschädigt.

Wiederherstellung

  • Die SD-Karte temporär wieder read-write mounten:
    mount -o remount,rw /dev/mmcblk0p2 /
    Diese Befehlszeile ist für einen Original-LoxBerry auf Raspberry. Auf anderen Geräten zuvor mount eingeben und jenen /dev/.... Eintrag suchen, der mit RO gekennzeichnet ist.
  • Dies sollte ohne Fehlermeldung funktioniert haben, und die SD-Karte ist wieder beschreibbar.
  • LoxBerry erstellt ein Backup der fstab. Wir stellen nun dieses Backup durch Kopieren wieder her:
    cp /etc/fstab.backup /etc/fstab
  • LoxBerry rebooten
  • LoxBerry Selbsttest ausführen.

Hinweise

  • Wird LoxBerry Backup eingesetzt, befindet sich in jedem Sicherungsverzeichnis ebenfalls eine Sicherung der fstab. Dafür muss die eigentliche Komplett-Sicherung nicht wiederhergestellt werden.
  • Wenn diese Methode nicht funktioniert hat, oder die fstab-Datei in Ordnung war, war das nicht die Ursache für den Fehler.

Dateisystem überprüfen

LoxBerry führt standardmäßig bei einem unsauberen Herunterfahren (z.B. Strom einfach ausstecken) beim nächsten Start eine Prüfung durch. Außerdem wird automatisch bei jedem 20. Start eine Prüfung durchgeführt.

Wenn das Dateisystem aktuell "read-only" gemounted ist, kann manuell eine Dateisystemprüfung durchgeführt werden:

Wenn weiterhin der Fehler im LoxBerry Selbsttest angezeigt wird, ist wahrscheinlich mehr kaputt.

SD-Karte austauschen

Wichtig ist, dass LoxBerry dafür wieder ohne Fehler im Selbsttest startet. Das Dateisystem darf nicht "read-only" gestartet sein, sonst wird dieser Status mit übertragen:

Wenn du die SD-Karte tauschen musst, ohne die Einstellungen und Plugins zu verlieren, gibt es drei Methoden:

  • Win32DiskImager: LoxBerry herunterfahren, SD-Karte entnehmen, am PC im Kartenleser mit Win32DiskImager sichern, das gesicherte Image auf die neue SD-Karte schreiben, mit der neuen SD-Karte wieder booten (das funktioniert nur, wenn die SD-Karte gleich groß oder größer ist als die alte Karte).
  • LoxBerry Backup: Eine Sicherung vom Typ DDZ z.B. auf einem Netzwerk-Share erzeugen, dieses Backup am PC entpacken, und das Image mit Win32DiskImager auf eine neue SD-Karte schreiben.
  • clone_sd - LoxBerry im laufenden Betrieb auf eine neue SD-Karte kopieren: Im laufenden Betrieb einen Kartenleser mit neuer SD-Karte an einem USB-Anschluss des Raspberry anstecken, clone_sd ausführen und den Anweisungen am Bildschirm folgen, nach dem Klonen LoxBerry herunterfahren, und die SD-Karte aus dem Leser im Raspberry einsetzen.