[Buildroot] Teil 1: Embedded Linux

Die Arbeit an drivetronik bringt die Notwendigkeit mit sich ein Linux maßzuschneidern. Das System soll möglichst schlank sein um so schnell wie möglich zu starten. Mit einer Standard Raspbian-Installation sind Startzeiten auf dem Raspberry Pi von über 10 Sekunden normal gerade im Embedded-Bereich viel zu lange.

In diesen Fällen braucht es ein auf die eigenen Bedürfnisse gestricktes Linux. Und hier kommt Buildroot ins Spiel.

Oft brauchen die Geräte weder Tastaturunterstützung, noch Sound oder Netzwerk. Auch vieles an Software kann eingespart werden um neben der Startzeit auch die Dateigröße des Systems massiv zu reduzieren.

Ich kam auf das Projekt durch diesen Blogbeitrag. Der Beitrag beschreibt eine Konfiguration mit der der Raspberry Pi 3 in unter 2s startet.

Es hat ein paar Tage gedauert bis ich dahinter gestiegen bin wie das genau läuft. Meine Erfahrung möchte ich hier weitergeben und mit dieser Mini-Serie den Einstieg ein wenig erleichtern.

Vorweg: Jeder, der ernsthaft mit Buildroot arbeiten möchte, sollte sich auch das Buildroot user manual durchlesen. Diese kleine Einstiegsserie soll wirklich nur ein Einstieg sein und das Verständnis fördern, wie Buildroot grundsätzlich funktioniert.

1. Projekt laden

Das Projekt wird aus dem GIT Repository geladen.

$ git clone git://git.buildroot.net/buildroot
$ cd buildroot

2. Zielplattform wählen

Buildroot unterstützt zahlreiche Geräte (Raspberry Pi, Arduino, …). Für jedes Gerät gibt es eine entsprechende Konfiguration. Diese Konfigurationen liegen im Order configs und die entsprechende Konfiguration wird in der Form make [configname] geladen.

Für die Konfiguration des Raspberry Pi 3 (raspberrypi3_defconfig) wie folgt:

$ make raspberrypi3_defconfig

3. Konfiguration

Die gewählte Konfiguration beinhaltet nun voreingestellte Kernel- und Softwarekonfigurationen. Diese können nun nach Bedarf angepasst werden.

Dazu aber später mehr. Im ersten Schritt wollen wir nur das System kompilieren und starten.

4. Kompilieren

$ make -j8

Das kann – je nach System – durchaus 20-30 Minuten dauern. Ist das System einmal kompiliert werden weitere Änderungen (zum Beispiel Python hinzufügen) mitunter nur noch wenige Sekunden Kompilierzeit verursachen. Das hängt aber immer von den Änderungen ab.

5. SD-Karte vorbereiten

Das System wird im Ordner output erzeugt. Das Image sdcard.img, das auf die SD-Karte gespielt werden kann, befindet sich im Unterordner images.

Eine komfortable Möglichkeit das Image auf die SD-Karte zu spielen ist zum Beispiel balenaEtcher.

Das System (in diesem Falle der Raspberry Pi) kann damit wie gewohnt gebootet werden.

Nächster Teil: [Buildroot] Teil 2: Software – Konfiguration

Deine E-Mail-Adresse wird nicht veröffentlicht.