Image

Nachdem wir uns nun die ersten Wochen mit dem Projekt beschäftigt haben, ging es an den Aufbau der Grundlagen. Wir haben uns zwar alle unabhängig von einander einem Teilbereich zugewandt, jedoch stellt die Erstellung des RaspberryPi-Images die Grundlage für viele weitere Schritte dar. Dazu haben wir uns zuerst an der Verwendung von Buildroot als Werkzeug versucht. Jedoch sind wir relativ schnell zu dem Schluss gekommen, dass dies für unser Projekt eher weniger geeignet ist. Der Grund liegt in den verwendeten Bestandteilen und dem Zweck unseres Projekts: Unser Ziel ist es von Anfang an gewesen, ein möglichst sicheres und damit auch aktuelles System anbieten zu können. Dazu setzen wir auf einen bekannten XMPP-Server und sonst stets aktuelle Softwarepakete. Gerade wenn ein solches System über einen längeren Zeitraum betrieben werden soll, muss es die Möglichkeit geben, das System zu einem beliebigen Zeitpunkt auf den aktuellsten Softwarestand zu bringen, um alle bekannten Schwachstellen schließen zu können.

Aus diesem Grund haben wir schnell das Tool Buildroot zur Seite gelegt und uns stattdessen mit Debootstrap befasst. Dabei handelt es sich um ein Tool, mit deren Hilfe man auf einer Debian-basierenden Distribution eine abgetrennte Debian Installation aufbauen kann. Kombiniert wird dieses Tool mit dem Emulator Qemu, sodass eine ARM-Architektur (analog zum RaspberryPi) simuliert werden kann. Als Grundlage für das Systemimage werden zum einen die Raspbian-Repositories (https://www.raspbian.org/RaspbianRepository) und zum anderen das rpi-update-Tool (https://github.com/Hexxeh/rpi-update) verwendet. Das Repository liefert ein sehr breites Spektrum an fertig kompilierten Systembestandteilen/Programmen und das rpi-update-Tool ist in der Lage, die aktuellste Firmware zum Boot des RaspberryPi’s herunterzuladen und abzulegen.

Die nächste Herausforderung war es, den Build-Prozess zu automatisieren; dabei jedoch die Flexibilität nicht zu sehr einzuschränken. Dazu wurde ein Bash-Script erstellt, welches auf einer Debian-basierenden Distribution gestartet wird und die folgenden Schritte vollautomatisiert durchführt:

  • Prüfung auf Vorhandensein der benötigten Bestandteile (QEMU, Debootstrap, git und kpartx)
  • Anlegen, Partitionieren und Mounten eines Images (späteres SD-Karten Image)
  • Ausführung von Debootstrap mithilfe von QEMU
  • Kopieren von allen Dateien aus einem Overlay-Verzeichnis
  • Ausführen eines Install-Scripts innerhalb der Debootstrap-Umgebung
  • Download der Firmwaredateien (rpi-update-Tool)
  • Unmounten des Images

Durch die Zuhilfenahme dieses Scripts kann das SD-Image für das Raspberry mit einem einzigen Befehl erstellt werden. Die Anpassungen am Image können entweder durch Ablegen von Dateien in dem Overlay-Verzeichnis oder durch die Anpassung des Install-Scripts erfolgen. Der Umgang ist somit sehr einfach und erfordert kaum zusätzliche Kenntnisse.

Display

Desweiteren haben wir eine kleine Lochrasterplatine erstellt, die das 16×2 LCD-Display trägt und direkt auf das RaspberryPi aufgesteckt werden kann. Dieses Display wird im weiteren Projektverlauf verwendet, um Informationen zu der Softwareumgebung (z.B. IP-Adresse) darzustellen. Damit die Helligkeit und der Kontrast des Displays flexibel eingestellt werden können, wurden zudem zwei Potentiometer auf der Platine verbaut.

 

// Edit: 

Auf den Wunsch von Herr Schulmeister hin habe ich ein Archiv angehängt, welches das Script und unser aktuelles Overlay-Verzeichnis beinhaltet. Bitte beachten, dass das Script sicher nicht perfekt ist und sich im laufe des Projekts auch noch verändern kann.
Getestet wurde das Script unter Ubuntu 17.04 (Zesty) – auf Debian sollte es aber auch funktionieren.

debootstrap_sdim

SDIM: 2. Blogeintrag – Image und Display

3 Kommentare zu „SDIM: 2. Blogeintrag – Image und Display

  • 28. Mai 2017 um 21:45 Uhr
    Permalink

    Klingt wirklich sehr interessant. Wollen Sie das Skript hier zur Anschauung veröffentlichen? 😉

    • 29. Mai 2017 um 16:27 Uhr
      Permalink

      Habe das Script und das Overlay-Verzeichnis in ein Archiv gepackt und dem Beitrag angehängt.
      Wie auch im Text steht: Das Script ist sicher nicht 100% optimal geschrieben und wird sich wohl im Laufe des Projekts noch verändern.

      • 30. Mai 2017 um 1:44 Uhr
        Permalink

        Kein Problem. Es ist aber trotzdem ganz interessant, da die Smart Mirror-Gruppe eventuell auch Raspbian nutzen will. Vielen Dank fürs Hochladen.

Kommentare sind geschlossen.