Dies ist eine alte Version des Dokuments!


Buildroot

Buildroot ist ein Tool, um eingebettete Linux Systeme zu generieren. Es besteht aus Makefile, Patches und Skripts: Daraus werden Toolchain, Root-Filesystem, Kernel und Bootloader generiert. Es unterstützt die gängigsten CPU Architekturen (x86, ARM, PowerPC, …) und viele Software-Pakete wie zum Beispiel: BusyBox, OpenSSH-Server, OpenCV, Qt, …

Der Vorteil von Buildroot ist, dass sehr kleine Images erzeugt werden können und dass die Konfiguration relativ einfach ist. Alle Einstellungen könne bei Bildroot graphisch (menuconfig) konfiguriert werden.

Beispiel

Abhängigkeiten

Voraussetzungen um mit Buildroot zu arbeiten:

$ sudo apt-get install binutils build-essential g++ make cmake git libncurses5-dev unzip

Da die Builds recht lange dauern können, empfielt es sich alles in einer Screen-Session zu machen, vor allem wenn man über SSH arbeitet.

Screen kann, wie folgt, installiert werden:

$ sudo apt-get install screen

Eine neue Screen-Session mit dem Namen buildroot wird gestartet:

$ screen -S buildroot

Mit der Tastenkombination Ctrl+A, D wird die Session in den Hintergrund gelegt und mit folgendem Befehl kann die Session wieder aufgenommen werden:

$ screen -r buildroot

Download

Ein Buildroot-Release kann von der Projektwebseite heruntergeladen werden oder mit Git:

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

Als erstes muss ein Release ausgewählt werden. Alle Releases können mit git tag angezeigt werden. Am besten man mach gleich einen eigenen Branch, damit die Konfiguration gleich eingecheckt werden kann:

$ git checkout -b work 2014.08

Konfiguration

Alle Einstellungen werden über ein ncurses-UI gemacht:

$ make menuconfig

Unter Build optionsDownload dir kann der Ordner angegeben werden, in den alle heruntergeladenen Sourcen gespeichert werden. Das beschleunigt den Build und spart Speicherplatz, falls Buildroot für mehrere Boards oder für unterschiedliche Konfigurationen verwendet wird.

Nachdem die Einstellungen gemacht wurden, kann alles, was von den Default-Werten abweicht in eine Datei gespeichert werden (defconfig):

$ make savedefconfig

Sobald man mit den Einstellung zufrieden ist, kann man das File defconfig nach config/<boardname>_defconfig verschieben und in Git aufnehmen. Eine solche Konfiguration wird folgendermassen geladen:

$ make <boardname>_defconfig

Build

Der Kompiliervorgang wird mit make gestartet. Die Parallelisierungsoption darf hier nicht verwendet werden (make -j8):

$ make

Die Ausgabe befindes sich im Ordner output.