Good to Know Database

Raspbian Jessie: Raspbian Jessie Lite für den ReadOnly-Betrieb konfigurieren


Die folgende Anleitung beschreibt wie Sie ein Raspbian Jessie Lite System für den ReadOnly-Betrieb konfigurieren. Im ReadOnly-Betrieb wird das Boot- und Root-Dateisystem nur lesbar gemountet. Die Verzeichnisse welche für diverse Linux-Services schreibbar erforderlich sind, werden dabei in den Arbeitsspeicher ausgelagert. Diese Betriebsart bietet sich an wenn keine Schreibzugriffe auf die SD-Karte erforderlich sind und Sie eine Beschädigung des Dateisystems durch Unterbrechungen in der Stromversorgung verhindern wollen.

Hinweis: Als Grundlage für die folgende Anleitung hat das Raspbian Jessie Lite Image vom 27.05.2016 gedient.

Bevor Sie die Root-Partition nur noch ReadOnly einhängen, sollten Sie die aktuellen Updates von Raspbian installieren und für den ReadOnly-Betrieb nicht mehr benötigte Pakete deinstallieren. Dazu aktualisieren Sie zuerst die lokale Paketdatenbank.

pi@raspberrypi:~ $ sudo apt-get update

Anschließend installieren Sie die aktuellen Updates.

pi@raspberrypi:~ $ sudo apt-get dist-upgrade

Die folgenden Pakete werden im ReadOnly-Betrieb normalerweise nicht mehr benötigt und können daher deinstalliert werden.

pi@raspberrypi:~ $ sudo apt-get remove --purge logrotate triggerhappy dphys-swapfile fake-hwclock

Jetzt sollten Sie noch den folgenden Befehl ausführen um eventuell installierte aber nicht länger benötigte Pakete zu entfernen.

pi@raspberrypi:~ $ sudo apt-get autoremove --purge

Löschen Sie jetzt die Verzeichnisse /var/lib/dhcp, /var/lock und /var/spool welche temporäre Dateien enthalten. Da diese Verzeichnisse auch im ReadOnly-Betrieb für Schreibzugriffe zur Verfügung stehen müssen, erstellen Sie symbolische Links auf das /tmp Verzeichnis welches im Arbeitsspeicher abgebildet ist.

pi@raspberrypi:~ $ sudo rm -rf /var/lib/dhcp /var/lock /var/spool
pi@raspberrypi:~ $ sudo ln -s /tmp /var/lib/dhcp
pi@raspberrypi:~ $ sudo ln -s /tmp /var/lock
pi@raspberrypi:~ $ sudo ln -s /tmp /var/spool

Des Weiteren müssen Sie die Konfigurationsdatei /etc/resolv.conf in das /tmp Verzeichnis verlagern, da diese vom dhcpcd Service aktualisiert wird.

pi@raspberrypi:~ $ sudo rm -rf /etc/resolv.conf
pi@raspberrypi:~ $ sudo ln -s /tmp/resolv.conf /etc/resolv.conf

Öffnen Sie jetzt die /etc/fstab mit einem Editor.

pi@raspberrypi:~ $ sudo vi /etc/fstab

In dieser Konfigurationsdatei sollten Sie unter anderem die folgenden Zeilen vorfinden.

/dev/mmcblk0p1  /boot           vfat    defaults          0       2
/dev/mmcblk0p2  /               ext4    defaults,noatime  0       1

Mit diesen Zeilen wird definiert wo sich die Boot-Partition und die Root-Partition befinden und wie diese eingehängt werden sollen. Damit diese nur noch ReadOnly gemountet werden, fügen Sie jeweils die Option ro hinzu.

/dev/mmcblk0p1  /boot           vfat    ro,defaults          0       2
/dev/mmcblk0p2  /               ext4    ro,defaults,noatime  0       1

Des Weiteren fügen Sie am Ende der Datei die folgenden drei Zeilen ein. Dadurch wird für die Verzeichnisse /tmp, /var/log und /var/tmp jeweils ein temporäres Dateisystem eingerichtet.

tmpfs           /tmp            tmpfs   nodev,nosuid         0       0
tmpfs           /var/log        tmpfs   nodev,nosuid         0       0
tmpfs           /var/tmp        tmpfs   nodev,nosuid         0       0

Bevor Sie das System neu starten können, müssen Sie noch die /boot/cmdline.txt anpassen. Öffnen Sie diese dazu mit einem Editor.

pi@raspberrypi:~ $ sudo vi /boot/cmdline.txt

Hier sollten Sie nur die folgende Zeile vorfinden.

dwc_otg.lpm_enable=0 console=serial0,115200 console=tty1 root=/dev/mmcblk0p2 rootfstype=ext4 elevator=deadline fsck.repair=yes rootwait

Fügen Sie am Ende der Zeile die Optionen fsck.mode=skip und noswap hinzu. Durch die Option fsck.mode=skip wird die Überprüfung des Dateisystems beim Systemstart abgeschalten. noswap dorgt dafür, dass Linux keine Swap-Datei anlegt.

dwc_otg.lpm_enable=0 console=serial0,115200 console=tty1 root=/dev/mmcblk0p2 rootfstype=ext4 elevator=deadline fsck.repair=yes rootwait fsck.mode=skip noswap

Nachdem Sie alle Schritte durchgeführt haben, können Sie den Raspberry Pi mit dem folgenden Befehl neu starten.

pi@raspberrypi:~ $ sudo shutdown -r now

Nach dem Neustart können Sie mit dem Befehl mount überprüfen ob die Boot-Partition (/dev/mmcblk0p1) und die Root-Partition (/dev/mmcblk0p2) mit der Option ro eingehängt wurden. Des Weiteren sollten Sie die drei temporären Dateisysteme (tmpfs) für die Verzeichnisse /tmp, /var/log und /var/tmp angezeigt bekommen.

pi@raspberrypi:~ $ mount
/dev/mmcblk0p2 on / type ext4 (ro,noatime,data=ordered)
devtmpfs on /dev type devtmpfs (rw,relatime,size=469540k,nr_inodes=117385,mode=755)
sysfs on /sys type sysfs (rw,nosuid,nodev,noexec,relatime)
proc on /proc type proc (rw,relatime)
tmpfs on /dev/shm type tmpfs (rw,nosuid,nodev)
devpts on /dev/pts type devpts (rw,nosuid,noexec,relatime,gid=5,mode=620,ptmxmode=000)
tmpfs on /run type tmpfs (rw,nosuid,nodev,mode=755)
tmpfs on /run/lock type tmpfs (rw,nosuid,nodev,noexec,relatime,size=5120k)
tmpfs on /sys/fs/cgroup type tmpfs (ro,nosuid,nodev,noexec,mode=755)
cgroup on /sys/fs/cgroup/systemd type cgroup (rw,nosuid,nodev,noexec,relatime,xattr,release_agent=/lib/systemd/systemd-cgroups-agent,name=systemd)
cgroup on /sys/fs/cgroup/cpu,cpuacct type cgroup (rw,nosuid,nodev,noexec,relatime,cpu,cpuacct)
cgroup on /sys/fs/cgroup/blkio type cgroup (rw,nosuid,nodev,noexec,relatime,blkio)
cgroup on /sys/fs/cgroup/memory type cgroup (rw,nosuid,nodev,noexec,relatime,memory)
cgroup on /sys/fs/cgroup/devices type cgroup (rw,nosuid,nodev,noexec,relatime,devices)
cgroup on /sys/fs/cgroup/freezer type cgroup (rw,nosuid,nodev,noexec,relatime,freezer)
cgroup on /sys/fs/cgroup/net_cls type cgroup (rw,nosuid,nodev,noexec,relatime,net_cls)
systemd-1 on /proc/sys/fs/binfmt_misc type autofs (rw,relatime,fd=22,pgrp=1,timeout=300,minproto=5,maxproto=5,direct)
mqueue on /dev/mqueue type mqueue (rw,relatime)
debugfs on /sys/kernel/debug type debugfs (rw,relatime)
configfs on /sys/kernel/config type configfs (rw,relatime)
tmpfs on /tmp type tmpfs (rw,nosuid,nodev,relatime)
tmpfs on /var/tmp type tmpfs (rw,nosuid,nodev,relatime)
tmpfs on /var/log type tmpfs (rw,nosuid,nodev,relatime)
/dev/mmcblk0p1 on /boot type vfat (ro,relatime,fmask=0022,dmask=0022,codepage=437,iocharset=ascii,shortname=mixed,errors=remount-ro)

Sollten Sie zu einem späteren Zeitpunkt Änderungen an der Root-Partition vornehmen oder weitere Pakete installieren wollen, können Sie die Root-Partition mit dem folgenden Befehl wieder schreibbar mounten. Das Dateisystem bleibt dann bis zum nächsten Remount oder Systemneustart schreibbar gemountet.

pi@raspberrypi:~ $ sudo mount -o remount,rw /

Das gleiche gilt für die Boot-Partition. Diese müssen Sie in der Regel nur bei einem Kernelupdate oder wenn Sie Änderungen an der Bootkonfiguration vornehmen wollen für den Schreibzugriff mounten.

pi@raspberrypi:~ $ sudo mount -o remount,rw /boot

Um die für den Schreibzugriff gemounteten Dateisysteme wieder nur lesbar zu mounten, können Sie die folgenden Befehle verwenden.

pi@raspberrypi:~ $ sudo mount -o remount,ro /
pi@raspberrypi:~ $ sudo mount -o remount,ro /boot


Dieser Eintrag wurde am 16.09.2016 erstellt.

Direkter Link zu dieser Seite: http://www.gtkdb.de/index_36_2825.html

[ Zur Startseite ]   [ Zur Kategorie ]


Valid XHTML 1.0 Transitional Valid CSS Valid Atom 1.0

© 2004-2018 by Georg Kainzbauer