Raspbian Lite ist eine Raspbian-Variante ohne Grafiksystem und GUI-Programme, ohne Java und Mathematica. Sie eignet sich daher besonders gut für Anwendungen, bei denen ein Raspberry Pi ohne Monitor Steuerungs- oder Server-Aufgaben übernehmen soll.
Wenn es für die Anwendung keine Notwendigkeit gibt, Daten auf der SD-Karte zu verändern, kann Raspbian Lite mit geringem Aufwand in ein Read-Only-System umgewandelt werden. Das hat den Vorteil, dass eine Beschädigung des Dateisystems nahezu ausgeschlossen ist, wenn der Raspberry Pi ohne einen richtigen Shutdown ausgeschaltet wird (sprich: wenn einfach der Stecker gezogen wird).
Ausgangspunkt für diese Anleitung ist ein fertig installiertes und konfiguriertes Raspbian Jessie Lite System. Bei meinem Testsystem ist der einzige USB-Port mit einem WLAN-Stecker verbunden. Der Minirechner bezieht über das WLAN seine Netzwerkdaten (mit DHCP). Das System kann also via SSH gesteuert werden.
Die minimale WLAN-Konfiguration in /etc/network/interfaces
sieht so aus:
auto lo
iface lo inet loopback
auto wlan0
iface wlan0 inet dhcp
wpa-ssid "meine-wlan-ssid"
wpa-psk "streng geheim"
Aufräumarbeiten
Nach einem Update entfernen Sie mit apt-get remove
alle Pakete, die nicht mehr benötigt werden bzw. die ein Read-Write-Dateisystem unbedingt voraussetzen. Durch die folgenden Kommando wird auch raspi-config
entfernt; wenn Sie das Tool für Konfigurationsarbeiten benötigen, sollten Sie diese vorher erledigen.
apt-get update && apt-get dist-upgrade
apt-get remove --purge cron logrotate triggerhappy dphys-swapfile fake-hwclock samba-common
apt-get autoremove --purge
Temporäre Dateisysteme im RAM
Ganz ohne Schreibzugriff geht es nicht. Deswegen werden die Verzeichnisse, die für Schreibzugriffe unbedingt erforderlich sind, in temporären Verzeichnisse verlagert, die im Arbeitsspeicher abgebildet werden. Beachten Sie, dass alle dort gespeicherte Daten bei jedem Reboot verloren gehen!
rm -rf /var/lib/dhcp/ /var/spool /var/lock
ln -s /tmp /var/lib/dhcp
ln -s /tmp /var/spool
ln -s /tmp /var/lock
ln -s /tmp/resolv.conf /etc/resolv.conf
/etc/fstab
In /etc/fstab
sind zwei Änderungen erforderlich:
- Zum einen für die Verzeichnisse
/
und/boot
jeweils die Optionro
, damit die Dateisysteme wirklich read-only in den Verzeichnisbaum eingebunden werden. - Und zum anderen drei neue Zeilen, um für
/var/log
,/var/tmp
und/tmp
jeweils ein temporäres Dateisystem einzurichten.
Die resultierende Datei sieht bei mir so aus:
# Datei /etc/fstab
proc /proc proc defaults 0 0
/dev/mmcblk0p1 /boot vfat ro,defaults 0 2
/dev/mmcblk0p2 / ext4 ro,defaults,noatime 0 1
tmpfs /var/log tmpfs nodev,nosuid 0 0
tmpfs /var/tmp tmpfs nodev,nosuid 0 0
tmpfs /tmp tmpfs nodev,nosuid 0 0
Beachten Sie, dass die Device-Namen bei einer NOOBS-Installation anders aussehen.
/boot/cmdline
Auch /boot/cmdline
muss verändert werden. Am Ende der langen Optionszeile fügen Sie die Optionen fastboot noswap
hinzu. fastboot
bedeutet, dass während des Bootvorgangs keine Überprüfung des Dateisystems erfolgen soll. noswap
bedeutet, dass Linux ohne Swap-Datei arbeiten muss. Achten Sie darauf, dass Ihr Editor die Zeile nicht umbricht — alles muss in einer langen Zeile stehen.
Bei mir sieht diese Zeile so aus:
dwc_otg.lpm_enable=0 console=ttyAMA0,115200 console=tty1 root=/dev/mmcblk0p2 rootfstype=ext4 elevator=deadline fsck.repair=yes rootwait fastboot noswap
Test
Damit sind alle Vorbereitungsarbeiten abgeschlossen. Mit reboot
sollte Ihr System nun im Read-Only-Modus starten. Davon können Sie sich mit mount
und touch
überzeugen.
mount | grep mmcblk
/dev/mmcblk0p2 on / type ext4 (ro,noatime,data=ordered)
/dev/mmcblk0p1 on /boot type vfat (ro,relatime,
fmask=0022,dmask=0022,codepage=437,iocharset=ascii,
shortname=mixed,errors=remount-ro)
touch xy
touch: cannot touch ‘xy’: Read-only file system
Bei meinen Tests funktionierte anfänglich die WLAN-Konfiguration nicht, weil ich den Link von /etc/resolv.conf
in ein temporäres Dateisystem vergessen und für /tmp
kein temporäres Dateisystem eingerichtet hatte.
Für allfällige Korrekturmaßnahmen ist es erforderlich, dass Sie Ihren Minicomputer an einen Monitor anschließen und über eine Tastatur bedienen können.
Boot-Geschwindigkeit und Platzbedarf
Mein Testkandidat war ein Raspberry Pi Zero. Vom Anstecken bis zum erfolgreichen Start des SSH-Servers vergehen rund 21 Sekunden. Das ist nicht traumhaft schnell, sollte aber für die meisten Anwendungsfälle ausreichen.
Der Platzbedarf für das gesamte System beträgt rund 1 GByte. Für die Installation von Raspbian Lite benötigen Sie eine SD-Karte mit zumindest 2 GByte.
df -h
Filesystem Size Used Avail Use% Mounted on
/dev/root 1.3G 945M 247M 80% /
devtmpfs 214M 0 214M 0% /dev
tmpfs 218M 0 218M 0% /dev/shm
tmpfs 218M 8.4M 209M 4% /run
tmpfs 5.0M 0 5.0M 0% /run/lock
tmpfs 218M 0 218M 0% /sys/fs/cgroup
tmpfs 218M 8.0K 218M 1% /tmp
tmpfs 218M 0 218M 0% /var/tmp
tmpfs 218M 132K 218M 1% /var/log
/dev/mmcblk0p1 60M 20M 41M 34% /boot
free -h
total used free shared buffers cached
Mem: 434M 77M 357M 8.5M 6.3M 40M
-/+ buffers/cache: 30M 403M
Swap: 0B 0B 0B
Leisungsaufnahme
Die Leistungsaufnahme für den Pi Zero samt USB-WLAN-Stecker beträgt laut diesem simplen USB-Messgerät im Leerlauf rund 0,7 bis 0,8 Watt. Unter Last (CPU plus Netzwerk-Transfers) steigt der Verbrauch auf ca. 1,1 Watt.
Änderungen durchführen
Wenn Sie später doch einmal Änderungen durchführen möchten, loggen Sie sich ein und führen
mount -o remount,rw /
bzw. für das Boot-Verzeichnis
mount -o remount,rw /boot
aus. Damit kann das Dateisystem nun bis zum nächsten Reboot verändert werden.