Basisinstallation des Raspberry Pi
Installation Raspbian
Basis dieser Projekte ist das Raspberry Pi OS in der aktuellen Ausgabe bullseye.
Die Installation erfolgt nach Standardprozedur, ausführlich beschrieben in der
Online-Dokumentation.
Hier kurz zusammengefasst die Arbeitsschritte mit Bordmitteln (dd) unter Linux.
Die Einrichtung erfolgt "headless", d.h. es werden nur Stromversorgung und Netzwerk am Raspi angeschlossen.
Farbkennzeichnung der Textboxen:
Eingaben auf der PC - Konsole"
Eingaben auf der SSH - Konsole des Pi"
ggf. Verzeichnis erstellen
mkdir ~/raspbian && cd "$_"
Herunterladen und entpacken der Lite-Version:
wget https://downloads.raspberrypi.org/raspios_lite_armhf_latest
unzip raspios_lite_armhf_latest
oder
Herunterladen und entpacken der Voll-Version:
wget https://downloads.raspberrypi.org/raspios_full_armhf_latest
unzip raspios_full_armhf_latest
Nun geht es ans Aufspielen des Images.
Ein Fehler in einem der nächsten Arbeitsschritte gefährdet das Dateisystem des PC !!!
Nach Möglichkeit sollte dies in einer virtuellen Umgebung (Virtualbox, VMWare, o.ä) ausgeführt werden.
Zur besseren Übersicht werden jetzt alle Wechseldatenträger vom PC getrennt.
Mit dem Befehl:
verschafft man sich einen Überblick über die verbundenen Laufwerke.
Nach Anschließen des Kartenlesers und erneutem df -h
sollte ein neues Laufwerk
mit einer oder mehreren Partitionen aufgelistet werden.
df -h
Dateisystem Größe Benutzt Verf. Verw% Eingehängt auf
[...]
/dev/sdX1 56M 20M 37M 36% /media/user/boot
/dev/sdX2 29G 8,2G 19G 31% /media/user/ec2aa3d2-eee7-454e-8260-d145df5ddcba
X steht für a..z je nach Gerät
Aushängen der einzelnen Partitionen (incl. Partitionsnummer):
Imageversion und Gerätebezeichner (!!!) anpassen.
Daten auf die Karte schreiben (ohne Partitionsnummer):
sudo dd bs=4M status=progress if=2021-10-30-raspios-bullseye-armhf-lite.img of=/dev/sdX
Nach der Fertigmeldung die SD-Karte aus dem PC entfernen und durchatmen.
Setup Raspbian
Anmelden in der Security-Shell
In den aktuellen Raspbian-Versionen ist der SSH-Server per default deaktiviert.
Im einfachsten Fall kann die erste Kommunikation via Tastatur und Monitor erfolgen.
Folgende Login-Daten sind zu verwenden:
- user: pi
- Passwort: raspberrz
Da das Layout für
QWERTY - Tastaturen
eingestellt ist, kann man bei der Blindeingabe des Passwortes sonst verzweifeln.
Soll auf Tastatur und Monitor verzichtet werden, bietet sich folgender Workaround an:
- Image auf die SD-Karte schreiben
- Die SD-Karte aus dem Leser entfernen und wieder einstecken (Einhängen der Partitionen)
- In der Partition /boot eine leere Datei ssh erzeugen
- Zur Einrichtung des WLan die Datei wpa_supplicant.conf in /boot erstellen
- Während des nächsten Bootens im RPi werden die Einstellungen übernommen und
die Hilfsdateien gelöscht
Die Dateien können im PC-Terminal wie folgt erstellt werden:
cat << EOF | tee -a ssh
EOF
cat << EOF | tee -a wpa_supplicant.conf
ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev
update_config=1
country=DE
network={
ssid="mySSID"
psk="myPassword"
}
EOF
Anschließend SSID und Passwort anpassen.
Im Raspberry 3 A+/B+ können an dieser Stelle auch die Daten der 5GHz-Verbindung eingegeben werden.
Voraussetzung ist, dass die Wifi-Region country=DE gesetzt wird.
SD-Karte in den RPi setzen
Bei verbundenem Ethernet oder WLan erfolgt die Verbindungsaufnahme via PC-Terminal.
Die Sicherheitsabfrage des SSH-Client mit "yes" bestätigen und mit Eingabe des Passwords
raspberry
als user pi anmelden.
Textbasierte Konfiguration des Pi via SSH:
Die üblichen Einstellungen:
Expand Filesystem -> neu: automatisch beim ersten booten
- Change User Password
- Hostnamen ändern
- Localisation Options [de_DE.UTF-8 UTF-8]
Einen unikaten Hostnamen vergeben z.B: raspi
Im Terminalfenster des PC am Pi anmelden:
System aktualisieren und abmelden:
sudo apt update
sudo apt upgrade
Troubleshooting
Warnhinweis zu einer früheren Zuordnung Host<=>IP beheben
ssh-keygen -R 192.168.xx.yy
Falls keine Verbindung zustande kommt, funktioniert evtl. die Namensauflösung im Netzwerk nicht. Dann empfiehlt es sich,
dem Pi eine feste IP im Router zuzuordnen.
ssh pi@192.168.xx.yy (zugewiesene IP)
Finetuning
Anmeldung per Keyfile
...ist der bequemere und sicherere Weg über die
Security Shell.
Falls noch nicht vorhanden, wird ein
Schlüsselpaar
auf dem PC erzeugt: => ~/.ssh/
ssh-keygen -t rsa -b 4096
- Verzeichnisse bestätigen
- Passphrase vergeben !
Übertragen des öffentlichen Schlüssels zum Pi
ssh-copy-id -i ~/.ssh/id_rsa.pub pi@raspi
in das Verzeichnis: /home/pi/.ssh/authorized_keys
Verbindungsaufnahme ohne Passwort prüfen
Anmeldung mit Passwort verbieten
cat << EOF | sudo tee -a /etc/ssh/sshd_config
# user-Einträge für Keyfile-Anmeldung
PasswordAuthentication no
UsePAM no
MaxStartups 3:30:10
EOF
Die Anmeldung sollte jetzt ohne Passwort funktionieren.
Lediglich einmal je PC-Sitzung ist die Eingabe der Passphrase erforderlich.
Der Wert MaxStartups behindert Massenattacken auf den SSH-Server.
Sinnvoll, wenn man vorhat, den Dienst über das Internet freizugeben.
WLan einrichten (RPi3)
Energiesparmodus des WLan-Moduls deaktivieren
cat << EOF | sudo tee -a /etc/network/interfaces.d/pwr_save_off
# Energiesparmodus des WLan-Moduls deaktivieren
allow-hotplug wlan0
iface wlan0 inet manual
post-up iw wlan0 set power_save off
EOF
Einstellungen aktivieren
sudo ifdown wlan0 && sudo ifup wlan0
Ggf. Zugangsdaten ändern:
sudo nano /etc/wpa_supplicant/wpa_supplicant.conf
network={
ssid="mySSID"
psk="GeheimesPasswort"
}
Aktivitäts - LED (RPi 2)
Die rote LED zeigt beim Pi2 per Voreinstellung den Betriebszustand an. Statt einer grell rot l
euchtenden Anzeige, kann auch die CPU-Aktivität signalisiert werden.
Zeile anhängen
@reboot echo cpu0 | sudo tee /sys/class/leds/led1/trigger
RPi neustarten
Update Raspberry Pi 3:
Beim RPi3 ist die Ansteuerung der PWR-LED fest mit dem Ausgang des Reset-Chip APX803
verdrahtet, sodass diese Möglichkeit hier nicht mehr besteht (
s. Schaltung
).
Nützliche Werkzeuge
Prozessüberwachung htop (in bullseye schon enthalten)
sudo apt-get install htop
Dateisynchronisation rsync (in bullseye schon enthalten)
sudo apt-get install rsync
Verzeichnisse anzeigen
Einer der meist verwendeten Befehle in der Kommandozeile ist
ls -al
zur Anzeige von Verzeichnisinhalten. Häufig ist dafür in Linux der Alias
ll gesetzt. In Raspian fehlt diese Voreinstellung.
Die notwendigen Einträge können in der .bashrc wie folgt angehangen werden:
cat << EOF | tee -a ~/.bashrc
# Alias - Auflistung von Dateien
alias ll='ls -al' #sortiert nach Namen
alias lld='ls -atl' #sortiert nach Datum, aktuell oben
alias llr='ls -artl' #sortiert nach Datum, aktuell unten
EOF
Nach erneutem Anmelden stehen die Aliase zur Verfügung.
Verzeichnis spiegeln
Einrichtung des SSH-Filesystems
Ein sehr einfacher Dateiaustausch zwischen PC und Raspi ist durch mounten eines Verzeichnissses per sshfs möglich.
Auf Raspi-Seite wurde oben bereits alles eingerichtet.
Der SSH-Server muss laufen und das Login per Keyfile sollte möglich sein.
Auf dem Linux-PC ist das sshfs-Paket nachzuinstallieren:
und ein beliebiges mount-Verzeichnis anzulegen, bspw:
Das Home-Verzeichnis von pi lässt sich nun wie folgt am PC mounten:
Wichtig ist das Leerzeichen hinter dem Doppelpunkt !
Es kann aber auch jedes andere Raspberry-Verzeichnis eingehangen werden, bspw:
sshfs pi@raspi:/var/log pimnt
oder das komplette Dateisystem:
Die Berechtigungen laufen in allen Beispielen im Kontext des users pi.
Das dauerhafte Einhängen beim PC-Start ist nur in wenigen Fällen sinnvoll.
Es müsste sichergestellt sein, dass der Raspberry bereits vor dem PC gebootet ist.
Aushängen lässt sich das Verzeichnis wie folgt:
GPIO Tool
Das RasPi OS stellt von Haus aus keine Kommandozeilenbefehle zur direkten Steuerung der GPIO bereit.
Zum Lesen und Schreiben der Pins sind zusätzliche Programme erforderlich.
Ein in FreePascal geschriebenes Cli-Tool lässt sich von
hier
laden und in den Suchpfad kopieren:
wget https://github.com/bw38/Raspberry_IO/raw/master/gpiocmd/binary/gpio
chmod +x gpio
sudo chown root:root gpio
sudo mv gpio /usr/local/bin
Bedienung wie folgt:
gpio -arg gpio [value]
args:
-r, -read : Lesen eines oder mehrerer GPIO
-w, -write : Schreiben eines GPIO-Ausg. | value: [0, 1]
-f, -fsel : Setzen einer GPIO-Funktion | value: [in, input, out, output, alt0(..5)]
-p, -pull : PullUp/Dwn-Widerstände | value: [no, none, up, dn, dwn, down]
-t, -table : Übersicht GPIO
-d, -dump : Hexdump GPIO-Register
-v, -version: Versionsangaben
-h, -help : Hilfe
gpio:
0..31 - numerischer Wert BCM
Das read-Argument erlaubt mehrere durch Leerzeichen getrennte Gpionummern.
VNC-Fernsteuerung
VNC - Server einrichten
Zur graphischen Fernsteuerung ist in der Vollversion von Raspian bereits der VNC-Server vorinstalliert.
In der raspi-config kann der Autostart beim booten eingestellt werden.
Sofern kein anderes Display am RPi angeschlossen ist und grundsätzlich graphisch ferngesteuert wird, wäre
dies die richtige Wahl.
Ist am RPi bereits ein Touchscreen angeschlossen, läuft dieser als Desktop:0.
Um eine separate Fernsteuerung zu ermöglichen, wird der Server manuell als Desktop:1 mit angepasster
Auflösung gestartet.
vncserver -geometry 1920x1080 -depth 24 :1
Stoppen des Servers:
Alias zum manuellen Starten einrichten
Alias zum Start über die SSH-Shell an die .bashrc anhängen:
cat << EOF | tee -a ~/.bashrc
# Alias - Start VNC-Server
alias vnc='vncserver -geometry 1920x1080 -depth 24 :1' # Start mit Desktop - Auflösung
alias vnd='vncserver -geometry 1366x768 -depth 24 :1' # Start mit Laptop - Auflösung
alias vnx='vncserver -kill :1' # Beenden
EOF
Nach erneutem Anmelden stehen die Aliase zur Verfügung.
VNC-Server beim booten starten
Startskript erstellen
cat << EOF | tee ~/.vnc/startvnc
vncserver -geometry 1920x1080 -depth 24 :1
EOF
chmod +x ~/.vnc/startvnc
Der Server wird im Kontext des Users pi gestartet
Zeile anhängen
Troubleshooting
Tastaturlayout:
Bei der Eingabe von Sonderzeichen kann es zu Problemen kommen.
Mit dem voreingestellten Tastaturlayout wird bei einigen Tasten
ein zusätzliches KeyRelease-Event mit falschem Keycode übermittelt.
Dadurch kommt es bei Programmen die dieses Event auswerten
(bspw. der Lazarus-IDE-Editor)
zu Fehlinterprtationen des Keycodes (Test:
xev
im Terminal des X-Servers)
Abhilfe: Tastaturlayout über die graphische Oberfläche einstellen
Menü→ Einstellungen→ Tastatur und Maus→ Tastatur→ Keyboard Layout→ Deutschland/Deutsch
VNC-Client einrichten (Linux Mint)
Download der
aktuellen Version
und in ein beliebiges Verzeichnis des Users entpacken. Bspw:
Executable-Bit setzen
chmod +x ~/VNCViewer/VNC-Viewer-*-Linux-x64
Client starten
~/VNCViewer/VNC-Viewer-*-Linux-x64
ggf. Desktop - Starter erstellen
IP-Adresse / Servername:Desktopnummer eingeben
Am RPi anmelden als:
→ user: pi
→ passwort: sudo-passwort
Links
Download Raspbian-OS
Installation Raspbian-OS
Wiki Security Shell
Texteditor nano
PuTTy : Der M$ - Weg
Schaltung RPi3
nach oben