Linux – die Varianten

9. Oktober 2007, 8:39 Uhr | Dr. Carsten Emde, Hans Jürgen Rauscher
Diesen Artikel anhören

Fortsetzung des Artikels von Teil 1

Checkliste - Die Linux-Varianten

Die Implementierungs-Strategie bei Linux hängt von vielen Faktoren ab:

Ressourcen & Know-how:

  • Wie ist die Zeitverteilung der Wartung bestehender Produkte versus Entwicklung neuer Produkte?
  • Wieviele Entwickler mit Linux-Erfahrung sind im Haus verfügbar?
  • Wieviele können sich um die Entwicklung und Pflege von Linux und Linux- Tools kümmern?

Dienstleistungen:

  • Wer beantwortet technischen Fragen(Support)?
  • Wer pflegt den eigenen Linux-Code (Maintenance)?
  • Wer berät (Consulting)?
  • Wer portiert den Linux-Code eventuell auf ein anderes Board oder eine andere CPU-Architektur?
  • Wer hilft bei der Implementierung (Services)?

Entwicklungsumgebung:

  • Welche Tools nutzen?
  • Gibt es Vorgaben der Unternehmens-IT hinsichtlich Entwicklungsrechner, Versionsverwaltung?
  • Wie ist die Integration von Tools vom Hardware Bring-up bis zum Systemtest?

Laufzeitumgebung:

  • Welche CPU und welches Board wird eingesetzt?
  • Welche Kernel-Version?
  • Welche Treiber, Kernel-Module und Pakete sind notwendig?
  • Wo muss das Root-Filesystem liegen?
  • Wird die Applikation portiert oder neu erstellt?
  • Bestehen Sicherheitsanforderungen (SELinux)?
  • Welche Echtzeit-Eigenschaften sind notwendig?

Nähere Informationen:

  • The Real Costs of Roll-Your-Own-Linux: http://www.windriver.com/whitepapers/
  • Realtime-Preemption Patches: html>www.osadl.org/Realtime-Preempt-Kernel.kernel-rt.0.html

Dr. Carsten Emde
ist Consultant für Embedded-Linux und Geschäftsführer des Open Source Automation Development Lab (OSADL) in Schopfloch.

Hans Jürgen Rauscher
ist System Architect Networking bei der Wind River GmbH in Ismaning.

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:

  • Linux im Eigenbau,
  • freie Standard-Distributionen,
  • Linux vom Hardware-Anbieter oder
  • kommerzielles Linux.

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.

CA710-07-Bild2_tm_03.jpg
Bild 2. Ablauf einer Linux-Implementierung: Kommerzielles Linux reduziert den Aufwand beim Projektstart und sorgt so für einen Vorsprung von etwa 12 Wochen gegenüber Linux im Eigenbau.

  1. Linux – die Varianten
  2. Checkliste - Die Linux-Varianten

Jetzt kostenfreie Newsletter bestellen!