Die Implementierungs-Strategie bei Linux hängt von vielen Faktoren ab: Ressourcen & Know-how:
Dienstleistungen:
Entwicklungsumgebung:
Laufzeitumgebung:
|
Nähere Informationen:
![]() | Dr. Carsten Emde |
![]() | Hans Jürgen Rauscher |
Alle Linux-Systeme werden nach dem gleichen Schema erstellt: Am Anfang steht die Auswahl des Linux-Kernel, in der Regel eine möglichst aktuelle Version, die für die vorgesehene CPU-Architektur beziehungsweise für das verwendete Board verfügbar ist. Hinzu kommen die Patches für Funktionserweiterungen wie Echtzeit-Fähigkeit und zur Unterstützung von speziellen Kontrollern. Anschließend folgt die Wahl der dazu passenden, bereits compilierten GNU-Toolchain (Programmierwerkzeuge), beispielsweise die GNU Compiler Collection (GCC), GNU Binary Utilities (binutils) und Debugger (GDB) sowie die Standard-C-Bibliothek (glibc) oder eine reduzierte Variante. Im letzten Schritt wird der Kernel übersetzt und mit den benötigten Treibern, Dateisystemen sowie Netzwerk-Protokollen in einem Root-Filesystem zusammengefasst. In der Regel sind für diese Arbeiten mehrere Monate anzusetzen. Da die einzelnen Schritte aufeinander aufbauen, lassen sie sich nur bedingt durch paralleles Arbeiten mehrerer Programmierer beschleunigen. Abhängig vom vorhandenen Know-how, der Unternehmens-Strategie und der verfügbaren Zeit sind allerdings mehrere Implementierungsvarianten möglich:
Der Vorteil von Linux im Eigenbau liegt in der vollständigen Beherrschung des Systems. Hier sind sämtliche Schritte vom Kernel bis zur Applikation selbst zu erledigen. Als problematisch zeigt sich der relativ große Zeitaufwand. Schneller geht es mit der Unterstützung eines Linux-Service- Provider, Linux-Consultants oder Open-Source-Software-Organisationen wie das Open Source Automation Development Lab (OSADL). Einige Linux-Service-Provider bieten eigene Toolchains an, zum Beispiel ELDK (Denx) und OSELAS (Pengutronix). Auch ist zu beachten ist, dass die Anpassung und kontinuierliche Wartung, beispielsweise für das Einpflegen von Sicherheits- Patches, langfristig Entwicklungs-Ressourcen binden, die bei der Applikations-Entwicklung eventuell fehlen.
Im Gegensatz dazu bieten die freien, das heißt kostenlosen Standard-Distributionen einen komfortablen Einstieg, da die grundlegenden Arbeiten bereits erledigt sind, beispielsweise die Auswahl, Integration und Zusammenstellung der Software-Pakete. Die Anpassung freier Distributionen an spezielle Computer-Hardware kann aber durchaus sehr aufwendig sein – besonders bei einer geringen Prozessor-Performance und Speicherkapazität der Zielplattform. Daher liegt der Einsatzschwerpunkt von Distributionen wie Debian, Fedora, Open-SuSE und die auf Sourcen von Redhat Enterprise Linux basierenden Distributionen wie CentOS vor allem bei Standard-Hardware mit x86-CPUs; zunehmend unterstützen diese Distributionen auch PowerPC-Prozessoren. Für Fedora wird darüber hinaus die Bereitstellung einer Version für ARM-Prozessoren diskutiert.
Viele Hardware-Anbieter liefern ihre Referenz- und Produkt-Boards mit eigenen Linux-Versionen aus. Die Bandbreite reicht vom binären, auf das Board maßgeschneiderten Linux-Kernel bis zur umfangreichen Distribution mit Bootloader, Toolchain und Cross-Build-Unterstützung. Diese „Starter- Kits“ sollen die Lauffähigkeit der Hardware demonstrieren und einen schnellen Projektstart ermöglichen. Häufig basieren diese Starter-Kits jedoch auf älteren Kernel-Versionen, die nicht regelmäßig aktualisiert werden. Wenn die mitgelieferten Sourcen dann unverständlich und unübersichtlich sind, kann es schwierig bis unmöglich sein, ein Starter-Kit an eine aktuelle Kernel-Version anzupassen.
Es ist aber durchaus möglich, ein vom Hardware-Anbieter im Quellcode bereit- gestelltes Board-Support-Package zu verwenden. Deren Board-spezifische Patches lassen sich bei Bedarf in andere Linux- Kernel implementieren.