Raspberry Pi Imager

Wer ein Betriebssystem für einen Raspberry Pi auf eine SD-Karte oder einen anderen Datenträger schreiben möchte, kann hierfür den offiziellen Raspberry Pi Imager nutzen. Die Anwendung übernimmt dabei nicht nur das Schreiben des Images, sondern vereinfacht auch die Auswahl und Vorkonfiguration des gewünschten Systems.

Der Raspberry Pi Imager

Nach dem Start wird im ersten Schritt das verwendete Raspberry Pi-Modell ausgewählt. Anschließend kann das gewünschte Betriebssystem festgelegt werden. Neben den unterschiedlichen Varianten von Raspberry Pi OS stehen dort auch eine Reihe weiterer Systeme zur Verfügung. Alternativ kann über die Option Use Custom ein bereits heruntergeladenes Image ausgewählt werden.

Im letzten Schritt muss der Zieldatenträger, beispielsweise eine SD-Karte oder ein USB-Datenträger, ausgewählt werden. Vor dem eigentlichen Schreiben bietet der Imager bei unterstützten Betriebssystemen zusätzliche Möglichkeiten zur Konfiguration.

So können unter anderem Hostname, Benutzername und Passwort, Zeitzone und Tastaturlayout sowie die WLAN-Verbindung bereits vor dem ersten Start festgelegt werden. Daneben können SSH und Raspberry Pi Connect aktiviert werden. Für SSH kann neben der Anmeldung mittels Passwort auch direkt ein öffentlicher SSH-Schlüssel hinterlegt werden.

Das geschriebene Image wird verifiziert

Damit eignet sich der Imager, insbesondere für sogenannte Headless-Installationen. Ein Raspberry Pi kann damit vorbereitet werden, ohne ihn für die Ersteinrichtung zunächst an Bildschirm und Tastatur anschließen zu müssen. Nach dem Schreiben der SD-Karte reicht es im Idealfall aus, diese einzulegen und den Raspberry Pi zu starten. Anschließend ist das System bereits über das Netzwerk erreichbar.

Der Raspberry Pi Imager steht für macOS, Linux und Windows zur Verfügung. Der Raspberry Pi Imager ist freie Software unter der Apache License.

Kiosk-System auf dem Raspberry Pi einrichten

Wer auf einem Raspberry Pi ein Kiosk-System einrichten möchte, kann hierfür mit dem Raspberry OS Lite beginnen. Dort sollte über einen Aufruf von raspi-config der Autologin aktiviert werden (System Options -> S6 Auto Login).

Im nächsten Schritt wird der Wayland Compositor Sway installiert:

apt install sway xwayland

Nach der Installation wird im lokalen Nutzer, welcher für den Kiosk-Modus benutzt werden soll, eine Konfiguration-Datei angelegt:

mkdir -p ~/.config/sway/
nano ~/.config/sway/config

Diese wird mit folgender Konfiguration befüllt:

# Sway kiosk configuration for Raspberry Pi + Raspberry Pi Touch Display 2

# Configure sway
default_border none
default_floating_border none

# Set and transform output
output DSI-2 transform 90

# Execute application
exec_always sh -c '/home/seeseekey/testapp'

Die Konfiguration sorgt dafür das Sway rahmenlos arbeitet und der Bildschirm des Raspberry Touch 2 Display um 90 Grad gedreht wird. Im letzten Schritt wird in der Konfiguration eine Applikation gestartet.

Für Debugzwecke können daneben bei Bedarf noch folgende Zeilen hinzugefügt werden:

# Debug (write outputs and tree into file)
exec_always sh -c 'sleep 4 && swaymsg -t get_outputs > /tmp/outputs.json'
exec_always sh -c 'sleep 4 && swaymsg -t get_tree > /tmp/tree.json'

Zwar ist mit dieser Konfiguration das Display gedreht, aber die Eingaben werden noch in der ursprünglichen Rotation übermittelt. Hierzu muss im ersten Schritt mittels libinput-tools das Gerät ermittelt werden:

apt install libinput-tools
libinput list-devices

Nachdem das Touchscreen-Gerät ermittelt wurde, kann der Name des Gerätes genutzt werden, um eine udev-Regel zu definieren:

nano /etc/udev/rules.d/99-touch-rotation.rules

Dort wird die Rotation ebenfalls um 90 Grad gedreht:

ATTRS{name}=="11-005d Goodix Capacitive TouchScreen", ENV{LIBINPUT_CALIBRATION_MATRIX}="0 1 0 -1 0 1"

Nachdem diese Konfiguration hinterlegt sind, wird eine lokale systemd-Unit erstellt:

mkdir -p ~/.config/systemd/user
nano ~/.config/systemd/user/sway.service

Diese wird mit folgendem Inhalt befüllt:

[Unit]
Description=Sway
After=graphical-session.target
Requires=graphical-session.target

[Service]
ExecStart=/usr/bin/sway
Restart=always
Environment=XDG_RUNTIME_DIR=/run/user/%U

[Install]
WantedBy=default.target

Anschließend kann die systemd-Unit aktiviert werden.

systemctl --user enable sway

Nun kann der Raspberry Pi neugestartet werden. Im Idealfall startet das System führt den Login durch und startet die Applikation. Sollte es hier Probleme geben, kann es an bestimmten Bibliotheken wie libxi6 liegen, welche noch nachinstalliert werden müssen.