Buildroot
# Buildroot

Buildroot ist ein Open-Source-Projekt, welches den Entwickler eines Linux-Systems dabei unterstützt, die notwendigen Pakete auszuwählen, zu konfigurieren und daraus ein Root-Filesystem zu erstellen.

Dieses Paket besteht aus einer Sammlung von Skripten, welche die notwendigen Schritte bis zum gebrauchsfertigen Zielsystem abbilden. Die einzelnen Schritte sind weitgehend konfigurierbar und aufeinander abgestimmt. Das Paket vereinigt so gut wie alles, was der Entwickler benötigt, um ein uClibc-basiertes Linuxsystem zu entwickeln. OpenWrt Buildroot ist eine stark modifizierte Version und findet im OpenWrt-Projekt Anwendung.

## Teilsysteme

### Cross-Development-Toolchain

Es werden der GCC, die Binutils und die uClibc im Quelltext heruntergeladen, anschließend wird auf deren Basis eine voll funktionsfähige Entwicklungsumgebung für die ausgewählte Zielplattform (z. B. ARM, MIPS oder i386) erstellt. Alternativ kann eine bereits vorhandene Entwicklungsumgebung, beispielsweise vom Hersteller einer bestimmten Prozessorfamilie, genutzt werden. Dies ermöglicht es auch, die unter gewöhnlichen Linux-Distributionen verwendete GNU-C-Bibliothek für das Zielsystem zu benutzen.

### Entwicklungs- und Debugging-Werkzeuge für das Target

Genauso können die Entwicklungswerkzeuge für das Zielsystem erstellt werden, was eine weitere Entwicklung dort möglich macht. Die wichtigsten Debuggingwerkzeuge (z. B. gdb) werden sowohl für die Host- als auch für die Zielplattform zur Verfügung gestellt. Dies ermöglicht interaktives Debugging auf Systemen, welche kaum Ein- oder Ausgabemöglichkeiten besitzen.

### busybox und uClibc

Sowohl BusyBox, als auch uClibc sind zentraler Bestandteil des Systems. Beide Projekte werden größtenteils von den gleichen Entwicklern gepflegt. Allerdings lässt sich mit einer externen Toolchain statt der von Buildroot erzeugten die glibc (statt der uClibc) nutzen und auch Busybox lässt sich durch die entsprechenden, meist jedoch funktionsreicheren und damit größeren, Programme ersetzen.

### Programmpakete

Neben dem minimalen Root-Dateisystem gibt es eine sehr große Auswahl an fertigen Open-Source-Paketen, die Auswahl reicht von Netzwerk-Programmen über grafische Oberflächen bis hin zu Audioprogrammen. Aber auch selbst erstellte Pakete lassen sich mit wenig Aufwand in das skriptbasierte System integrieren.

### Kernel

Innerhalb von Buildroot kann eine Kernelversion angegeben werden, beim Erstellen des Zielsystems wird dieser Kernel dann gemeinsam mit dem restlichen System mitgeneriert. Außerdem können auch benutzerdefinierte Kernel bezogen werden (siehe dazu die Optionen des Typs BR2_LINUX_KERNEL_CUSTOM_*).

### Bootloader

Die wichtigsten Bootloader sind ebenfalls mit integriert, darunter grub und u-boot.

