Hölle zugefroren? Nvidia veröffentlicht Linux-Kernel-Treiber unter GPL/MIT

Nvidia hat angekündigt, die Linux-Kernel-Module für seine GPUs künftig unter den offenen Lizenzen GPL und MIT dual-lizenziert zur Verfügung zu stellen.

In Pocket speichern vorlesen Druckansicht 242 Kommentare lesen
Aufmacher NVIDIA OpenSOurce Treiber

(Bild: c't)

Lesezeit: 7 Min.
Von
  • Martin Gerhard Loschwitz
Inhaltsverzeichnis

GPU-Hersteller Nvidia will die Linux-Kernel-Treiber für seine Grafikprozessoren künftig dual-lizenziert unter den Open-Source-Lizenzen GPL und MIT bereitstellen. Die erste Version R515 des neuen Treibers bietet stabilen Support für Nvidias KI-GPUs und konzentriert sich mithin auf Rechenzentren. Unterstützung für Desktop-GPUs der GeForce-Reihe beabsichtigt der Hersteller bald nachzuliefern.

In einer Ankündigung Nvidias aus der vergangenen Nacht kündigt der Hersteller die Freigabe unter den Open-Source-Lizenzen GPLv2 und MIT an. Entwicklern steht es dann frei, die für ihren Einsatzzweck besser geeignete Lizenz auszuwählen; insbesondere die MIT-Lizenz ist dabei kaum mehr als ein nur drei Absätze langes Dokument, das jedermann praktisch sämtliche denkbaren Rechte im Hinblick auf die Software unwiderruflich einräumt.

Als Grund für diesen Schritt gibt der Hersteller gleich mehrere Faktoren an. Zunächst wolle man ganz grundsätzlich die "Anwendererfahrung" bei der Verwendung von Nvidia-GPUs in Kombination mit Linux verbessern. Entwickler hätten künftig viel besser als bisher die Möglichkeit, Probleme zu untersuchen und innerhalb des Treibers zu verfolgen. Auch Distributoren sollen profitieren, weil diese den quelloffenen Treiber künftig deutlich leichter in ihre Systeme integrieren können.

Die Open-Source-Module dürften laut Nvidias Ankündigung bald ihren Weg in die Paket-Repositories diverser Linux-Distributionen finden: Canonical plant den Treiber in den kommenden Monaten in Ubuntu 22.04 LTS auszuliefern. SUSE will die Module im Juni in SUSE Linux Enterprise 15 SP4 integrieren. Anders als beim proprietären Kernel-Modul dürften signierte Module das Deaktivieren von Secure-Boot überflüssig machen.

Das Einsatzgebiet von GPUs hat sich in den vergangenen Jahren kontinuierlich vergrößert. Längst kommen diese nicht mehr ausschließlich in hochgerüsteten Gaming-PCs unter heimischen Schreibtischen zum Einsatz – sie sind auch immer häufiger im Rechenzentrum anzutreffen.

Die Open-Source-Kernel-Module wurden vorerst hauptsächlich auf Datacenter-GPUs der Turing- und Ampere-Generation getestet. Nvidia bezeichnet den Code als “production-ready” für diese Art von Compute-Workloads. Für GeForce- und Workstation-Grafikkarten markiert Nvidia die quelloffenen Module als “alpha quality”.

Unterstützt werden nur Karten der Turing-Architektur und neuer, also GPUs, die seit 2018 veröffentlicht wurden, weil die Open-Source-Module auf den GSP (GPU System Processor) angewiesen sind, der mit Turing eingeführt wurde. Nutzer älterer Grafikkarten bleiben auf den proprietären Treiber oder den freien Nouveau-Treiber angewiesen. Die Firmware und Userspace-Komponenten des Treibers, beispielsweise CUDA, legt Nvidia nicht offen. Laut Nvidias-Dokumentation fehlen der quelloffenen Variante noch Features wie G-Sync, Quadro Sync, SLI, Stereo, Rotationen unter X und YUV 4:2:0 bei Turing-Karten.

Nvidia merkt übrigens an, dass es durchaus Pläne dafür gibt, den nun quelloffenen Treiber auch in den offiziellen Linux-Kernel einfließen zu lassen. Das bedingt in der Regel einen langwierigen Prozess mit viel Kommunikation auf der LKML: Weil der Code der jetzt veröffentlichten Module mit den Konventionen des Linux-Kernels bricht, eignet er sich in absehbarer Zeit nicht für eine Integration in den Mainline-Kernel. Daran will Nvidia nach eigener Aussage jedoch gemeinsam mit den Kernel-Entwicklern und Canonical, SUSE sowie Red Hat arbeiten.

Das neue Nvidia-Kernel-Modul meldet sich mit Open-Source-Lizenz.

(Bild: Screenshot)

Der quelloffene Nouveau-Treiber, der Teil des Linux-Kernel ist, dürfte langfristig von Nvidias Code-Basis profitieren. Bislang ist der Treiber auf spezielle Firmware von Nvidia angewiesen und kann keinen Einfluss auf die Taktraten und das Energiemanagement neuerer Grafikkarten nehmen, sodass die ihre potenzielle Performance nicht ausschöpfen können. Nvidia selbst regt an, dass sich der Nouveau-Treiber zwischenzeitlich ein paar Dinge beim Hersteller-Treiber abschaut, um den eigenen Funktionsumfang zu erweitern. Denkbar ist schließlich auch, dass beide Treiber irgendwann Bestandteil des Kernels wären – wie üblich wird die Entscheidung darüber letztlich bei Linus Torvalds selbst liegen.

Nvidia-GPUs und Linux, das war bisher eine ganz besondere Beziehung: Wer unter Linux in den Genuss voller 3D-Beschleunigung der (oft empfindlich teuren) GPUs kommen wollte, musste bisher eine Kombination aus einem proprietären Kernel-Modul sowie einem proprietären Treiber für die genutzte grafische Oberfläche installieren. Die Krux: Das Nvidia-Modul musste jeweils für den gerade laufenden Kernel spezifisch kompiliert sein.

Oft genug entwickelte der Linux-Kernel sich allerdings schneller als das proprietäre Nvidia-Modul. Regelmäßig schlug deshalb der Versuch fehl, eine bestehende Version des Nvidia-Treibers für eine gerade frisch erschienene, neue Version des Linux-Kernels zu übersetzen. Über die Jahre wurde der Nvidia-Treiber für die Kernel-Entwickler gar zum ständigen Ärgernis: Klappte mit dem Treiber etwas nicht, ganz gleich ob schon das Bauen des Moduls scheiterte oder ob bestimmte Funktionen nicht verfügbar waren, wandten Anwender sich regelmäßig etwa an die Linux Kernel Mailingliste (LKML) und hofften dort auf Hilfe.

Gelegentlich störte der Nvidia-Treiber gar andere Teile des Kernels und brachte diese zum Abstürzen. Weder gehört Endanwender-Support allerdings zu den typischen Aufgaben der LKML, noch hätten die Linux-Entwickler sinnvoll helfen können – denn gerade weil das Modul nicht unter einer offenen Lizenz stand, war es aus Entwicklersicht eine typische "Blackbox" und Debugging mithin weitgehend unmöglich.

Legendär ist in diesem Kontext längst ein Wutausbruch von Linux-Erfinder und Chefentwickler Linus Torvalds an der Universität in Helsinki aus dem Jahre 2012. Erwartungsgemäß fand Torvalds für Nvidia in diesem Kontext nur bedingt nette Worte. Auch machte er keinen Hehl daraus, dass er das Nvidia-Modul für ein riesiges Problem in Sachen Sicherheit und Stabilität hielt.

Die erste Treiber-Version, denen der neue quelloffene Treiber beiliegt, trägt die Versionsnummer R515, die aktuell als Beta vorliegt. Sie steht auf der Nvidia-Website zur Verfügung; ihre Quellen finden sich auf GitHub. Das fertige Paket enthält sowohl den quelloffenen Treiber als auch den bisherigen Closed-Source-Treiber. Soll ersterer zum Einsatz kommen, ist dafür ein expliziter "Opt-In" nötig, indem der Admin bei der Installation dem Installationsskript des Nvidia-Treiber-Pakets den Parameter "-m=kernel-open" mit auf den Weg gibt.

Der Nouveau-Treiber muss für die Installation deaktiviert werden. Um die quelloffene Variante der Kernel-Module schon jetzt mit Desktop-GPUs zu nutzen, muss das Modul "nvidia.ko" mit der Option "NVreg_OpenRmEnableUnsupportedGpus=1" geladen werden. Außerdem mussten wir auf unserem Testsystem dem Linux-Kernel beim Systemstart den Parameter nvidia-drm.modeset=1 übergeben, ansonsten blieb der Bildschirm schwarz. Für den Alltagsbetrieb ist der quelloffene Treiber im derzeitigen Alpha- respektive Beta-Status jedoch noch nicht zu empfehlen.

(dmk)