Embedded-Betriebssysteme Linux: Embedded für alle

Linux ist heute erste Wahl geworden, wenn es um die Entscheidung für ein Betriebssystem in einem leistungsfähigen Embedded-System geht. Wie kann es sein, dass eine Open-Source-Software gerade in einem in jeder Hinsicht kritischen Bereich wie bei Embedded-Systemen so erfolgreich ist? Dieser Artikel beschreibt die Hintergründe und erläutert die einzelnen Aspekte der ungewöhnlichen Erfolgsgeschichte von Linux.

Als Linus Torvalds im August zu Linux schrieb „Wird nichts Großes“ und im Oktober 1991 den Quellcode für Linux 0.02 verfügbar machte, ahnte keiner, dass bereits im März 1992 mit der Version 0.95 ein für viele Anwendungen brauchbares Betriebssystem zur Verfügung stehen würde. Und natürlich konnte auch keiner vorhersehen, dass knapp 20 Jahre später aus den weniger als 200.000 Zeilen Quellcode der Version 0.95 mehr als 13 Millionen Zeilen in Version 3.0 würden. Heute unterstützt Linux praktisch alle relevanten Prozessor-Architekturen und Hardware-Geräte und damit mehr als jedes andere Betriebssystem.

Seit Februar 1992 wird Linux unter der GNU General Public License (GPL) lizenziert. Die mit dieser Lizenz verbundene garantierte Freiheit und uneingeschränkte Verwendbarkeit, die im Gegensatz zur Lizenzierung des damals alternativen Minix stand, waren sicher wichtige Gründe, warum Linux weltweit so viele Mitarbeiter begeistern konnte und eine so rasche Entwicklung nahm. Die Wahl der GNU GPL hat Linux Torvalds 1997 mit den Worten kommentiert: „Linux unter die GPL zu stellen, war eindeutig das Beste, was ich jemals getan habe.“

Bis auf den Desktop-PC hat Linux in praktisch allen Bereichen der Computerbranche eine dominierende Position eingenommen. Den wohl höchsten Anteil hat Linux bei Supercomputern mit über 90 % erreicht; aber auch in anderen Bereichen wird Linux in nennenswertem Maße eingesetzt. Der Marktanteil von Linux in Embedded-Systemen kann nicht genau angegeben werden, weil verlässliche Daten dazu nicht öffentlich verfügbar sind. Allgemein wird aber davon ausgegangen, dass Linux bei zur Zeit neu entwickelten Embedded-Systemen eine Führungsrolle eingenommen hat.

Hürden: Portierbarkeit, Echtzeit-Fähigkeit, Zertifizierung

Die oben genannten frühen Versionen von Linux waren ausschließlich auf Systemen mit Intels 32-bit-Architektur lauffähig, und Linus Torvalds selbst hielt anfänglich eine Portierung auf andere Architekturen für praktisch ausgeschlossen. Aber bereits ab 1994 begannen Aktivitäten, Linux auch auf andere Architekturen zu portieren. Dies betraf etwa gleichzeitig PowerPC- und ARM-Prozessoren, die heute weitgehend uneingeschränkt in allen ihren Subarchitekturen und Facetten von Linux unterstützt werden. Damit war eine wesentliche Voraussetzung für den Einsatz von Linux in Embedded-Systemen erfüllt.

Die wohl spektakulärste Portierung führte zu ersten offiziellen Kernel-Patches im Dezember 1999 und bereits wenige Monate später zu einer lauffähigen Distribution: Linux auf IBM-Mainframes. Offensichtlich läuft heute ein bedeutender Anteil dieser Systeme unter Linux. Diese Portierung erhöhte natürlich das Vertrauen in das Linux-Betriebssystem und dessen Portierbarkeit, und es folgten viele weitere Architektur-Ports.

Als eine zweite wichtige Voraussetzung, die ein Betriebssystem für Embedded-Systeme erfüllen muss, ist die Echtzeit-Fähigkeit zu nennen. Zwar gilt diese Anforderung nur für eine Minderheit der heute eingesetzten Embedded-Systeme. Aber es wird häufig diskutiert, dass zukünftige Anwendungen und weiterentwickelte Versionen möglicherweise ein deterministisches Antwortverhalten benötigen, und deshalb entscheidet man sich vorsichtshalber in vielen Fällen gleich für ein Echtzeit-Betriebssystem - speziell auch unter Berücksichtigung der langen Produktlebensdauer von Embedded-Systemen. Dies stellte nun eine besondere Herausforderung für Linux dar; denn bis vor einigen Jahren ging man davon aus, dass ein Echtzeit-Betriebssystem von der ersten Zeile an mit besonderer Berücksichtigung dieser Eigenschaft geschrieben werden muss.

Dies war bei Linux natürlich nicht der Fall, und die nachträgliche Ausrüstung eines Betriebssystem-Kernels mit Echtzeit-Fähigkeit wurde als unmöglich angesehen. Auf der anderen Seite hat aber ein General-Purpose-Betriebssystem mit Echtzeit-Fähigkeit ein extrem großes Potential wie z.B. die folgenden Anwendungen:

  • Audio-Recording und Audio-Playback auf Standard-PC-Hardware,
  • Video-Recording und Video-Playback auf Standard-PC-Hardware,
  • Transaktions-Server mit genauen Zeitstempeln, z.B. Highspeed-Trading,
  • Automatisierungs-Industrie.

Der rasche Task- und Kontextwechsel bei Echtzeit-Fähigkeit stellt hohe Ansprüche an die korrekte Serialisierung von Zugriffen auf exklusive Ressourcen des Betriebssystems und der Hardware.

Dadurch können Fehler schneller und zuverlässiger aufgedeckt werden, so dass eine allgemeine Qualitätsverbesserung des Kernels eintritt, die auch für den Betrieb ohne Echtzeit-Fähigkeit gilt. Um Linux Echtzeit-Eigenschaften zu geben, wurden etwa ab 1999 gleichzeitig zwei sehr verschiedene Wege gegangen (Bild 1): Single-Kernel und Dual-Kernel.