Mainline Linux für Cortex-A8 Offizieller Linux Kernel für die eigene Hardware

Linux ist eine attraktive Plattform für Embedded-Projekte in Industrie, Automotive und Medizintechnik. Aber wie erreicht man höchste Qualität auf eigener Hardware? Eine Antwort auf diese Frage liefert der Entwicklungsprozess des Mainline Kernels von Linus Torvalds.

In den letzten Jahren war zu beobachten, dass viele Hardware-Hersteller bei der Linux-Portierung einen vermeintlich leichten Weg gehen:

  • Der Kernel-Source-Code wird genommen,
  • Unterstützung für eigene Hardware wird entwickelt und
  • das Ergebnis wird ausgeliefert.

Nicht selten wird dabei das zentrale Ziel des Herstellers sichtbar: Linux soll möglichst schnell, ohne großen Aufwand und mit vollem Funktionsumfang unterstützt werden. Schließlich sind Prozessor oder Modul ja bereits fertig, es muss nur noch "schnell ein bisschen Software" entwickelt werden.

Industrielle Anwender erwarten von Linux hingegen die vom Mainline Kernel gewohnte hohe Qualität, die auch den bekannten Distributionen für PC und Server eine stabile Basis bietet. Leider können die schnell zusammengebauten Hersteller-Ports diese Erwartungen nur selten erfüllen. So müssen sich Anwender dann mit der Fehlersuche dicht an der Hardware beschäftigen, obwohl sie sich eigentlich auf ihre Applikationen und ihr Produkt konzentrieren wollen.

Erschwerend kommt hinzu, dass die Änderungen der Hersteller am Linux Kernel oft sehr stark verschleiert sind, so dass man nur mit großem Aufwand herausfinden kann, was überhaupt modifiziert wurde und warum. Die Folge: Industrieanwender sind unzufrieden mit dem Hersteller und der Hersteller hat Aufwand mit Supportanfragen. Beides verzögert die Time-to-Market der Produkte.

Der Mainline-Prozess

Was können Hersteller tun, um das Problem zu umgehen? Dazu ist es hilfreich, sich den Entwicklungs-Prozess in der Linux Community anzuschauen (siehe Bild oben): Linus Torvalds veröffentlicht regelmäßig alle drei Monate auf www.kernel.org den so genannten "Mainline Kernel". Nach jedem Release werden für zwei Wochen ("Merge Window") neue Funktionen in den Kernel aufgenommen. Diese wurden lange im Vorfeld von den Entwicklern auf themengebundenen Mailinglisten diskutiert, einem "Peer Review" unterzogen und auf ihre Qualität geprüft. Nur was von vielen erfahrenen Entwicklern für gut befunden wird, findet seinen Weg über die Maintainer in den Mainline Kernel. Die restlichen zehn Wochen bis zum Release dienen Test und Stabilisierung.

Auch beim Portieren neuer ARM-Hardware in den Kernel sollte man diesen Weg gehen, gemäß der Open-Source-Maxime "Release Early, Release Often" sollte ein Kernel Port in kleinen Stücken mit jeweils nur einer Funktion entwickelt und sofort auf den zuständigen Mailinglisten zur Diskussion gestellt werden. Während so der Linux-Port für eine Hardware bei den Entwicklern wächst, finden die ersten Code-Fragmente schon ihren Weg durch den Review in die Mainline.

Beispiel: i.MX

Seit 2005 wird die Freescale-i.MX-Architektur Stück für Stück in den Mainline Kernel gebracht. Heute sind dort MX1, MX21, MX25, MX27, MX31, MX35 und MX51 bereits unterstützt und weitere Derivate in Arbeit. Bei neueren Prozessoren wie dem MX51 (Cortex-A8) wird mit nur wenigen hundert Zeilen Code bereits begonnen, diesen in den Mainline Kernel zu bringen. Der vollständige Funktionsumfang folgt dann nach und nach.

Ist eine Keimzelle erst mal vorhanden, finden sich oft neben dem Kern-Team an vielen Stellen in der Community Entwickler, die spezielle Themen und Treiber beisteuern und vorantreiben. Für die Entwickler ergibt sich der Vorteil, dass Fehler und Designschwächen frühzeitig erkannt werden und unnötiger Aufwand vermieden wird.

Das Ergebnis: das Peer Review sichert die Qualität und es entsteht kompakter, hochwertiger Code, mit dem der industrielle Anwender wenig Probleme hat. Er kann jeden zukünftigen Kernel ohne Zutun des Herstellers auf seiner Hardware nutzen: Neue Features stehen ebenso zur Verfügung wie Bug Fixes und gesteigerte Performance. Darüber hinaus garantiert die Mainline eine langfristige Verfügbarkeit der unterstützten Komponenten.

Hersteller sind also gut beraten, den Mainline-Prozess bereits von Anfang an zu ihrem Vorteil zu nutzen: Das schafft zufriedene Kunden und geringen Support-Aufwand.

 

Der Autor:

Dipl.-Ing. Robert Schwebel
ist bei Pengutronix als Head of Embedded Linux Development tätig und leitet ein Kernel-Entwicklerteam, das mehrere ARM-Subarchitekturen im Linux-Kernel betreut.