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
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
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
/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
/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
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)
/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
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 ]
© 2004-2021 by Georg Kainzbauer