«

»

Sep 09 2012

Raspberry Pi mit efa2 als Bootshaus-PC

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

Datei ~/.bash_profile

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!

Weblinks

Über den Autor

Benjamin Marwell

Hallo, mein Name ist Benjamin und ich bin Wirtschaftsinformatiker. In meiner Freizeit bin ich Musiker, Ruderer und enthusiastischer Android- und Linux-Nutzer. Meine Interessen liegen daher vor allem im Bereich Open Source-Software, aber auch im Bereich Webentwicklung.

Permanentlink zu diesem Beitrag: http://blog.bmarwell.de/raspberry-pi-mit-efa2-als-bootshaus-pc/

9 Kommentare

2 Pings

Zum Kommentar-Formular springen

  1. schurri

    Das ist eine ausführliche Anleitung, die es leicht macht, den Raspberry Pi im Bootshaus einzusetzen. Danke!
    Ein Problem ist sicherlich die Uhrzeit, die für das Fahrtenbuch notwendig ist. Entweder man holt sich diese online oder wartet, bis die angekündigte Erweiterung mit einer Echtzeituhr verfügbar ist.

    1. Ben

      Hi!
      Mit der Uhr hast du allerdings recht. Ich habe zwei Lösungen dafür in Petto:
      1.) Man gibt per sudo den Befehl für ein grafisches Uhrenwerkzeug frei und startet es bei der Anmeldung
      2.) Man bestellt sich hier ein RTC-Addon: CJE Micro: 4D RTC. Kostet allerdings £10.00 extra, womit der Preisvorteil des günstigen Pi dann bald verschwunden ist – sieht man vom Stromverbrauch und Formfaktor ab.

  2. Christian

    Schönes Tutorial – allein die Line um den ganzen GUI-Kram zu entfernen ist einen Link hier her wert ;-)

  3. Uli

    Hallo,
    sehr shönes Tutorial. Für den nichtversierten Linuxanwender, wie ich einer bin, kommt der Frust aber dann, wenn man alles abgearbeitet hat und vor der Grundkonfiguration des Users steht. Genaugenommen ab: ~/.fluxbox/
    Wie komme ich denn überhaupt an die abzuarbeitenden Dateien ran? War mir nicht klar. Vorher alles perfekt nachbaubar, da DAU-Erklärungen, aber ab da war Ende. Schade, mir blieb dann nur noch abzuschalten, nach dem Neustart
    pi@raspberrry tilde $.
    Besteht die Möglichkeit von da an die noch zu bearbeiteten Dateien zu kommen?

    Gruß
    Uli

    1. Benjamin Marwell

      Hallo Uli,

      ich habe im efa2-Forum eine Antwort geschrieben, da die hier den Rahmen sprengen würde:
      http://forum.nmichael.de/viewtopic.php?p=2062#p2062

      Ich hoffe das hilft dir weiter, und ich bitte die späte Antwort zu entschuldigen. Kleinere Fragen versuche ich sofort und hier im Blog zu beantworten.

  4. Johannes

    Benjamin,

    Danke für das schöne Tutorial.

    Hier ein paar Anmerkungen, die mir beim Durcharbeiten aufgefallen sind:

    1. Statt
    session.screen0.toolbar.visible = false
    sollte es sein:
    session.screen0.toolbar.visible: false

    2. Statt
    bin/efa/efaBths.sh &
    sollte es sein
    ~/bin/efa/efaBths.sh &
    (macht es etwas klarer…)

    3. Nicht ganz klar – Ort und Nutzen – ist:
    mkdir .efa2

    4. ” soll der User efa2″
    -> ” soll der User efa”

    5. Erwähnt werden sollte, dass ab
    “Als nächstes bearbeiten wir die Datei /etc/inittab”
    wieder mit dem user pi gearbeitet werden muss (mit sudo).

    Viele Grüße aus Koblenz
    Johannes

    1. Benjamin Marwell

      Ist korrigiert, danke für das aufmerksame lesen!

  5. Johannes

    Benjamin,

    noch eine Frage: Hast Du eine Idee, wie man ein automatisches Backup realisieren kann? Eine Lösung mit crontab, und wahrscheinlich dem Sichern des ordners efa2?

    Ich denke das ist wichtig – ich hatte schon ein paar Mal den Effekt, dass durch einfaches Ausschalten ohne Herunterfahren die SD-Karte des RP später nicht mehr booten wollte.

    Gruß
    Johannes

    1. Benjamin Marwell

      Das Boot-Probleme kenne ich so eigentlich nicht, und das sollte auch nicht passieren. Vielleicht hast du eine ältere Firmware? Versuch die doch mal zu aktualisieren (sudo rpi-update).

      Die Crontab (oder anacron) würde ich auf jeden Fall nutzen. Nur wie, ist die Frage. Backup-Strategien gibt es viele. Für Back in Time habe ich eine Anleitung parat (http://blog.bmarwell.de/backup-mit-back-in-time/), aber nur für die GUI-Version. Für einen efa-Pi würde ich vielleicht stattdessen mit dirvish arbeiten – ein guter Artikel ist (mal wieder) in der Ubuntuusers-Wiki zu finden: http://wiki.ubuntuusers.de/dirvish. Das liefert auch gleich einen täglichen Cronjob für 22:04 Uhr mit.

      HTH,
      Ben

  1. Rapsberry Pi: Torrent-Client headless installieren - Bens IT-Kommentare

    [...] wie man den Raspberry Pi nutzen kann. Über eine Idee hatte ich bereits geschrieben: Den Raspberry Pi mit der Software efa2 (Elektronisches Fahrtenbuch) als Bootshaus-PC verwenden. Der Artikel stieß auf größeres Echo als viele andere Artikel. Heute geht es also mit [...]

  2. Raspberry Pi: Torrent-Client headless installieren - Bens IT-Kommentare

    [...] wie man den Raspberry Pi nutzen kann. Über eine Idee hatte ich bereits geschrieben: Den Raspberry Pi mit der Software efa2 (Elektronisches Fahrtenbuch) als Bootshaus-PC verwenden. Der Artikel stieß auf größeres Echo als viele andere Artikel. Heute geht es also mit [...]

Hinterlasse eine Antwort

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind markiert *

Sie können diese HTML-Tags verwenden: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>