Es gibt verschiedene Überlegungen warum man einen Raspberry mit "Schreibschutz" ausstatten sollte. Meine war: Hat man Geräte im Einsatz die eventuell rau behandelt werden und eigentlich keine Daten produzieren, kann man doch auch jeden Schreibvorgang verhindern.
Geht das überhaupt und ist das auch für den Administrator praxistauglich ? Das Raspberry OS hat sogar (fast) alles vorbereitet: Stichwort Overlay Filesystem.
Das Overlay Filesystem bildet zwei Ebenen und präsentiert diese dem System als eine. Im Unteren liegen die Dateien der SD Card, diese ist read only eingebunden. Im Oberen ist ein Filesystem im RAM eingebunden. Das System weiß von alledem nichts und kann in die RAM Disk schreiben. Das hat natürlich seine Grenzen, vor allem beim ersten Pi, mit nur 500 MB RAM. Nach einem Neustart ist alles verschwunden, was in die RAM Disk geschrieben wurde.
In die Bootpartition wird normalerweise nicht geschrieben. Man kann die Möglichkeit aber ganz verhindern, indem man diese Partition von vornherein nur readonly einbindet.
Beides kann man mit raspi-config Menügeführt konfigurieren, Punkte: 4 , P3 . Ich mage das gern auch einfach nur mit der Kommandozeile, auch dafür haben die Entwickler gesorgt.
Die Installation und Konfiguration des Systems muss komplett abgeschlossen sein. Als letzten Schritt richtet man das OverlayFS und den Schreibschutz ein!
Schreibschutz mit OverlayFS aktivieren
Damit der RAM nicht zu schnell mit Dateien gefüllt wird, muss man noch etwas optimieren. Hier können je nach System weitere Schritte notwendig sein!
1. Swap ausschalten
Die selbsterklärenden Befehle fragen den Zustand ab und final wird swap komplett deaktiviert.
swapon -s
swapoff -a
sudo systemctl stop dphys-swapfile
free
sudo systemctl disable dphys-swapfile
2. Logging verringern
Ich habe mit systemd timern gearbeitet und festgestellt, das danach jeder Zeittrigger 3 nichtssagende Einträge im syslog erzeugt. Die habe ich abgeschaltet (sollte man immer tun!)
sudo sed -i 's/^#LogLevel=.*/LogLevel=notice/' /etc/systemd/system.conf
sudo systemctl daemon-reexec
3. OverlayFS aktivieren und readonly setzen
Zunächst kann man sich noch schnell einen "optischen" Eindruck vom Filesystem auf der SD Card machen.
Zur "Konservierung" benutze ich die vorhandenen Scripts im raspi-config. Der erste Befehl dauert etwas!
df -h
sudo raspi-config nonint enable_overlayfs
sudo raspi-config nonint enable_bootro
sudo reboot
Nach dem Neustart zunächst wieder ein kurzer Blick auf die veränderte "Optik". Danach ein Test zum Verhalten. Der Befehl schreibt eine neue Datei im User Homedir und versucht das Gleiche in der Boot Partition. Die Datei im Homedir kann man sich mit ls anzeigen lassen, die Datei im /boot/ Directory muss einen Fehler werfen.
df -h
echo "Test Text"|tee overlay.txt |sudo tee /boot/readonly.txt
Macht man jetzt noch einen Neustart, sollte die Datei im Homedir wieder verschwunden sein.
Wartungsarbeiten
Vor jeder Änderung oder System Aktualisierung muss man den "Schreibschutz" entfernen. Dies erfordert leider auch einen Neustart! Mit dem Scriptbefehl geht es aber recht schnell.
1. Wartung vorbereiten
OverlayFS wieder deaktivieren:
sudo raspi-config nonint disable_overlayfs
sudo reboot
Nach dem Neustart kann man wieder normal ins rootfs schreiben, die Bootpartition ist aber immer noch readonly eingebunden, die fstab kann im vorherigen Schritt nicht geschrieben werden. Hier kommt der echte Vorteil gegenüber raspi-config "interaktiv" - da müsste man jetzt nochmal neustarten. Es geht aber temporär auch ohne Neustart, optional mit Test. Vor einem apt full-upgrade empfiehlt sich dieser Schritt, da unter Umständen Dateien in der Bootpartition ausgetauscht werden.
sudo mount -o remount,rw /boot
echo "Test Text"|tee overlay.txt |sudo tee /boot/readwrite.txt
2. Wartung abschließen
Die Wartung wird durch die Reaktivierung des OverlayFS und einen Neustart abgeschlossen.
Ein Installation von Kernel Komponenten (z.B. apt full-upgrade) muss man vorher mit einem finalen reboot abschließen!
sudo raspi-config nonint enable_overlayfs && sudo reboot
Alles rückgängig machen
Will man OverlayFS und boot Schreibschutz entfernen, muss man zum vorherigen Schritt 1 noch den Schreibschutz für boot dauerhaft entfernen. Einen extra Neustart an der Stelle benötigt man nicht!
sudo raspi-config nonint disable_bootro
Laufender Betrieb
Im laufenden Betrieb wird, gerade bei wenig RAM, der Speicher schnell knapp werden. Man muss das unbedingt überwachen und bei Bedarf einfach neu starten. Notfalls erstmal mit einem "wachen Auge".
df -h /
free
ToDo
Code Block
Zum Lesen: raspi-config Quelle
Keine Kommentare:
Kommentar veröffentlichen