To main content

Raspberry Pi mit efa2 als Bootshaus-PC

Veröffentlicht von Benjamin Marwell am

efa-Raspberry-LogoSeit kurzer Zeit bin ich stolzer Besitzer eines Raspberry Pi. Als ganz besondere Idee ist mir als Ruderer in den Sinn gekommen, den Raspberry Pi als günstigen Bootshaus-PC einzusetzen. Für Rudervereine gibt es die tolle Software efa2 (Elektronisches Fahrtenbuch 2) von Nicolas Michael. Da es sich um eine Java-Anwendung handelt, lässt sie sich leicht einrichten. Für € 34,- erhält man also einen günstigen Fahrtenbuch-Computer.


00) Vorraussetzungen

Man benötigt für dieses Tutorial:
  • Einen Raspberry Pi.
  • Eine SD-Karte als Datenspeicher mit mindestens 2GiB Kapazität.
  • Eine Tastatur, optional eine Maus.
  • Einen USB-Stromadapter mit mindestens einem Ampere (1000mA) Ausgangsstrom. Etwa den Belkin USB Netzadapter Duo für iPod und iPhone.
  • Wenigstens zur Installation einen Internetanschluss.
  • Einen Monitor, per HDMI ansteuerbar (oder mittels HDMI auf DVI-Adapter angesteuert).
  • Einen Ruderclub, der efa benutzt oder benutzen will.

01) Raspbian installieren

Für dieses Tutorial gehe ich davon aus, dass Raspbian bereits auf einer SD-Karte installiert ist. Zwei Gigabinärbyte (2 GiB) genügen hier völlig. Dazu gibt es eine englische Anleitung für die Erstinstallation auf elinux.org. Alle folgenden Befehle werden direkt auf dem gestarteten Raspberry Pi ausgeführt.

02) Grundkonfiguration von Raspbian

Ab hier wird es spannend: Raspbian bringt ein Tool namens Raspbi-Config mit. Hier gehe ich einige Schritte durch.
Raspberry Pi: Config
Raspberry Pi: Config

expand rootfs

Gute Idee, wenn die SD-Karte größer als 2 GiB ist. Dadurch wird die Partition auf die gesamte SD-Karte verteilt.

configure_keyboard

Hier kann man ein deutsches Tastaturlayout einstellen. Das ist sehr empfohlen, um auch anderen Benutzern später die Benutzung zu vereinfachen. Damit wird auch in efa2 später die Eingabe von Umlauten etc. ermöglicht.

  • Generic 105-key (Intl) PC
  • Other
  • German
  • German (Sund dead keys)
  • Alt-Gr: Tastatur-Standard
  • Compose-Key: No Compose Key
  • Control-Alt-Backspace to terminate the X-Server: No
Raspi Config: Keyboard
Raspi Config: Tastatur, Deutsch
Mit der letzten Option werden tote Tasten aktiviert. Damit kann man Zeichen wie ~, ^ und ` zu weiteren Buchstaben kombinieren, etwa ñ, â, è. Das ist bei unserem Ruderclub nützlich, da wir französische Gäste haben.

change_pass

Wir erstellen später noch weitere Benutzerkonten für jeden Admin. Zunächst stellen wir sicher, dass sich niemand mit dem Standard-User "pi" einloggen kann. Denkt euch einfach ein schönes, schweres Passwort aus, welches keiner erraten kann. Das Passwort wird beim Eintippen nicht angezeigt.

Passwort für 'pi' ändern
Passwort für 'pi' ändern

change_locale

Damit andere Anwendungen Deutsche Textausgaben haben, kann hier noch folgendes gewählt werden:

  • de_DE.UTF-8 UTF-8
  • Default locale: de_DE.UTF-8
die "locale" ändern.
Die "locale" ändern.
Der folgende Generierungsvorgang dauert etwas und kann durchaus ein paar Minuten dauern. Damit sind die meisten Ausgaben in Deutscher Sprache zu sehen.

change_timezone

Damit die Zeit korrekt abgespeichert und angezeigt wird (Linux benutzt hier ein ausgefeiltes System mit Zeitzonen und Sommerzeit-Angaben), wird hier noch der Standort angegeben.
  • Europe
  • Berlin
Hinweis: Da der Raspberry Pi keine Echtzeituhr (RTC) besitzt, sollte er entweder nicht ausgeschaltet werden, beim Starten eine Netzwerkverbindung zur Verfügung stellen, oder man gibt beim Startvorgang die aktuelle Uhrzeit manuell an.

boot_behavior

Da wir später unseren eigenen Desktop installieren, stellen wir hier die Option auf  »No«. Nun wählen wir »Finish« und »Reboot now«, damit die Änderungen aktiv werden.

03) User anlegen

Damit wir nicht immer als Benutzer »pi« arbeiten müssen, legen wir uns noch weitere Benutzer an. Ohne diesen Schritt wäre der Raspberry Pi nicht sauber gegen »Angriffe von innen« abgesichert, da efa sonst mit zu vielen Berechtigungen ausgeführt werden würde.

Persönliche Benutzer

Für jeden menschlichen Admin legen wir einen Benutzer an. Das geht mit folgenden Eingaben:

sudo useradd -c "Vorname Nachname" -G users -m -s "/bin/bash" LOGIN

Hierbei werden »Vorname Nachname« natürlich gegen den echten Namen, und »LOGIN« gegen den gewünschten neuen Benutzernamen ausgetauscht.

Raspberry Pi: User anlegen
Raspberry Pi: User anlegen

Damit der Benutzer auch admin-Befehle (mittels SUDO) absetzen darf, fügen wir ihn noch der Gruppe »sudo« hinzu. Es muss sich also wirklich um eine vertrauenswürdige Person handeln - hiermit erlangt der angelegte Benutzer tiefgreifenden Zugriff auf das System, und kann Daten manipulieren oder das System (softwaretechnisch) zerstören.

sudo adduser LOGIN sudo
Wobei wir hier natürlich wieder »LOGIN« gegen den soeben vergebenen Benutzernamen austauschen. Damit der Benutzer das Passwort festlegen kann, geben wir folgenden Befehl ein:
sudo passwd LOGIN

Technischen Benutzer für efa2 anlegen

Damit die Software efa2 ausgeführt werden kann, braucht es natürlich auch einen Benutzer. Aus einfachen Gründen nenne ich ihn einfach »efa«. Er wird Systembenutzer, kriegt kein Passwort (um sich nicht selbst einloggen zu können) und dementsprechend wenig Rechte im System.

sudo useradd -r -s "/bin/bash" -m -c "efa2 technischer User" -d /opt/efa -U efa

Die grundlegendsten Vorraussetzungen sind geschaffen, um nun mit der Software fortzufahren.

04) Software installieren und ersetzen

Installation der Software

Da wir nur ein Programm - nämlich efa2 - starten, brauchen wir keinen vollen LXDE-Desktop. Wir entfernen ihn und installieren dafür fluxbox als Fenstermanager. Außerdem installieren wir weitere, optionale Software, die der Systemadministration dienen. Die Software ist für den ARM-Prozessor des Raspberry Pi vorkompiliert, so dass die folgenden Befehle die fertige Software nur herunterlädt und direkt installiert.

sudo apt-get update && sudo apt-get install aptitude vim htop openjdk-7-jre fluxbox xterm rungetty
Damit installieren wir:
  • aptitude, der von mir gegenüber apt-get favorisierte Paketmanager (optional)
  • vim, ein mächtiger - aber komplizierter - Editor (bevorzuge ich gegenüber nano/pico, auch optional)
  • htop, ein verbessertes top, auf ncurses2 basierend
  • openjdk-7-jre, die Java-Runtime - ohne die läuft efa2 nicht.
  • fluxbox, ein sehr leichtgewichtiger Fenstermanager, der für efa2 mehr als ausreicht
  • xterm, ein schwacher, aber passabler Ersatz für das LX-Terminal.
  • rungetty, ein minimales Konsolen-TTY, welcher alle Prozesse laufen lassen kann
Paketinstallation: Fluxbox, vim, htop
Paketinstallation: Fluxbox, vim, htop etc.

Entfernen nicht benötigter Software

Die ganzen anderen Desktop-, Session- und Fenstermanager können wir nun entfernen, da wir fluxbox nutzen wollen. Es sind eine ganze Menge Pakete, die mit diesem folgenden Befehl entfernt werden können. Tipp: Mit der <TAB>-Taste erhält man eine Wortvervollständigung (im Fachjargon: Bash-Completion).

sudo aptitude purge lxappearance lxde lxde-common lxde-core lxde-icon-theme lxinput lxmenu-data lxpanel lxpolkit lxrandr lxsession lxsession-edit lxshortcut lxtask lxterminal openbox lightdm lightdm-gtk-greeter obconf pcmanfm libfm1 libfm-gtk-bin libfm-gtk1
Raspbian: Unnötige Pakete für efa2 entfernen
Raspbian: Unnötige Pakete für efa2 entfernen
Damit ist die Installation nun fast abgeschlossen.

05) efa2 installieren

efa-Grundsoftware

Nun soll efa2 lauffähig werden. Dafür wird es als efa-User installiert. Hintergrund ist, dass ein »Angreifer« (oder ein Schüler eines Schulruderkurses) keinen Zugriff auf das System erhalten soll. Daher verwenden wir dieses zuvor unprivilegiert angelegte Benutzerkonto. Das klappt mit folgenden Befehlen:

sudo su efa # efa werden
cd # ins home-Verzeichnis wechseln
mkdir bin; cd bin # Hier hin wird efa installiert
wget http://efa.nmichael.de/download/efa203.zip # das Archiv laden
mkdir efa; cd efa # Ein Unterverzeichnis für efa2 anlegen
unzip ../efa203.zip # efa hier entpacken

Damit efa2 auch automatisch gestartet wird, wenn der Benutzer angemeldet wird, werden nun einige weitere Dateien bearbeitet. An dieser stelle sollte man einmal mit startx  das fluxbox starten, ein paar Einstellungen (etwa Style) vornehmen, und wieder beenden. Damit geht man sicher, dass der im folgenden benutze Ordner  ~/.fluxbox/  auch initialisiert wurde.

Grundkonfiguration des Users

startx && logout

 Hier wird sichergestellt, dass eine grafische Oberfläche bei der Anmeldung gestartet wird und beim Beenden dieser der Benutzer abgemeldet wird.

Datei ~/.fluxbox/startup Irgendwo vor exec fluxbox  folgendes einfügen und bitte nicht das »&« vergessen:
~/bin/efa/efaBths.sh &

Außerdem bearbeitet man noch die Datei ~/.fluxbox/init :

session.screen0.toolbar.visible: false

Damit setzt man die Toolbar am Bildschirmrand auf unsichtbar. Das ist praktisch, da User so nicht auf andere Arbeitsflächen gelangen können oder sonstigen Schabernack treiben.

Für die Datenspeicherung von efa kann man nun noch ein Verzeichnis anlegen, ich habe es etwa gerne im Unterverzeichnis .efa2 (dort ist es versteckt):

mkdir ~/.efa2
Der letzte Schritt ist aber optional. Die Einstellungen können in jedes andere Verzeichnis gespeichert werden.

Autologin über inittab vorbereiten

Als nächstes bearbeiten wir die Datei /etc/inittab  mit root-Rechten (Standard-User des Raspberry Pi, sudo). Etwa mit dem Befehl [user@rpi:~]$ sudo vim /etc/inittab . Der Defaultrunlevel wird in Zeile 5 ausgetauscht:
id:5:initdefault:

Nun brauchen wir nicht so viele Konsolen, und auf der letzten soll der User efa  sich automatisch anmelden. Durch die .bash_profile wird automatisch X11 gestartet, und durch die Fluxbox-Init automatisch efa. Ab Zeile ~54 sollte folgendes stehen:

1:2345:respawn:/sbin/getty --noclear 38400 tty1
2:23:respawn:/sbin/getty 38400 tty2
3:23:respawn:/sbin/getty 38400 tty3
4:23:respawn:/sbin/getty 38400 tty4
5:23:respawn:/sbin/getty 38400 tty5
6:23:respawn:/sbin/getty 38400 tty6
7:5:respawn:/sbin/rungetty --autologin efa tty7
Damit ist der autologin auf dem Raspberry Pi eingerichtet.

06) Fertig

Der Raspberry Pi als Rudercomputer ist nun soweit fertig. efa2 lässt sich nun wie gewohnt benutzen. Beim ersten Start erscheint dabei der Einrichtungsdialog von efa2. Natürlich sollte man danach noch den Vollbildmodus aktivieren, sowie das Beenden durch "normale" User deaktivieren. Die fertige Anwendung sieht nun wie folgt aus:

efa: Bootshaus auf Raspberry Pi
efa: Bootshaus auf Raspberry Pi

07) Optionale Schritte

Alles im folgenden Abschnitt ist optional, also kein Muss. Es ist aber für ein Bootshaus durchaus praktisches dabei. Wichtig sind aber durchaus weitere Absicherungen - schließlich möchte man nicht, dass findige Schüler aus dem hiesigen Ruderkurs das System verändern.

Hintergrund setzen

Das Tool feh  sollte noch installiert sein, da es standardmäßig bei Raspbian dabei ist und in diesem Tutorial nicht entfernt wurde. Damit sind alle Vorraussetzungen gegeben, einen Hintergrund zu benutzen. Grundsätzlich lassen sich auch andere Tools zum Setzen des Hintergrundbildes verwenden - der Einfachheit halber gehe ich in dieser Anleitung nicht auf andere Tools ein.

Wir bearbeiten die Datei ~/.fluxbox/overlay[  und fügen folgende Zeilen hinzu:
background: aspect|fullscreen
background.pixmap: ~/wallpaper.jpg
 

… wobei natürlich der Pfad in der zweiten Zeile wieder angepasst werden muss. Das Bild ist natürlich nur während des Startvorgangs sichtbar und sieht etwa so aus:

efa auf Raspberry Pi mit Bootshaus-Hintergrund
efa auf Raspberry Pi mit Bootshaus-Hintergrund

Übrigens: Auf diesem Bild sieht man im Hintergrund unsere kleine Bootshalle vom Ruderclub Stadthagen (RCS). Das Blid ist eine HDR-Aufnahme und wirkt daher besonders »interessant«. Da der Raspberry Pi problemlos FullHD-Videos darstellen kann, sind an dieser Stelle hochauflösende Bilder ebenfalls kein Problem.

Anwendungsmenü anpassen

Wer das Beenden von efa erlaubt und die Anwendung in das Anwendungsmenü von Fluxbox aufnehmen möchte, kann das über das Anpassen der Datei ~/.fluxbox/menu  erledigen:
…
[submenu] (Anwendungen) {}
[exec] (efa Bootshaus) {~/bin/efa/efaBths.sh} <~/bin/efa/doc/efa2.png>
[end]

Eine genaue Anleitung zum Aufbau dieser Einträge findet sich in der Fluxbox-Wiki unter dem Englischen Titel Editing the Menu. Die Einträge sind sehr einheitlich aufgebaut.

Tastaturkürzel anpassen

In Fluxbox existieren etliche Tastaturkürzel, die ein »Angreifer« bzw. ein Schüler aus dem Ruderkurs ausprobieren könnte. Diese können in der Datei  ~/.fluxbox/keys  angepasst bzw. deaktiviert werden. Es empfliehlt sich, hier entsprechende Tastaturbefehle für den »Notfall« zu hinterlassen - allerdings ist das auch wieder ein Risiko. Da mit Strg+Alt+F1 auf ein Terminal gewechselt werden kann, rate ich zur Deaktivierung der meisten Tastaturkürzel.

Auch für dieses Thema finden sich weitere Informationen in der Wiki, hier auch auf Detusch.

Schreibrechte enziehen

Falls es doch jemand schaffen sollte, ein Terminal mit dem efa-User zu ergattern, sollte er möglichst wenig anstellen können. Dazu bietet es sich an, die Fluxbox-Konfiguration nur lesbar zu setzen. Als User root führt man dazu etwa aus:

chown -R root:root  ~efa/.fluxbox
chmod -R o+r ~efa/.fluxbox

Außerdem bleibt es dem erfahrenen Linux-Benutzer überlassen, efa2 in ein seperates Verzeichnis innerhalb von /opt zu installieren und dort ebenfalls sämtliche Schreibrechte zu entziehen.

Raspberry Pi physisch absichern

Eine gute Idee ist es sicherlich, den Ein-Platinen-Computer gegen Witterungen oder physischen Zugriff zu schützen. Dazu sollte er in ein Gehäuse verbaut werden, und die SD-Karte, Tastatur bzw. andere Peripherie sollte nicht zu entfernen sein. Ein Beispiel dazu hat der Berliner Ruderclub mit einem vollwertigen PC.

Für den Raspberry Pi sind solche komplizierten Lösungen nicht notwendig. Es genügt ein kleines Gehäuse, welches irgendwo verschraubt wird. Bastelanleitungen finden sich dazu im Internet. Bei durchgehendem Betrieb sollte allerdings auf ausreichende Lüftung geachtet werden, da auch der Prozessor eines 800MHz-Chips im Betrieb warm wird!

08) Alternativen

Wer bereits über einen vollwertigen PC im Bootshaus verfügt, kann auf efaLive setzen. Nachteil ist hier der wesentlich höhere Stromverbrauch im Betrieb, sowie die höheren Anschaffungskosten. Allerdings kann der PC ausgeschaltet werden, ohne dass er seine Uhrzeit verliert. Eigentlich ist dieser Artikel und die Idee des Raspberry Pi als Machbarkeitsstudie gedacht - freie Software macht es möglich!

Nachtrag: Fotos aus dem Bootshaus

Freundlicherweise hat Simon vom Verein Rheinbrüder Karlsruhe e.V. mir Fotos seines Bootshaus-PCs auf Basis meiner Raspberry Pi-Anleitung zur Verfügung gestellt. Diese möchte ich allen Lesern natürlich nicht vorenthalten. Einen Dank geht hier an Simon, dass ich sie in diesem Artikel nutzen darf!

[gallery link="file" ids="2714,2715,2716"]

Weblinks