{"id":192,"date":"2017-05-28T19:20:17","date_gmt":"2017-05-28T17:20:17","guid":{"rendered":"https:\/\/www.pingu-mobil.de\/iot\/?p=192"},"modified":"2021-05-14T10:07:53","modified_gmt":"2021-05-14T08:07:53","slug":"sdim-2-blogeintrag-image-und-display","status":"publish","type":"post","link":"http:\/\/www.iot-embedded.de\/iot-2017\/sdim\/sdim-2-blogeintrag-image-und-display\/","title":{"rendered":"SDIM: 2. Blogeintrag &#8211; Image und Display"},"content":{"rendered":"<h2>Image<\/h2>\n<p>Nachdem wir uns nun die ersten Wochen mit dem Projekt besch\u00e4ftigt haben, ging es an den Aufbau der\u00a0Grundlagen. Wir haben uns zwar alle unabh\u00e4ngig von einander einem Teilbereich zugewandt, jedoch stellt die Erstellung des RaspberryPi-Images die Grundlage f\u00fcr viele weitere Schritte dar. Dazu haben wir uns zuerst an der Verwendung von <strong>Buildroot<\/strong> als Werkzeug versucht. Jedoch sind wir relativ schnell zu dem Schluss gekommen, dass dies f\u00fcr 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\u00f6glichst sicheres und damit auch aktuelles System anbieten zu k\u00f6nnen. Dazu setzen wir auf einen bekannten XMPP-Server und sonst stets aktuelle Softwarepakete. Gerade wenn ein solches System \u00fcber einen l\u00e4ngeren Zeitraum betrieben werden soll, muss es die M\u00f6glichkeit geben, das System zu einem beliebigen Zeitpunkt auf den aktuellsten Softwarestand zu bringen, um alle\u00a0bekannten Schwachstellen schlie\u00dfen zu k\u00f6nnen.<\/p>\n<p>Aus diesem Grund haben wir schnell das Tool <em>Buildroot<\/em> zur Seite gelegt und uns stattdessen mit <strong>Debootstrap<\/strong> befasst. Dabei handelt es sich um ein Tool, mit deren Hilfe man auf einer Debian-basierenden Distribution eine\u00a0abgetrennte Debian Installation aufbauen kann. Kombiniert wird dieses Tool mit dem Emulator <strong>Qemu<\/strong>, sodass eine ARM-Architektur (analog zum RaspberryPi) simuliert\u00a0werden kann. Als Grundlage f\u00fcr das Systemimage werden zum einen die <strong>Raspbian-Repositories<\/strong> (https:\/\/www.raspbian.org\/RaspbianRepository) und zum anderen das<strong> rpi-update<\/strong>-Tool (https:\/\/github.com\/Hexxeh\/rpi-update) verwendet. Das Repository liefert ein sehr breites Spektrum an fertig kompilierten Systembestandteilen\/Programmen und das <em>rpi-update<\/em>-Tool ist in der Lage, die aktuellste Firmware zum Boot des RaspberryPi&#8217;s herunterzuladen und abzulegen.<\/p>\n<p>Die n\u00e4chste Herausforderung war es, den Build-Prozess\u00a0zu automatisieren; dabei jedoch die Flexibilit\u00e4t nicht zu sehr einzuschr\u00e4nken. Dazu wurde ein Bash-Script erstellt, welches auf einer Debian-basierenden Distribution gestartet wird und die folgenden Schritte vollautomatisiert durchf\u00fchrt:<\/p>\n<ul>\n<li>Pr\u00fcfung auf Vorhandensein der ben\u00f6tigten Bestandteile (<em>QEMU<\/em>, <em>Debootstrap,<\/em>\u00a0<em>git<\/em> und <em>kpartx<\/em>)<\/li>\n<li>Anlegen, Partitionieren und Mounten eines Images (sp\u00e4teres SD-Karten Image)<\/li>\n<li>Ausf\u00fchrung von <em>Debootstrap<\/em> mithilfe von <em>QEMU<\/em><\/li>\n<li>Kopieren von allen Dateien aus einem Overlay-Verzeichnis<\/li>\n<li>Ausf\u00fchren eines Install-Scripts innerhalb der <em>Debootstrap<\/em>-Umgebung<\/li>\n<li>Download der Firmwaredateien (<em>rpi-update<\/em>-Tool)<\/li>\n<li>Unmounten des Images<\/li>\n<\/ul>\n<p>Durch die Zuhilfenahme dieses Scripts kann das SD-Image f\u00fcr das Raspberry mit einem einzigen Befehl erstellt werden. Die Anpassungen am Image k\u00f6nnen 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\u00e4tzliche Kenntnisse.<\/p>\n<h2>Display<\/h2>\n<p>Desweiteren haben wir eine kleine Lochrasterplatine erstellt, die das 16&#215;2 LCD-Display tr\u00e4gt 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\u00f6nnen, wurden zudem zwei Potentiometer auf der Platine verbaut.<\/p>\n<p>&nbsp;<\/p>\n<p><strong>\/\/ Edit:\u00a0<\/strong><\/p>\n<p>Auf den Wunsch von Herr Schulmeister hin habe ich ein Archiv angeh\u00e4ngt, 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\u00e4ndern kann.<br \/>\n<em>Getestet wurde das Script unter Ubuntu 17.04 (Zesty) &#8211; auf Debian sollte es aber auch funktionieren.<\/em><\/p>\n<p><em><a href=\"https:\/\/www.pingu-mobil.de\/iot\/wp-content\/uploads\/2017\/05\/debootstrap_sdim.zip\" target=\"_blank\" rel=\"noopener noreferrer\">debootstrap_sdim<\/a><\/em><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Image Nachdem wir uns nun die ersten Wochen mit dem Projekt besch\u00e4ftigt haben, ging es an den Aufbau der\u00a0Grundlagen. Wir haben uns zwar alle unabh\u00e4ngig von einander einem Teilbereich zugewandt, jedoch stellt die Erstellung des RaspberryPi-Images die Grundlage f\u00fcr viele<\/p>\n","protected":false},"author":3,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":[],"categories":[3],"tags":[],"_links":{"self":[{"href":"http:\/\/www.iot-embedded.de\/iot-2017\/wp-json\/wp\/v2\/posts\/192"}],"collection":[{"href":"http:\/\/www.iot-embedded.de\/iot-2017\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/www.iot-embedded.de\/iot-2017\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/www.iot-embedded.de\/iot-2017\/wp-json\/wp\/v2\/users\/3"}],"replies":[{"embeddable":true,"href":"http:\/\/www.iot-embedded.de\/iot-2017\/wp-json\/wp\/v2\/comments?post=192"}],"version-history":[{"count":1,"href":"http:\/\/www.iot-embedded.de\/iot-2017\/wp-json\/wp\/v2\/posts\/192\/revisions"}],"predecessor-version":[{"id":587,"href":"http:\/\/www.iot-embedded.de\/iot-2017\/wp-json\/wp\/v2\/posts\/192\/revisions\/587"}],"wp:attachment":[{"href":"http:\/\/www.iot-embedded.de\/iot-2017\/wp-json\/wp\/v2\/media?parent=192"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/www.iot-embedded.de\/iot-2017\/wp-json\/wp\/v2\/categories?post=192"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/www.iot-embedded.de\/iot-2017\/wp-json\/wp\/v2\/tags?post=192"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}