Raspberry Pi - Im Dienste der Wissenschaft

Cover Image

Hallo zusammen,

der Raspberry Pi ist ein vielseitiges, kleines Ding. Was damit auch abseits von Mediencenter und Spielekonsole möglich ist, könnt ihr nach dem Break nachlesen.

in Nerdistan kommt man ja mittlerweile an kleinen Einplatinenrechnern für eigene Projekte oder zum Aufbau eines Mediacenters kaum mehr drumrum. Meine einzige Nahkampferfahrung mit Linux-Betriebssystemen beschränkte sich bisher auf einen alten Laptop, dem ich statt dem mittlerweile nicht mehr aktiv unterstützten Windows XP eine Linux Mint Distribution verpasst habe. Auch, weil ich meine Fingerkünste bezüglich Linux etwas aufpolieren möchte, habe ich mir einen kleinen Rechenknecht geordert. An dieser Stelle will ich mich bei Sertronics für die superschnelle Zusendung meines Raspis noch vor dem Wochenende bedanken!

Warum ein Raspberry Pi

Mit der großen (auch deutschsprachigen) Community bringt der Raspberry Pi eine der Grundvoraussetzungen mit, die Anfänger beim Umgang mit dem kleinen Rechenknirps benötigen. Klar: Es gibt Einplatinenrechner die mehr Leistung pro Quadratzentimeter ins Rennen werfen. Diese sind teils aber auch relativ neu und die dahinterstehenden Linux-Distributionen teilweise noch nicht ganz so "rund" wie Raspberry's Raspbian.

Mangels meiner eigenen Erfahrung, überlasse ich die Pionierarbeit gerne den Linux-Profis und verwende bewährte, verbreitete und gut unterstützte Technik, auch wenn diese nicht unbedingt der letzte Schrei in Sachen Performance ist.

Ich möchte keinen zusätzlichen Arbeitsplatz mit zweitem Monitor und zusätzlichen Eingabegeräten bereitstellen. Der Raspi kann über Fernwartung per SSH (headless) eingerichtet und administriert werden.

Dank des geringen Stromverbrauchs (unter Vollast bis zu 4 Watt) und dadurch ganz passablen Effizienz bei der Berechnung langwieriger Aufgaben im Dauerbetrieb, habe ich mich fürs erste darauf festgelegt, den Raspi als BOINC-Rechensklaven anzubieten.

Apropos Stromverbrauch... Was kostet mich der Betrieb des Raspis eigentlich?

Der Stromverbrauch lässt sich einfach errechnen. Hier der Worst-Case bei Vollast 24/7:

Verbrauch / Tag = 4W * 24h = 96Wh
Verbrauch / Jahr = 96Wh * 365 = 35.040 Wh / Jahr

Der Raspi verbraucht folglich unter Vollast in einem Jahr ganze 35 kWh und kostet damit beim für mich gültigen Strompreis von 24,55 Cent / kWh satte 8,59 EUR im Jahr.

In den Berechnungen sind Wandlerverluste und der Verbrauch des Netzteils nicht enthalten. Diese halte ich aber für vernachlässigbar.

Da der Raspi lüfterlos ausgelegt ist, darf er bei mir gerne rund um die Uhr laufen. Stört ja keinen.

Was ist dieses BOINC überhaupt?

BOINC (Berkeley Open Infrastructure Network Computing) ist eine quelloffene Plattform, die wissenschaftlichen Einrichtungen Ressourcen für das verteilte Berechnen von Arbeitsaufgaben bereitstellt. Freiwillige Helfer können ihre Rechenleistung durch die Installation eines Clients, der mittlerweile auch für Raspbian verfügbar ist, spenden und dem Netzwerk zur Erledigung von Arbeitsaufgaben anbieten. Es ist keineswegs erforderlich, die komplette Rechenleistung des Raspis bereitzustellen. Auch eine teilweise Auslastung des Knirpses neben anderen Aufgaben wäre denkbar und möglich.

Welches Raspi-Set verwende ich für diese Anforderung?

Da ich auf Monitor, Tastatur und später auch auf LAN verzichten kann (der Raspi bringt Wifi mit), benötige ich nur die Platine mit einem schützenden Gehäuse sowie einem Netzteil. Das Raspberry Pi 3 Light Starterkit bringt dies alles zu einem attraktiven Preis mit. Zusätzlich sind auch passive Kühlelemente enthalten - diese sind dem angedachten Arbeitsauftrag zumindest nicht abträglich.

Natürlich gibt es auch Sets mit aktiver Kühlung. Ich mags allerdings eher leise und es ist ja nicht gesagt, dass dies für immer der einzige Einsatzzweck des kleinen Kerls bleibt - passt also.

Für die Inbetriebnahme ist eine Speicherkarte mit möglichst guter Performance erforderlich. In meinem Fall waren davon noch einige Exemplare in meinem persönlichen Fundus vorhanden. Um nachher keine Platzprobleme zu bekommen, habe ich eine Sandisk Ultra 32GB Klasse 10 Speicherkarte verwendet.

Es gibt auch Starterkits bei denen eine vorgeflashte und ausreichend dimensionierte Speicherkarte bereits beigelegt ist. Hier kann sich jeder selbst aussuchen, was ihm am besten passt.

Der Zusammenbau

Die Lieferung erfolgt in Einzelteilen. Vor der Inbetriebnahme ist die Raspi-Platine in das Gehäuse einzusetzen und die Kühlkörper aufzukleben. Beides kann ohne Werkzeuge erledigt werden. Das Gehäuse ist geklipst und die Kühlkörper sind bereits mit Wärmeleitklebepads ausgerüstet. Dies stellt auch einen Grobmotoriker wie mich vor nicht allzugroße Hürden. Vorteil beim Light Starterkit Gehäuse: Der transparente Teil kann einfach für Wartungsarbeiten abgenommen werden, ohne das komplette Gehäuse öffnen zu müssen.

Idealerweise startet man bereits vorher den Download des Betriebssystem-Images und des Flash-Werkzeugs. Alle bentötigen Dinge können unter https://www.raspberrypi.org/downloads/raspbian/ heruntergeladen werden.

Ich habe mich der Einfachheit halber an die Standard-Distribution Raspbian Stretch gehalten. Da ich, wie bereits zuvor erwähnt, keinen Desktop benötige, tut es in meinem Fall die Lite-Variante.

Das Image wird mittels des Tools Etcher (https://etcher.io/) auf die Speicherkarte geflasht. Im Ergebnis erhält man eine Speicherkarte mit einer FAT32 Boot-Partition und einer EXTFS-Partition für das Betriebssystem. Obacht: Nach dem Flashen meckerte Windows herum, dass die zweite Partition formatiert werden müsse, um darauf zugreifen zu können. Das ist natürlich Unsinn und muss unbedingt abgebrochen werden!

Wichtig zu wissen: Aus Sicherheitsgründen ist SSH beim ersten booten noch deaktiviert. Um SSH zu aktivieren ist eine leere Datei mit dem Namen "ssh" (Textdatei, ohne Inhalt, ohne Punkt, ohne Endung) in das Wurzelverzeichnis der FAT32 Boot-Partition zu legen.

Danach ist die Speicherkarte für den ersten Boot per LAN ausreichend vorbereitet und kann in den Raspi eingesetzt werden.

Für den späteren Zugriff auf das Maschinchen verwende ich das Tool PuTTY (http://www.putty.org/). Dies kann ebenfalls bereits heruntergeladen und installiert werden.

Die Ersteinrichtung

Um nun meinen ersten Connect herstellen zu können, habe ich den Raspi per LAN-Kabel direkt mit meinem Router verbunden und den Strom angestöpselt. Keine halbe Minute später hat sich ein neuer Client mit dem Namen raspberrypi an meinem Router verbunden. Um die (DHCP-)IP-Adresse rauszufinden, habe ich mich per Webinterface auf meinen Router angemeldet und die IP-Adresse kopiert / notiert. Dies sollte bei den meisten anderen Anwendern ähnlich komfortabel möglich sein.

Diese IP-Adresse verwende ich nun in PuTTY um die Verbindung zu meinem Raspi herzustellen. Bei der erstmaligen Anmeldung am Raspi verwendet man die Standard-Authentifizierung (Benutzername "pi" und Passwort "raspberry"). Damit lande ich gleich in der Shell und kann mit der Konfiguration loslegen.

Bildbeschreibung

Für die grundlegende Einrichtung bringt der Raspi das Tool raspi-config mit einer spartanischen grafischen Oberfläche mit. Da das Tool Administrator-Rechte braucht, ist der Befehlspräfix "sudo" (SuperUser Do) zu verwenden. Dadurch ergibt sich die Befehlszeile "sudo raspi-config".

Als allererstes wird über den Menüpunkt "Change User Password" das Standard-Passwort geändert. Dann wird das Tool selbst über "Update" auf den neuesten Stand gebracht.

Um nun auch die Raspbian-Distribution selbst mit den neuesten Updates zu versorgen, verwendet man die beiden Kommandozeilenbefehle:

sudo apt-get update (aktualisiert die Paketbibliotheken)
sudo apt-get upgrade (spielt die bereitgestellten Updates in das System ein)

Einrichtung Wifi

Da ich den Raspi via WLAN in mein Netz integrieren möchte, steht nun die Konfiguration der Wifi-Schnittstelle an. Dies war durchaus etwas kniffliger, weshalb ich die einzelnen Schritte hier festhalten möchte.

Leider ist die Konfiguration der Wifi-Verbindung nicht über raspi-config möglich. Hier müssen wir in Textdateien herumhantieren. Die zugehörige Manual-Seite (https://www.raspberrypi.org/documentation/configuration/wireless/wireless-cli.md) war mir dabei eine große Hilfe.

Zuerst muss mit der folgenden Kommandozeile die Datei wpa_supplicant.conf bearbeitet werden:

sudo nano /etc/wpa_supplicant/wpa_supplicant.conf

Nano ist der bei der Raspbian Standardinstalltion mitgelieferte Texteditor. Im Auslieferungszustand sind hier die folgenden Zeilen enthalten:

country=GB
ctr_interface=DIR=/var/run/wpa_supplicant GROUP=netdev
update_config=1

Da wir uns nicht in England befinden, habe ich die erste Zeile zu country=DE verändert.

Nach update_config=1 ist nun folgendes einzutragen (ohne die Kommentare in Klammern):

network={
  ssid="NAME_DES_WLAN_NETZWERKS"
  scan_ssid=1
  proto=RSN WPA (WPA und WPA2 sind erlaubt)
  key_mgmt=WPA-PSK (der WLAN-Schlüssel ist bekannt)
  pairwise=CCMP TKIP
  group=CCMP TKIP
  psk="WLAN_SCHLUESSEL"
  auth_alg=OPEN
}

Bildbeschreibung

Über STRG+X sowie der Bestätigung mit der Taste können wir die Änderungen speichern.

 In Raspbian Stretch gibt es zudem offenbar noch ein Problem, das den automatischen Start der Wifi-Verbindung nach dem Boot verhindert (https://www.raspberrypi.org/forums/viewtopic.php?t=191061). Also ist vor dem Neustart noch folgendes zu erledigen:

sudo nano /etc/network/interfaces

In diese Datei sind folgende Informationen hinzuzufügen:

allow-hotplug wlan0
iface wlan0 inet manual
wpa-conf /etc/wpa_supplicant/wpa_supplicant.conf

Bildbeschreibung

Die Datei ist zu speichern und dann folgendes Kommando auszuführen:

sudo systemctl enable wpa_supplicant.service

Danach kann der Raspi neu gestartet werden und sollte sich im Idealfall direkt mit dem angegeben WLAN-Netzwerk verbinden. Das hat in meinem Fall problemlos geklappt. Da ich nun nicht mehr per LAN, sondern per Wifi auf den Raspi zugreifen möchte, muss ich mir die neue IP-Adresse über das Webinterface meines Routers besorgen und für einen neuen Verbindungsaufbau verwenden. Dabei habe ich den DHCP-Server meines Routers auch gleich so eingerichtet, dass dieser die für den Raspi vergebene IP-Adresse dauerhaft verwendet. Es gibt auch die Möglichkeit, im Raspi eine statische IP-Adresse zu vergeben, darauf habe ich aber verzichtet.

Nun kann ich den Raspi wieder vom Router abstöpseln und an seinen vorgesehenen Platz im Arbeitszimmer positionieren.

Installation des BOINC-Clients und Starten der ersten Arbeitspakete

Via PuTTY und der neuen IP-Adresse kann ich mich nun per WLAN mit dem Raspi verbinden. Dank der Arbeit der BOINC Community ist die Installation des BOINC-Clients super simpel:

sudo apt-get install boinc-client

Der BOINC-Client ist nun installiert, gestartet und wartet auf die Einrichtung der Projekte. Auch für das zu verwendende Projekt gibt es Voraussetzungen. Das Projekt muss seine Arbeitsaufgaben für die Raspbian ARM-Plattform bereitstellen. Einer der Kandidaten hierfür ist SETI@Home (https://setiathome.berkeley.edu/).

Um sich mit dem Projekt verbinden zu können, ist die Einrichtung eines Accounts erforderlich. Dies ist einfach mit folgender Kommandozeile möglich:

boinccmd --create_account http://setiathome.berkeley.edu <Email> <Passwort> <Benutzername>

Dieser Aufruf liefert im Erfolgsfall eine Account-ID zurück, die wir wiederum benötigen, um uns mit dem Projekt zu verbinden:

boinccmd --project_attach http://setiathome.berkeley.edu <Account-ID>

Nach dem Verbinden mit dem Projekt, sollte der BOINC-Client damit beginnen, die ersten Arbeitspakete herunterzuladen und mit der Arbeit loszulegen. Prüfen können wir das mit der folgenden Kommandozeile:

boinccmd --get_tasks

Bildbeschreibung

Damit ist die Installation und Inbetriebnahme des Clients abgeschlossen.

Zugriff via RPC und BOINC-Manager

Bei der Windows-Installation von BOINC (https://boinc.berkeley.edu/download.php) wird automatisch der BOINC-Manager mitinstalliert. Dieser dient nicht nur dazu, die Projekte auf dem eigenen PC zu verwalten, sondern es ist auch eine Fernwartung beliebiger weiterer BOINC-Clients möglich. So möchte ich eine Installation des BOINC-Managers auf meinem lokalen PC dazu nutzen, den Arbeitsfortschritt meines Raspis zu beobachten. Dazu sind kleinere Vorarbeiten auf dem Raspi notwendig:

Um sich am BOINC-Client anmelden zu können, ist die IP des Windows-PCs in der Konfiguration des BOINC-Clients auf dem Raspi anzugeben.

sudo nano /etc/boinc-client/remote_hosts.cfg

Hier fügen wir einfach an das Ende der Datei die IP-Adresse und / oder den Rechnernamen des Windows-PCs ein.

Dieser Zugriff wird zusätzlich noch über ein Passwort geschützt. Dieses ist in der Datei gui_rpc_auth.cfg im Klartext zu hinterlegen.

sudo nano /etc/boinc-client/gui_rpc_auth.cfg

Wichtig: Die Eingabe darf nicht mit einem abgeschließenden Leerzeichen umgebrochen werden!

Danach muss der BOINC-Client neu gestartet werden.

sudo /etc/init.d/boinc-client restart

Damit sind alle Voraussetzungen für die Fernwartung mit dem BOINC-Manager erledigt. Wir können uns nun mit dem BOINC-Manager über den Menüpunkt "Datei / Computer auswählen" unter Angabe der IP-Adresse des Raspis und dem soeben vergebenen Passwort mit dem BOINC-Client auf dem Raspi verbinden. Der Clou: Nun können wir die Projekte und Arbeitsaufgaben komfortabel über den BOINC-Manager einsehen und verwalten.

Damit geht mein Projekt nun in die Produktionsphase.

Bildbeschreibung

Es wird Zeit für ein kleines...

Fazit

Insgesamt muss ich sagen, dass ich unterm Strich positiv darüber überrascht bin, wie einfach es Raspbian und die dahinterstehende Community Anfängern macht, mit dem Raspi unter Linux das Laufen zu lernen. Einziger Wermutstropfen: Ich hätte mir eine zentralisiertere und aufgeräumtere Anlaufstelle für das Headless-Setup, gerade für den Wifi-Teil gewünscht. Hier habe ich bei meinen Recherchen teilweise falsche oder widersprüchliche Tipps gefunden. Es dauert eine Weile, bis man es schafft, der Suchmaschine mit dem großen G im Namen die richtigen Fragen zu stellen.

Gott sei dank gibt es den Raspi nicht erst seit gestern, somit haben sich viele Menschen bereits über diverse Problemstellungen Gedanken gemacht und einige davon geben ihr erworbenes Wissen großartig aufbereitet an andere weiter. So hat mich der Blog von Helmut Karger (http://blog.helmutkarger.de/raspberry-pi-fuer-die-wissenschaft-teil-1-boinc-und-setihome/) großartig an die Hand genommen und bei der Einrichtung des BOINC-Clients unterstützt. Danke für diese super aufbereitete Beitragsreihe!

Von der Multimedia-Kiste bis zum einfachen Rechensklaven - der Raspberry Pi kann für viele Einsatzgebiete eine Hilfe bei der Umsetzung sein. In Verbindung mit meinem 3D-Drucker wird mir da sicher auch noch so einiges einfallen. Bis dahin werde ich den kleinen Kerl noch eine Weile bei der Abarbeitung von Tasks für die Wissenschaft beobachten; mit dem guten Gefühl, der Welt mit meinem kleinen Experiment ein klein wenig zurückzugeben ;o)

Update September 2018

Nach einiger Zeit stellten sich bei meinem Raspi-Rechenknecht Probleme mit dem Seti@Home-Projekt ein. Der Pi blieb beständig nach einer Laufzeit von ca. ein paar Stunden hängen und ließ sich nicht mehr über die Konsole ansprechen. Nach ein paar Tagen Forschung konnte ich herausfinden: Dieses Problem hängt offenbar mit nicht optimal zu Raspbian Stretch passenden Bibliotheken zusammen. Leider reichen meine Unix-Skills nicht, um das Problem eigenhändig zu beheben. SETI habe ich aus diesem Grund vorerst auf Eis gelegt.

Ähnlich düster sieht es derzeit mit dem Projekt Einstein@Home aus. Trotz ausgewiesener ARM-Kompatibilität lässt sich auf meinem Pi unter Raspbian Stretch keine Workunit ausführen. Jede Workunit wird direkt mit einer Fehlermeldung abgebrochen. Auch hier scheint es auf Unverträglichkeiten unterschiedlicher Versionen von Bibliotheken hinaus zu laufen.

Nach einer Weile herumprobieren habe ich allerdings das Projekt Universe@Home der Astronomischen Fakultät der Universität Warschau gestoßen. Im Rahmen des Projektes werden starke Röntgenquellen, Gravitationswellen und Supernovae erforscht. Für mich als Trekkie Grund genug daran teil zu nehmen.

Und was soll ich sagen? Dieses Projekt läuft auf meinem Pi ohne Murren seit einigen Tagen stabil.

Zusätzlich zur Software habe ich auch ein paar kleinere Veränderungen an der Hardware vorgenommen. Der Pi ist von einem geschlossenen zu einem geöffneten und stapelbaren Gehäuse umgezogen. Wenn sich das laufende Projekt bewährt, wird er dementsprechend Zuwachs bekommen. Damit das Throttling nicht zuschlägt habe ich ihm eine aktive Kühlung (ein leise laufender 40mm Lüfter von Noctua) verpasst. Damit tuckert er zufrieden bei um die 50 Grad Core-Temperatur bei stabilen 1,2 GHz vor sich hin.