Raspberry Pi für die Wissenschaft – Teil 3: BOINC und SETI@Home Installation

Raspberry Pi für die WissenschaftPer März 2016 unterstützt das SETI@Home Projekt offiziell leider keine Raspberry Pi Clients. Selbst wenn die zugrundeliegende BOINC-Plattform sehr wohl für Raspbian verfügbar ist. Die Ursache liegt schlicht daran, dass SETI@Home keine Software bereitstellt, die unter Linux auf ARM Prozessoren laufen würde.

Die SETI@Home Client Software ist aber auch im Quellcode verfügbar, so dass wir sie herunterladen und eigenhändig für unserem Raspberry Pi 2 kompilieren können.

In diesem Artikel zeige ich, wie BOINC und SETI@Home installiert werden, so dass ein Raspberry Pi 2 sofort beginnen kann, für die Wissenschaft zu arbeiten.

Dieser Artikel kann bereits als überholt angesehen werden, denn seit SETI@Home in der Version 8 wird der Raspberry Pi von SETI voll unterstützt. SETI@Home kann damit wie jedes andere BOINC Projekt per boinccmd oder dem BOINC Manager installiert werden. Mehr dazu in meinem neuen Artikel, wie man einfach BOINC und SETI@Home auf einen Raspberry Pi bringt.

Diese Anleitung bezieht sich ausschließlich auf den Raspberry Pi 2 (wobei es vermutlich genauso mit einem Dreier funktioniert) und basiert auf zwei Foreneinträgen von Tom Rinehart im SETI@Home Forum. Vielen Dank für diese Anleitung. Die Lektüre dieses (englischsprachigen) Threads empfehle ich ausdrücklich, besonders für Anwender des alten Raspberry Pi in der ersten Version, die dort fündig werden können.

Installation

Wir starten auf einem frisch installierten und grundkonfigurierten Raspbian Jessie Lite (Version vom 18.03.2016), so wie ich es im vorhergehenden Artikel beschrieben habe. Zuerst bauen wir wieder von einem anderen PC aus eine SSH-Verbindung zum Raspberry auf:

ssh pi@raspberrypi

Dabei ist raspberrypi der Rechnername (alternativ geht auch die IP-Adresse), pi ist der vorgefertigte User und dessen Passwort lautet per Standard raspberry, falls wir diese Dinge nicht vorher bereits geändert hatten. Als nächstes aktualisieren wir die Paketlisten und die bereits installierte Software:

sudo apt-get update
sudo apt-get dist-upgrade

Das kann eine Weile dauern, eventuelle Anfragen, ob fortgefahren werden soll, bestätigen wir mit Enter. Als nächstes müssen eine Unmenge an Programmen und SW-Biblotheken installiert werden. Die Zeilen bitte einzeln übernehmen. Auch hier bestätigen wir alle Anfragen mit Enter:

sudo apt-get update
sudo apt-get install git make m4 libtool autoconf pkg-config automake subversion libcurl4-openssl-dev libssl-dev gettext docbook2x docbook-xml
sudo apt-get install libxml2-utils zlib1g-dev libsm-dev libice-dev libxmu-dev libxi-dev libx11-dev libnotify-dev freeglut3-dev libfcgi-dev
sudo apt-get install libjpeg8-dev libxss-dev libxcb-util0-dev libxcb-dpms0-dev libxext-dev libstdc++6-4.7-dev libfftw3-dev

Alle vier Kommandos sollten problemlos ohne Fehler durchlaufen.

Als nächstes laden wir uns die BOINC Library als Quelltext herunter und kompilieren sie. Das funktioniert mit den folgenden Schritten:

git clone https://github.com/BOINC/boinc boinc
cd boinc
./_autosetup
./configure --disable-server --disable-manager LDFLAGS=-static-libgcc --with-boinc-platform=arm-unknown-linux-gnueabihf
make -j 4
cd ~

Und nun machen wir das gleiche mit SETI@HOME, zuerst herunterladen und dann kompilieren:

svn checkout https://setisvn.ssl.berkeley.edu/svn/seti_boinc@3304 seti_boinc
cd seti_boinc
./_autosetup
./configure CFLAGS="-O3" CXXFLAGS="-O3" BOINCDIR=/home/pi/boinc --enable-client --enable-static --disable-shared --disable-server --enable-fast-math
make -j 4

Beim Herunterladen (erste Zeile) werden wir gefragt, ob wir dem Serverzertifikat vertrauen wollen. Hier können wir mit t für temporär und Enter antworten. Der Make-Lauf in der letzten Zeile braucht ein wenig Zeit und endet möglicherweise mit einem Fehler wie:

readwu.cpp:47:20: fatal error: export.h: Datei oder Verzeichnis nicht gefunden
 #include "export.h"
                    ^
compilation terminated.

Diesen Fehler können wir aber ignorieren, wenn folgende Überprüfung klappt:

ls -l client

Unter den ausgegebenen Dateien muss sich die folgende befinden: setiathome-8.0.armv7l-unknown-linux-gnueabihf. Diese Datei kopieren wir jetzt ins Rootverzeichnis unseres Home-Directories:

cp ~/seti_boinc/client/setiathome-8.0.armv7l-unknown-linux-gnueabihf ~/

Und wir legen dort eine zusätzliche Konfigurationsdatei an:

cd ~
nano app_info.xml

Diese wird dann mit folgendem Inhalt gefüllt:

<app_info>
    <app>
        <name>setiathome_v8</name>
        <user_friendly_name>SETI@home v8</user_friendly_name>
    </app>
    <file_info>
        <name>setiathome-8.0.armv7l-unknown-linux-gnueabihf</name>
        <executable/>
    </file_info>
    <app_version>
        <app_name>setiathome_v8</app_name>
        <version_num>800</version_num>
        <file_ref>
           <file_name>setiathome-8.0.armv7l-unknown-linux-gnueabihf</file_name>
           <main_program/>
        </file_ref>
    </app_version>
</app_info>

Dann mit Strg-x, j und Enter speichern.

Jetzt muss noch der BOINC-Client installiert werden:

sudo apt-get install boinc-client

Soweit die Installationen. Als nächstes melden wir und bei SETI@Home an und nehmen an dem Projekt teil. Auch das kann auf der Commandlineebene passieren und zwar per boinccmd:

pi@raspberrypi:~ $ boinccmd --create_account http://setiathome.berkeley.edu helmut@jsonp.eu mypassword Helmut
status: Success
poll status: operation in progress
poll status: operation in progress
account key: 3401e51d2605819038bbd34fb252535a
pi@raspberrypi:~ $ boinccmd --project_attach http://setiathome.berkeley.edu 3401e51d2605819038bbd34fb252535a
pi@raspberrypi:~ $

Der Befehl in der ersten Zeile legt bei SETI@Home einen neuen User Helmut mit E-Mail Adresse und Passwort an. Zurückgemeldet wird ein so genannter Account Key in Zeile 5. Mit diesem Account-Key können wir nun mit unserem BOINC-Client am SETI@Home-Projekt teilnehmen (Zeile 6).
Dem Projektverzeichnis fügen wir jetzt die vorher kompilierte SETI@Home Applikation und das Konfigurationsfile app_inf.xml hinzu und ändern den Eigentümer der beiden Dateien auf boinc:boinc:

sudo cp setiathome-8.0.armv7l-unknown-linux-gnueabihf /var/lib/boinc-client/projects/setiathome.berkeley.edu/
sudo cp app_info.xml /var/lib/boinc-client/projects/setiathome.berkeley.edu/
sudo chown boinc:boinc /var/lib/boinc-client/projects/setiathome.berkeley.edu/setiathome-8.0.armv7l-unknown-linux-gnueabihf
sudo chown boinc:boinc /var/lib/boinc-client/projects/setiathome.berkeley.edu/app_info.xml

Und abschließend starten wir den BOINC-Client neu:

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

Und das war es schon, der BOINC Client wird nun die ersten Arbeitspakete von SETI@Home herunterladen und sofort beginnen, sie zu verarbeiten.

Funktion überprüfen und Verarbeitung überwachen

Auch ohne grafische Oberfläche haben wir auf der Commandline einige Möglichkeiten zu monitoren, was BOINC macht. Als erstes rufen wir die Logdatei des BOINC-Clients auf um zu sehen, was der Client bisher gemacht hat:

cat /var/lib/boinc-client/stdoutdae.txt

Sobald Arbeitspakete geladen und verarbeitet werden, können wir SETI@Home per top Kommando quasi bei der Arbeit zuschauen.

top

Hier sehen wir, dass der Raspberry Pi 2 mit seinen vier Prozessorkernen auch vier Seti@Home Arbeitspakete gleichzeitig bearbeitet bei einer CPU-Auslastung nahe 100%. Top aktualisiert die Anzeige alle paar Sekunden und wird mit q beendet. Mehr zu den Arbeitspaketen erfahren wir per Boinccmd:

pi@raspberrypi:~ $ boinccmd --get_tasks
======== Tasks ========
1) -----------
   name: 30mr10ad.31516.2525.6.33.31_1
   WU name: 30mr10ad.31516.2525.6.33.31
   project URL: http://setiathome.berkeley.edu/
   report deadline: Sat May 21 05:13:54 2016
   ready to report: no
   got server ack: no
   final CPU time: 0.000000
   state: downloaded
   scheduler state: scheduled
   exit_status: 0
   signal: 0
   suspended via GUI: no
   active_task_state: EXECUTING
   app version num: 800
   checkpoint CPU time: 54549.030000
   current CPU time: 54595.640000
   fraction done: 0.221386
   swap size: 70 MB
   working set size: 68 MB
   estimated CPU time remaining: 326650.051246
...

Darunter folgen analog die Ausgaben für die Tasks 2-4.

Weitere Boinccmd Kommandos finden sich im BOINC-Doku-Wiki. Mit Boinccmd lässt sich BOINC am Raspberry Pi über die Kommandozeile recht gut steuern und überwachen, komfortabler wäre allerdings eine grafische Oberfläche. Mehr dazu gibt es in den folgenden Artikeln.


Weitere Artikel in dieser Kategorie:

2 Kommentare

  1. Moritz

    Grüß Dich, danke für Deine Anleitung. Allerdings funktioniert bei mir das erstellen der Datei „setiathome-8.0.armv7l-unknown-linux-gnueabihf“ nicht. Ich habe alle Schritte so ausgeführt wie von Dir beschrieben. Hast Du noch einen Tipp für mich woran es liegen kann?

    Antworten
    1. Helmut (Beitrag Autor)

      Vermutlich hast Du inzwischen eine neuere Version erwischt und die Datei heißt anders.
      Du braucht dieses umständliche Verfahren mir Compilieren aber schon lange nicht mehr anwenden. Boinc und Seti@Home lassen sich auch per apt-get installieren. Siehe: Raspberry Pi für die Wissenschaft – Teil 7: Der einfache Weg zu BOINC und SETI@Home

      Antworten

Schreiben Sie einen Kommentar

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