Ziel ist es einen Raspberry Pi Zero W (also mit WLAN) ohne Monitor und Tastatur zu installieren.
Zuerst laden wir uns das Betriebssystem ist Rasbian Lite auf unseren PC.
Der Download ist als ZIP-Datei möglich.
Nach dem Entpacken kann man die Datei auf Windows per Win32DiskImager auf eine SD Karte übertragen.
Für Linux gibt es eine Anleitung.
Die ZIP-Datei entpacken und das Image auf eine SD Karte übertragen.
unzip -p 2018-06-27-raspbian-stretch-lite.zip | sudo dd of=/dev/mmcblk0 bs=4M conv=fsync
Nach dem Übertragen müssen wir noch das WLAN und SSH einrichten, damit wir Headless sofort den Raspberry Pi Zero W starten können.
Wir entfernen die SD Karte und stecken die Karte wieder in den PC. Bei vielen Betriebssystem erfolgt das Mounten automatisch.
Auf der SD Karte gibt es zwei Partitionen (boot/root).
Die Boot Partition hat das vfat Format, die Root Partition das ext4 Format.
Die WLAN Einstellungen (SSID, Passwort) werden in der Root Partition hinterlegt.
sudo vim /media/user/rootfs/etc/wpa_supplicant/wpa_supplicant.conf
network={
ssid="WLAN-SSID"
psk="WLAN-PASSWORT"
} |
network={
ssid="WLAN-SSID"
psk="WLAN-PASSWORT"
}
Für den automatisch start des SSH Server müssen wir eine leere Datei in der Boot Partition erstellen.
touch /media/user/boot/ssh
Jetzt können wir die SD Karte in den Raspberry Pi Zero W stecken und starten. Monitor und Tastatur ist nicht notwendig.
Jetzt können wir uns per SSH zu dem Paspberry Pi verbinden. Das Kennwort für den Benutzer „pi“ lautet „raspberry“.
ssh pi@192.168.10.123
Mit dem Tool Raspi-Config können wir weitere Einstellungen vornehmen.
sudo raspi-config
Diese Punkte sollten wir ändern.
– Change User Password
– Network Options / Hostname
– Localisation Options / Change Locale
– Localisation Options / Timezone
– Localisation Options / Keyboard Layout
– Localisation Options / Wi-fi Country
Die Pakete sollte man aktualisieren.
sudo apt update
sudo apt dist-upgrade
Die Tools (htop, iotop, iftop und vim) finde ich sehr sinnvoll.
sudo apt install vim htop iotop iftop
Optional kann man diese Installationen entfernen.
sudo apt remove --purge cron logrotate triggerhappy dphys-swapfile fake-hwclock samba-common
sudo apt autoremove --purge |
sudo apt remove --purge cron logrotate triggerhappy dphys-swapfile fake-hwclock samba-common
sudo apt autoremove --purge
Will man die Lebenszeit der SD Karte verlängern und Fehler bei einem Spannungsverlust vorbeugen, sollte man die Schreibvorgänge auf die Karte unterbinden.
Auf das Swap File sollte wir deshalb verzichten.
sudo systemctl stop dphys-swapfile
sudo systemctl disable dphys-swapfile
sudo rm /var/swap
Die Partitionen können wir auf Read Only (ro) setzen und die Log-Dateien in dem RAM schreiben.
sudo vim /etc/fstab
proc /proc proc defaults 0 0
PARTUUID=xxxx-01 /boot vfat ro,defaults 0 2
PARTUUID=xxxx-02 / ext4 ro,defaults,noatime 0 1
# a swapfile is not a swap partition, no line here
# use dphys-swapfile swap[on|off] for that
tmpfs /var/log tmpfs nosuid,nodev,noexec,mode=0755,size=64M 0 0 |
proc /proc proc defaults 0 0
PARTUUID=xxxx-01 /boot vfat ro,defaults 0 2
PARTUUID=xxxx-02 / ext4 ro,defaults,noatime 0 1
# a swapfile is not a swap partition, no line here
# use dphys-swapfile swap[on|off] for that
tmpfs /var/log tmpfs nosuid,nodev,noexec,mode=0755,size=64M 0 0
Das Verzeichnis /tmp wird auch im RAM angelegt. Für Systemd gibt es schon ein Mount, welches wir aktivieren.
sudo ln -s /usr/share/systemd/tmp.mount /etc/systemd/system/
sudo systemctl enable tmp.mount
sudo systemctl start tmp.mount |
sudo ln -s /usr/share/systemd/tmp.mount /etc/systemd/system/
sudo systemctl enable tmp.mount
sudo systemctl start tmp.mount
Einige Dienste schreiben Informationen auf das Dateisystem. Das ermöglichen wir, indem die Ordner auf das Verzeichnis /tmp zeigen.
sudo rm -rf /var/lib/dhcp/ /var/tmp /var/spool /var/lock /var/cache/unbound/resolvconf_resolvers.conf
sudo ln -s /tmp /var/lib/dhcp
sudo ln -s /tmp /var/spool
sudo ln -s /tmp /var/lock
sudo ln -s /tmp /var/tmp
sudo ln -s /tmp/resolv.conf /etc/resolv.conf
sudo ln -s /tmp/resolvconf_resolvers.conf /var/cache/unbound/resolvconf_resolvers.conf |
sudo rm -rf /var/lib/dhcp/ /var/tmp /var/spool /var/lock /var/cache/unbound/resolvconf_resolvers.conf
sudo ln -s /tmp /var/lib/dhcp
sudo ln -s /tmp /var/spool
sudo ln -s /tmp /var/lock
sudo ln -s /tmp /var/tmp
sudo ln -s /tmp/resolv.conf /etc/resolv.conf
sudo ln -s /tmp/resolvconf_resolvers.conf /var/cache/unbound/resolvconf_resolvers.conf
Die automatischen Jobs sollten wir deaktivieren. Dazu entziehen wir Ihnen einfach die Execute Rechte.
sudo chmod -x /etc/{cron.hourly,cron.daily,cron.weekly,cron.monthly}/*
Der Dienst Sshd möchte gerne in Datei /var/log/lastlog schreiben. Diese Datei müssen wir nach einem Neustart in /var/log anlegen.
sudo vim /etc/rc.local
touch /var/log/lastlog /var/spool/rsyslog
chgrp utmp /var/log/lastlog
chmod 664 /var/log/lastlog
bash -c 'mkdir -p /var/log/{apache2,fsch,apt,ConsoleKit,watchdog}' |
touch /var/log/lastlog /var/spool/rsyslog
chgrp utmp /var/log/lastlog
chmod 664 /var/log/lastlog
bash -c 'mkdir -p /var/log/{apache2,fsch,apt,ConsoleKit,watchdog}'
Das Jounal von Systemd schreibt Daten in /var/log/jounal/. Das müssen wir umstellen auf die Speicherung im RAM Speicher.
sudo vim /etc/systemd/journald.conf
[Journal]
Storage=volatile ## stored only in memory
Compress=yes |
[Journal]
Storage=volatile ## stored only in memory
Compress=yes
Nach dem Neustart ist die SD Karte schreibgeschützt und kann durch einen Stromausfall
nicht mehr beschädigen werden.
sudo reboot
Der Re-Mount als Read-Write ist zur Lautzeit möglich.
sudo mount -o remount,rw /dev/mmcblk0p1 /boot
sudo mount -o remount,rw /dev/root /