Aus Raspberry Pi Geek 04/2021

Readonly-System im Standard unterstützt

© Alex Zaitsev, 123RF

Unveränderlich

Bernhard Bablok

Üblicherweise heißt es ja: Tue Gutes und rede darüber. Das hat die Raspberry Pi Foundation bei einer neu eingeführten Funktion in Raspi-config vergessen, die ein System im Handumdrehen in ein Readonly-System umwandelt.

Der Begriff Readonly-System steht für ein System, das keinerlei Schreibzugriffe auf die SD-Karte erlaubt. Das bringt mehrere Vorteile. So können zum Beispiel weder Anwender noch Angreifer ein System manipulieren, und auch die SD-Karte ist nicht ständiger Belastung ausgesetzt. Den wichtigsten Anwendungsfall stellen jedoch RasPi-Systeme dar, die der Benutzer einfach abschaltet, statt sie herunterzufahren. Ein normales Pi OS quittiert das über kurz oder lang mit Fehlern, denn die Daten auf der SD-Karte sind zum Abschaltzeitpunkt nicht notwendigerweise konsistent.

Ein früherer Artikel [1] beleuchtete bereits die Hintergründe und beschrieb eins von zwei möglichen Verfahren für das Einrichten eines solchen Systems. Ohne Klimmzüge geht das allerdings nicht, denn sowohl das Betriebssystem selbst als auch seine Anwendungen möchten immer etwas schreiben, und seien es nur Logdateien.

Das zweite mögliche Verfahren, das der damalige Artikel zwar erwähnte, aber nicht im Detail beschrieb, haben die Entwickler der Raspberry Pi Foundation schon mit der Pi-OS-Version vom August 2020 in das Tool Raspi-config eingebaut – allerdings gut versteckt und ohne es überhaupt im Changelog zu erwähnen. Dabei ist die Lösung gut implementiert, einfach in der Anwendung und auch jederzeit ohne Weiteres rückgängig zu machen.

Transparente Speicherschicht

Die Lösung der Foundation verwendet ein Overlay-Filesystem, das oberhalb des normalen Dateisystems der SD-Karte liegt. Es fängt alle Schreibzugriffe einschließlich des Löschens von Dateien ab und leitet sie auf eine versteckte RAM-Disk um (Abbildung 1).

Abbildung 1: Die Funktionsweise des Overlay-Dateisystems. Der Stand der SD-Karte bleibt bei Schreibvorgängen unverändert.

Abbildung 1: Die Funktionsweise des Overlay-Dateisystems. Der Stand der SD-Karte bleibt bei Schreibvorgängen unverändert.

Die Konfiguration des Readonly-Systems braucht nicht viel Zeit. In Raspi-config wählen Sie 4 Performance Options und anschließend P3 Overlay File System. Allerdings geben diese Bezeichnungen nicht wirklich wieder, was sich hinter den Optionen verbirgt. Nach Auswahl von P3 fragt das Programm, ob es das Overlay-Dateisystem aktivieren soll (Abbildung 2).

Abbildung 2: Die Aktivierung des Overlay-Dateisystems erfolgt über das Raspberry-Pi-Konfigurationswerkzeug.

Abbildung 2: Die Aktivierung des Overlay-Dateisystems erfolgt über das Raspberry-Pi-Konfigurationswerkzeug.

Der Vorgang dauert etwas, denn Raspi-config erstellt die Datei /boot/initrd.img-5.4.79+ (der genaue Name hängt vom Kernel ab) und weist Linux beim Start darauf hin, diese Datei zu nutzen. Das geschieht über einen Eintrag in der Konfigurationsdatei /boot/cmdline.txt: Hier fügt Raspi-config den String boot=overlay zusätzlich am Anfang ein.

Die so erzeugte Datei mit dem kryptischen Namen dient als initiale RAM-Disk. Sie enthält ein minimales Dateisystem, das nur die notwendigen Treiber und Skripte für das Laden eines vollständigen Linux-Systems bereitstellt. Bei Desktop-Distributionen entspricht das dem üblichen Standard, denn der Kernel selbst enthält nicht alle Treiber für alle unterstützten Festplattenadapter. Pi OS kommt üblicherweise ohne eine Initrd aus, da die Hardware nicht variiert und der RasPi-Kernel für den Mini-Computer ausgelegt wurde.

Im Falle des Readonly-Systems legt die Initrd nur die RAM-Disk an und konfiguriert das Overlay-Dateisystem. Möchten Sie tiefer in die technischen Hintergründe einsteigen, finden Sie in der Datei /etc/initramfs-tools/scripts/overlay das Skript, das beim Booten für die entsprechende Magie sorgt.

Boot-Dateien

Die Boot-Dateien liegen auf der ersten Partition, und von System-Upgrades abgesehen finden hier sowieso keine Schreibzugriffe statt. Die Einrichtung des Readonly-Modus für /boot erfolgt deshalb nach erneuter Nachfrage (Abbildung 3) einfach durch Anhängen der Option ro in der Spalte mit den Optionen in der /etc/fstab (Listing 1: erste Zeile neu, zweite Zeile alt).

Abbildung 3: Der Schreibschutz für das Boot-Dateisystem lässt sich gesondert aktivieren.

Abbildung 3: Der Schreibschutz für das Boot-Dateisystem lässt sich gesondert aktivieren.

Listing 1

Änderungen an der /etc/fstab

+/dev/mmcblk0p1 /boot vfat defaults,ro 0 2
-/dev/mmcblk0p1 /boot vfat defaults    0 2

Nach einem Neustart ist das System schreibgeschützt; das Wurzeldateisystem liegt nicht mehr auf der SD-Karte, wie Abbildung 4 beweist. Zum Testen erstellen Sie beliebige neue Dateien, ändern bestehende Daten oder löschen gleich ganze Ordner. Nach dem Abschalten und einem Neustart sollte alles wieder dem ursprünglichen Zustand entsprechen.

Abbildung 4: Eine Ausgabe des Kommandos <code>findmnt</code>. Das System schreibt auf dem Overlay-Dateisystem.

Abbildung 4: Eine Ausgabe des Kommandos findmnt. Das System schreibt auf dem Overlay-Dateisystem.

Dieses Verhalten impliziert freilich auch, dass ein System für den produktiven Einsatz fertig installiert und konfiguriert sein muss, bevor Sie den Schreibschutz aktivieren. Zudem sollten Sie jegliche Schreibzugriffe trotzdem minimieren: Zwar leitet das Overlay-Dateisystem sie auf die RAM-Disk um, doch knabbert jeder Schreibzugriff am verfügbaren Hauptspeicher. Gerade beim Pi Zero, der in den meisten Embedded-Projekten zum Einsatz kommt und sich deshalb ideal für Readonly-Szenarien eignet, ist der Hauptspeicher sowieso knapp. Der eingangs erwähnte ältere Artikel gibt zu diesem Thema ebenfalls einige Hinweise.

Fazit

Eine einfache Möglichkeit, das System in einen Readonly-Modus zu versetzen, war lange überfällig. Ein wenig ärgerlich dabei ist nur, dass die Entwickler sie hinter Menübezeichnungen versteckt haben, die kaum einen Hinweis auf die Funktion geben. Selbst die Dokumentation der Foundation erklärt das Vorgehen nicht. Unabhängig davon: Sobald man den Menüpunkt einmal kennt, erfordern die Konfiguration und bei Bedarf der rückstandsfreie Rückbau nur wenig Know-how und Zeit. (cla)

DIESEN ARTIKEL ALS PDF KAUFEN
EXPRESS-KAUF ALS PDFUmfang: 3 HeftseitenPreis €0,99
(inkl. 19% MwSt.)
RASPBERRY PI GEEK KAUFEN
EINZELNE AUSGABE Print-Ausgaben Digitale Ausgaben
ABONNEMENTS Print-Abos Digitales Abo
TABLET & SMARTPHONE APPS Raspberry Pi Geek bei Google Play Readly Logo
Nach oben