Menü

Streit um stabiles Treiber-API für Linux

Lesezeit: 2 Min.
In Pocket speichern
vorlesen Druckansicht Kommentare lesen 1029 Beiträge
Von

Laut einem Blog-Eintrag des bekannten Kernel-Entwicklers Greg Kroah-Hartman möchten drei japanische Mitglieder des Open Source Development Lab (OSDL) gerne stabile Kernel-Schnittstellen (APIs) einführen, die die Entwicklung und Pflege von nicht im Kernel enthaltenen Treibern vereinfachen sollen. Auf diesem Wege möchte das Trio aus Fujitsu, NEC und Hitachi auch nicht unter Open-Source-Lizenzen stehende Treiber ermöglichen – doch die sind bei vielen Kernel-Entwicklern nicht gerne gesehen. Und möglicherweise sind sie gar illegal, da sie Closed-Source-Software mit GPL-Code kombinieren.

Es existiert zwar eine API (Application Programming Interface) für bereits im Kernel vorhandene und externe Treiber, diese wird jedoch relativ häufig geändert. Bei den Änderungen der Kernel-Schnittstellen passen die Entwickler die integrierten Treiber gleich mit an, externe Treiber müssen hier jedoch hinterherarbeiten. Daher sind die meisten Linux-Treiber bereits im Kernel vorhanden oder ersuchen um die Aufnahme in den Kernel.

Greg Kroah-Hartman, früher bei IBM, jetzt bei Novell/Suse angestellt, verwaltet die USB- und PCI-Subsysteme und war maßgeblich an der Entwicklung von Udev und dem Sysfs-Dateisystem beteiligt. In einem früheren Blog-Eintrag und einer Präsentation hat er dargelegt, warum er eine stabile Schnittstelle für externe Treiber für Unsinn hält. Andere Kernel-Entwickler scheinen der gleichen Meinung zu sein und nahmen den Blog-Eintrag in die Dokumentation des Kernels auf. Die Argumente gegen eine stabile Treiber-Schnittstelle im Kernel hatte Kroah-Hartman bereits vor einigen Monaten auch OSDL-Japan dargelegt, nachdem diese OSDL-Division schon einmal eine stabile Kernel-API gefordert hatte. Deren Mitglieder Fujitsu, NEC und Hitachi zeigten sich jedoch nach seinen Angaben uneinsichtig: Er solle den drei Firmen nun persönlich erklären, warum die Kernel-Entwickler dagegen sind.

In diesem Zusammenhang schickte ihm OSDL-Japan auch eine Präsentation mit Turbolinux-Logo im Hintergrund, die die Vorteile eines stabilen API für die Hardware-Hersteller dargelegt. Besonders stößt Kroah-Hartman dabei eine Anmerkung auf Seite sechs auf: Ein Vorteil eines stabilen Treiber-API für die Hersteller sei, dass sie die Treiber-Quelltexte nicht offen legen müssten und die Treiber als vorkompilierte Closed-Source-Module vertreiben könnten.

Dies ist nicht nur Kroah-Hartman ein Dorn im Auge, sondern laut ihm und anderen Kernel-Entwicklern wie Alan Cox möglicherweise gar illegal. Hier greift der Schutz der GPL, der das Linken von nicht unter GPL-kompatibler Lizenz veröffentlichtem Code in den Kernel verbietet. Auch Torvalds selbst hat sich bereits in der Vergangenheit zum Thema geäußert und sieht hier eine rechtliche Grauzone.

In dieser Zone bewegen sich auch die Grafikkartenhersteller ATI und Nvidia, die Closed-Source-Linux-Treiber bereitstellen. Aufgrund des fehlenden stabilen Treiber-API müssen sie eine quelloffene Zwischenschicht einsetzen, die beim Kompilieren auch Closed-Source-Code mit in das Kernel-Modul linkt. Erkennt der Kernel beim Laden eines solchen Moduls den nicht-GPL-Treiber, markiert er sich selbst als "verdorben, befleckt" (Tainted). Kernel-Entwickler und Distributionen verweigern bei Problemen mit solchen Kerneln die Unterstützung. Der Rat lautet explizit, keine 3D-Grafikkarten mit Closed-Source-Treibern zu kaufen – der prominente Kernel-Entwickler Arjan van de Ven listet die Gründe explizit auf. Intel wird hier gelegentlich als Alternative genannt: Der größte Hersteller von Grafikchips stellt Open-Source-Treiber für seine Chipsätze mit integrierter Grafik bereit.

Die Kernel-Entwickler versuchen unterdessen, die rechtliche Grauzone um Closed-Source-Treiber zu beseitigen und die Entwicklung freier Treiber zu fördern, indem sie neue Kernel-Schnittstellen mittels EXPORT_SYMBOL_GPL explizit nur noch für GPL-kompatiblen Code freigeben. Auf lange Sicht müssen ATI und Nvidia daher wohl auf GPL-Treiber umschwenken, ihr Linux-Engagement einstellen oder einen anderen legalen Weg finden, um mit dem Kernel zu interagieren. (thl)