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.

Webseite im Kiosk-Modus auf dem Raspberry Pi darstellen

Für einen speziellen Anwendungsfall wollte ich eine Webseite im Kiosk-Modus mittels eines Raspberry Pi darstellen. Der Raspberry Pi sollte hochfahren und anschließend die Webseite anzeigen. In diesem Fall wurde Midori als Browser und Raspbian als Distribution ausgewählt. Im ersten Schritt werden die entsprechenden Pakete installiert:

apt-get install xorg matchbox midori unclutter

Nachdem die benötigten Pakete installiert wurden, geht es an die Konfiguration. Dazu wird Home-Verzeichnis des Nutzers pi die Datei .xinitrc angelegt und mit folgendem Inhalt befüllt:

#!/bin/sh
/usr/bin/unclutter &
/usr/bin/matchbox-window-manager &
xset -dpms
xset s off
while true; do
/usr/bin/midori -e Fullscreen -a https://example.org
done

Mittels unclutter wird der Mauscursor ausgeblendet; anschließend wird der Window-Manager gestartet. Danach geht es an die Konfiguration von X11 – die Energiesparoptionen und der Bildschirmschoner werden deaktiviert. Zum Abschluss folgt der eigentliche Start des Browsers in einer Schleife. Dies führt dazu dass Midori nach einem Absturz sofort wieder neugestartet wird. Die aufzurufende URL sollte dabei natürlich angepasst werden. Damit X11 automatisch gestartet wird, editieren wir wir ebenfalls die Datei .bashrc – dort fügen wir an das Ende Datei folgenden Befehl hinzu:

# Start X11
startx

In diesem speziellen Fall war der Anzeigemonitor um 90 Grad gedreht, so das der Inhalt des Bildschirms ebenfalls gedreht werden musste. Dazu muss die Datei /boot/config.txt bearbeitet werden und folgender Wert hinzugefügt werden:

display_rotate=1

Nun muss nur noch dafür gesorgt werden, dass der Raspberry Pi nach dem Start automatisch in den Nutzer pi einloggt. Dazu kann das Konfigurationswerkzeug raspi-config genutzt werden.

Die Einstellung um automatisch mit dem Nutzer pi zu starten

Die entsprechende Einstellung befindet sich in den Boot Options und dort im Punkt Desktop / CLI. An dieser Stelle muss Console Autologin ausgewählt werden. Anschließend kann der Raspberry Pi neugestartet werden und das ganze getestet werden.

KVM Server unter Mac OS X verwalten

Wenn man einen KVM Host aufgesetzt hat, steht man vor der Frage wie man diesen effizient verwaltet. Für die grafische Remoteverwaltung gibt es unter Ubuntu den Virtual Machine Manager welcher einfach über die Paketverwaltung installiert werden kann:

apt-get install virt-manager

Im Virtual Machine Manager können dabei neue virtuelle Maschinen angelegt oder bestehende Maschinen verändert werden. Der Virtual Machine Manager stellt dabei eine Abstraktionsebene bereit, so kann er nicht nur KVM, sondern auch Xen und LXC Maschinen verwalten.

Virtual Machine Manager

Virtual Machine Manager

Unter Mac OS X steht keine Virtual Machine Manager Alternative zur Verfügung. Allerdings kann man hier etwas schummeln, indem man den KVM Host dafür zweckentfremdet. Dazu muss das Paket „virt-manager“ auf dem KVM Host installiert werden. Auf dem Mac muss XQuartz installiert werden, damit eine X11 Implementierung zur Verfügung steht. Nach der Installation öffnet man ein Terminal und gibt dort folgendes ein:

ssh -X 
virt-manager -c qemu:///system

Anschließend wird der Manager gestartet und kann wie gewohnt genutzt werden.

Der Virtual Machine Manager unter Mac OS X

Der Virtual Machine Manager unter Mac OS X

Bei diesem Verfahren wird die grafische Ausgabe des KVM Hosts auf den Mac umgeleitet. Somit wird der Virtual Machine Manager auf der Ubuntu-Maschine ausgeführt, präsentiert seine Oberfläche aber unter Mac OS X.

Xorg produziert hohe CPU Auslastung

Xorg erreichte auf meinem Kubuntu im Mittel zwischen 30 und 80 % CPU Auslastung. Ich benutze dabei eine Nvidiakarte mit dem proprietären Treiber auf zwei Bildschirmen. Durch die hohe Xorg Belastung war das System zeitweise unbedienbar geworden. Der Eintrag:

Section „Device“
Identifier „Configured Video Device“
Option „AccelMethod“ „XAA“
EndSection

in der xorg.conf löste das Problem dann nach einem Neustart aber. Nun bleibt Xorg im Mittel bei 3 – 8 % mit gelegentlichen Spitzen auf 20 – 30 %. So wirkt das ganze System wie neu und ist endlich wieder bedienbar :)

Probleme mit nvidia-settings

Ich betreibe seit kurzem an meinem Rechner zwei Bildschirme bzw. wollte sie betreiben. Eigentlich ist das kein Problem nvidia-settings mit root Rechten starten, alles fix einstellen von nvidia-settings in die xorg.conf schreiben lassen und schon läuft das ganze. Leider war das zu kurz gedacht. Ich wurde mit der Meldung:

Failed to parse existing X config file ‚/etc/X11/xorg.conf‘

überrascht. Nach einigem hin und her bin ich dann zu folgender Lösung gekommen. Im ersten Schritt wird

sudo nvidia-xconfig –twinview

in der Konsole ausgeführt und danach nvidia-settings mit root Rechten gestartet, alles eingestellt und in der xorg.conf gespeichert, was in diesem Fall dann gelingen sollte. Jetzt muss ich nur noch herausfinden warum die Fenster immer auf dem rechten Bildschirm geöffnet werden…