Zum Hauptinhalt springenZum Seitenfuß springen

 |  Blog

Yocto, Buildroot, PTXdist, Elbe: Embedded Buildsysteme im Vergleich

Bei der Entwicklung von Linux-Systemen für Embedded Devices stößt man oft auf die Buildsysteme Yocto, PTXdist, Buildroot und Elbe. In diesem Blogbeitrag vergleichen wir diese Open Source Tools anhand relevanter Kriterien.

Yocto

Yocto ist das bekannteste Buildtool für Embedded Linux. Es besteht aus Poky, einer Open Source Referenz Embedded-Distribution, dem OpenEmbedded Projekt, einer Open Source Buildengine sowie Metadaten für Embedded Linux. 

 

Yocto ermöglicht den Bau eigener Linux-Distributionen mithilfe von Shell- und Python-Skripten sowie Rezepten. Zusätzlich zu den vom Yocto Project gepflegten Sourcen, bieten fast alle Hardwarehersteller Unterstützung für die Cross-Kompilierung, sodass nahezu alle Hardwaresysteme unterstützt werden.

Buildroot

Buildroot ist ein weiteres Open Source Buildtool, unterstützt von der Buildroot Association. Es basiert auf Makefiles und verwendet kconfig für die Konfiguration. Über die kconfig-Oberfläche werden verschiedene Konfigurationsdateien erstellt, die im Buildprozess genutzt werden. Dabei werden alle Dateien als Quellcode geladen und für die Zielhardware kompiliert. Buildroot ermöglicht auch die Erstellung eines angepassten Kernels.

PTXdist

PTXdist wurde von Pengutronix entwickelt und ist ebenfalls ein Open Source Buildsystem. Ursprünglich als Fork von Buildroot gestartet, hat sich PTXdist inzwischen eigenständig weiterentwickelt und bietet zusätzliche Funktionen, die in Buildroot nicht verfügbar sind. PTXdist nutzt ebenfalls kconfig für die Konfiguration und basiert auf Makefiles und Bash-Skripten.

PTXdist sammelt alle Sourcedateien und crosskompiliert sie für die Zielhardware. Durch die Weiterentwicklungen ist PTXdist jedoch nicht mehr kompatibel mit Buildroot.  

Elbe

Elbe (Embedded Linux Build Environment) ist ein auf Debian basierendes Buildsystem, das mithilfe von XML-Konfigurationsdateien Rootfs erstellt. Es nutzt das Debian-Paket-Repository und verzichtet auf Cross-Kompilierung bei Standardtools. In einer QEMU-Umgebung können Pakete installiert und das Rootfs generiert werden. Elbe erstellt zusätzlich ein SDK, mit dem Anwendungen für die Zielhardware crosskompiliert werden können. 

 

Vergleichskriterien

Um das passende Buildtool auszuwählen, sollten verschiedene Kriterien berücksichtigt werden. Diese helfen dabei, die spezifischen Anforderungen eines Projekts zu erfüllen:

  • Komplexität & Aufwand: Wie einfach ist es, ein Projekt aufzusetzen, Änderungen einzupflegen und wie hoch sind Buildzeiten und Ressourcenbedarf?
  • Flexibilität & Anpassbarkeit: Können eigene Komponenten eingebunden und Standard-Komponenten angepasst werden? Ist es möglich, die Aufstartkonfiguration (z.B. systemd) während des Bauens zu definieren? Kann das Buildtool erweitert oder angepasst werden?
  • Community & Dokumentation: Wie groß ist die Community, und gibt es gute Dokumentation? Gibt es Unterstützung über IRC, Mailinglisten oder Foren?
  • Hardwareunterstützung: Welche Hardware wird unterstützt? Stellen Hardwarehersteller Komponenten bereit, und kann ein Image der benötigten Größe erstellt werden?
  • Compliance: Wird ein SBOM (Software Bill of Materials) automatisch generiert? Gibt es Unterstützung für Dependency Tracking, und kann der Bau in einer Pipeline mittels Continuous Integration durchgeführt werden? Sind die Ergebnisse reproduzierbar?

Gegenüberstellung

Die folgende Tabelle vergleicht die beschriebenen Buildtools anhand der obene genannten Beispielkriterien. Für die Bewertung wird die Skala + (gut), 0 (neutral), - (schlecht) verwendet. 

  • Yocto: Bietet umfangreiche Funktionen und hohe Flexibilität und Erweiterbarkeit. Die große Community und gute Dokumentation sind Vorteile. Der Nachteil ist die hohe Komplexität, die das Tool für Einsteiger schwieriger macht.
  • Buildroot: Einfach zu nutzen und schnell für erste Projekte. Es hat eine breite Hardwareunterstützung, aber es fehlt an CI-Integration, was ein Nachteil sein kann.
  • Elbe: Hat ebenfalls eine niedrige Komplexität und nutzt Debian-Pakete, was viele Compliance-Anforderungen erfüllt. Nachteil ist die geringere Flexibilität, da alle Pakete "debianized" sein müssen und der Kernel nicht direkt im Buildprozess erstellt wird.
  • PTXdist: Bietet gute Compliance-Möglichkeiten und Flexibilität. Allerdings ist die Community kleiner, was zu weniger Support führen kann.

Für die meisten Projekte könnte Yocto wegen seiner umfangreichen Funktionen und großen Community die beste Wahl sein. Wenn jedoch ein einfaches System ohne umfangreiche Anpassungen gewünscht ist, könnten Buildroot oder Elbe besser geeignet sein. Es ist wichtig, die spezifischen Anforderungen des Projekts zu berücksichtigen, um die passende Wahl zu treffen.

Kommen Sie auf uns zu und wir unterstützen Sie bei der Wahl eines geeigneten Buildtools.

Über den Autor

 

Fabian Rosenfelder ist technischer Informatiker aus Leidenschaft. Als Seniorentwickler hat er seinen Schwerpunkt auf die Softwareentwicklung rund um Embedded Linux, OPC UA und C++ gelegt. Aktuell unterstützt er unsere Kunden bei der Entwicklung von OPC UA Servern, beispielsweise für High Performance Echtzeitsteuerungssysteme. 

Erstellt von