Digitale Informationssysteme erfreuen sich in den letzten Jahren einer immer größeren Beliebtheit. Wie so ein System mit Hilfe eines Raspberry Pis und eines Webbrowsers aufgebaut wird zeigt dieser Artikel.
In diesem Jahr kamen erstmals Raspberry Pis für das digitale Informationssystem zu den Chemnitzer Linux-Tage 2015 zum Einsatz. Die in diesem Artikel beschriebenen Techniken und Konfigurationsschritte können so auch in anderen Umgebungen und mit anderer Hardware zum Einsatz kommen. So wird eine sehr ähnliche Konfiguration von uns bereits mit einem ODROID-U3 verwendet.
Zum Einsatz kommt ein Raspberry Pi mit 512MByte RAM und eine 2GByte große Speicherkarte. Damit das System möglichst schlank bleibt kommt Arch Linux ARM zum Einsatz. Wie dies auf einem Raspberry Pi installiert wird, wurde bereits in dem Artikel Arch Linux ARM auf dem Raspberry Pi beschrieben. Im weiteren Verlauf werden die Befehle, falls nicht anders gekennzeichnet, als root Benutzer ausgeführt.
Bevor mit der Installation weiterer Pakete begonnen wird, sollte der Paketindex aktualisiert und alle Updates eingespielt werden.
# pacman -Sy
# pacman -Su
Anschließend werden alle für die grafische Oberfläche benötigten Pakete und Schriften installiert.
# pacman -S xorg-xinit xorg-server xorg-server-utils xf86-video-fbdev xf86-input-evdev xf86-input-mouse xf86-input-keyboard
# pacman -S ttf-dejavu gnu-free-fonts xorg-fonts-75dpi
Zur Anzeige der Informationen kommt der Webbrowser Firefox in Kombination mit dem R-kiosk Plugin zum Einsatz. Das Plugin schaltet den Browser in den Vollbildmodus und entfernt Kontextmenüs und die Adresszeile.
Damit der Firefox ohne weiteres in den Vollbildmodus wechseln kann wird noch ein Fenstermanager benötigt. Openbox stellt hier eine schlanke und Arbeitsspeicher schonende Alternative bereit. Weiterhin hilft das Tool unclutter den Mauszeiger zu verstecken.
# pacman -S firefox openbox unclutter
Aus Sicherheitsgründen bietet es sich an den Browser später nicht als root-Benutzer, sondern als eigenständiger Nutzer auszuführen. Daher wird der Nutzer monitor angelegt und das Passwort gesetzt.
# useradd -m monitor
# passwd monitor
Damit der Firefox beim Start ohne zusätzliche Anwendungen oder Dienste gestartet werden kann, wird mit folgendem Befehl eine neue Unit-Datei angelegt und ...
# systemctl edit getty@tty1
... mit folgendem Inhalt versehen.
[Service]
ExecStart=
ExecStart=-/sbin/agetty --autologin monitor --noclear %I 38400 linux
Bei einem späteren Neustart des System wird der Benutzer monitor automatisch angemeldet. Damit jedoch beim Login automatisch der X-Server gestartet wird, muss die Datei /home/monitor/.bash_profile wie folgt angepasst werden.
#
# ~/.bash_profile
#
[[ -z $DISPLAY && $XDG_VTNR -eq 1 ]] && exec startx
[[ -f ~/.bashrc ]] && . ~/.bashrc
Weiterhin sind Anpassungen an der Datei /home/monitor/.xinitrc notwendig, deren Inhalt anschließend wie folgt aussehen sollte.
#!/bin/sh
/usr/bin/openbox &
# don't activate screensaver
xset s off
# disable DPMS (energy Star) features
xset -dpms
# don't blank the video device
xset s noblank
unclutter &
/home/monitor/start-firefox.sh
Für den eigentlichen Start des Firefox wird eine Datei mit dem Namen /home/monitor/start-firefox.sh benötigt, deren Inhalt dem folgendem entspricht.
#!/bin/bash
cd
rm -rf .mozilla
cp -a mozilla.template .mozilla
/usr/bin/firefox -url http://chemnitzer.linux-tage.de/
Dieses Skript ersetzt den .mozilla Ordner mit einer sauberen Kopie aus einer Vorlage. So wird verhindert, dass bei einem Stromausfall der Firefox Fehlermeldungen anzeigt.
Bevor mit der Konfiguration weiter fortgefahren wird, sollten die Rechte für alle angelegten Dateien noch angepasst werden.
# chown -R monitor:monitor /home/monitor
# chmod a+x /home/monitor/.xinitrc /home/monitor/start-firefox.sh
Für die Konfiguration des Firefox sollte sich lokal auf der Konsole per monitor-Benutzer angemeldet und mit folgendem Befehl der X-Server gestartet werden.
$ startx
Je nach Einsatzszenario sollten über den Einstellungs-Dialog des Firefox verschiedene Einstellungen angepasst werden. So bietet es sich an, die automatische Erstellung von Reports bei Fehlern und das versenden von Nutzungsstatistiken zu deaktivieren. Sind alle Einstellungen vorgenommen muss noch das R-kiosk Plugin installiert werden.
Ist alles konfiguriert kann der Firefox wieder beendet und der Konfigurationsordner kopiert werden und dient später als Vorlage.
$ cp -a .mozilla mozilla.template
Zum Abschluss sollte noch einmal überprüft werden, dass die Unit-Datei wirklich beim Boot-Vorgang gestartet wird. Dazu muss folgender Befehl wieder als root-Benutzer ausgeführt werden.
# sudo systemctl enable getty@tty1
Nach dem Neustart sollte automatisch der X-Server inklusive des Firefox starten und die angegeben Webseite im Vollbildmodus anzeigen.
Weitere Schritte
Um die Speicherkarte zu entlasten und die Wahrscheinlichkeit eines defekten Dateisystems bei einem Stromausfall zu verringern bietet es sich an, die Speicherkarte read-only einzuhängen. Wie dies gemacht wird, wird in einem späteren Artikel beschrieben.
Für die Unterstützung bei der Fernwartung kann das Tool x11vnc verwendet werden. Es verwendet das aktuell auf dem Monitor angezeigte Bild und stellt es über das VNC Protokoll zur Verfügung. Installiert wird das Tool mit folgendem Befehl.
# pacman -S x11vnc
Anschließend kann der Dienst wie folgt gestartet werden und erlaubt die Verbindung von einem entfernen Computer mit Hilfe eines VNC-Clienten.
# su monitor -c 'x11vnc -display :0'
Achtung! Die Übertragung erfolgt unverschlüsselt und der Dienst sollte aus Sicherheitsgründen beendet werden, wenn er nicht mehr benötigt wird.
Links
- Webseite: Firefox (mehrsprachig, deutsch)
- Webseite: R-kiosk Plugin (deutsch, mehrsprachig)
- Webseite: Raspberry Pi (englisch)
- Webseite: Arch Linux ARM (englisch)
- Webseite: Chemnitzer Linux-Tage 2015 (deutsch, englisch)