NVIDIA Open-Source-Grafiktreiber für den Linux-Kernel

NVIDIA hat angekündigt, dass alle in seinem Satz proprietärer Grafiktreiber enthaltenen Kernelmodule Open Source sind. Der Code ist unter MIT- und GPLv2-Lizenzen offen. Die Möglichkeit, Module zu erstellen, wird für x86_64- und aarch64-Architekturen auf Systemen mit Linux-Kernel 3.10 und neueren Versionen bereitgestellt. Die im User Space verwendete Firmware und Bibliotheken wie CUDA-, OpenGL- und Vulkan-Stacks bleiben proprietär.

Es wird erwartet, dass die Veröffentlichung des Codes zu einer deutlichen Verbesserung der Benutzerfreundlichkeit der Arbeit mit NVIDIA-GPUs auf Linux-Systemen führt, die Integration mit dem Betriebssystem stärkt und die Bereitstellung von Treibern und das Debuggen von Problemen vereinfacht. Die Entwickler von Ubuntu und SUSE haben bereits die Bildung von Paketen auf Basis offener Module angekündigt. Das Vorhandensein offener Module vereinfacht auch die Integration von NVIDIA-Treibern in Systeme, die auf nicht standardmäßigen benutzerdefinierten Builds des Linux-Kernels basieren. Für NVIDIA wird Open Source dazu beitragen, die Qualität und Sicherheit von Linux-Treibern durch eine engere Interaktion mit der Community und die Möglichkeit der Überprüfung von Änderungen durch Dritte und unabhängiger Prüfungen zu verbessern.

Es wird darauf hingewiesen, dass die vorgestellte offene Codebasis gleichzeitig bei der Bildung proprietärer Treiber verwendet wird, insbesondere im heute veröffentlichten Beta-Zweig 515.43.04. In diesem Fall handelt es sich bei dem primären Repository um ein geschlossenes Repository, und die vorgeschlagene offene Codebasis wird nach einer bestimmten Verarbeitung und Bereinigung für jede Veröffentlichung proprietärer Treiber in Form eines Casts aktualisiert. Der Verlauf einzelner Änderungen wird nicht bereitgestellt, sondern nur ein allgemeiner Commit für jede Version des Treibers (derzeit ist der Code der Module für Treiber 515.43.04 veröffentlicht).

Mitglieder der Community haben jedoch die Möglichkeit, Pull-Requests einzureichen, um ihre Korrekturen und Änderungen am Modulcode zu pushen. Diese Änderungen werden jedoch nicht als separate Änderungen im öffentlichen Repository widergespiegelt, sondern zunächst in das private Haupt-Repository integriert und erst dann mit den restlichen Änderungen zum Öffnen übertragen. Um an der Entwicklung teilzunehmen, müssen Sie eine Vereinbarung über die Übertragung der Eigentumsrechte am übertragenen Code an NVIDIA (Contributor License Agreement) unterzeichnen.

Der Code der Kernel-Module ist in zwei Teile gegliedert: allgemeine Komponenten, die nicht an das Betriebssystem gebunden sind, und eine Schicht für die Interaktion mit dem Linux-Kernel. Um die Installationszeit zu verkürzen, werden gemeinsame Komponenten weiterhin in proprietären NVIDIA-Treibern in Form einer bereits zusammengestellten Binärdatei bereitgestellt und die Schicht wird auf jedem System unter Berücksichtigung der aktuellen Kernel-Version und vorhandener Einstellungen zusammengestellt. Folgende Kernelmodule werden angeboten: nvidia.ko, nvidia-drm.ko (Direct Rendering Manager), nvidia-modeset.ko und nvidia-uvm.ko (Unified Video Memory).

Die GPU-Unterstützung für GeForce-Serien und Workstations wird als Alpha-Qualität aufgeführt, dedizierte GPUs auf Basis der NVIDIA Turing- und NVIDIA Ampere-Architekturen, die in Rechenzentrumsbeschleunigungs- und Parallel-Computing-Architekturen (CUDA) verwendet werden, werden jedoch vollständig unterstützt und vollständig getestet und sind für den Einsatz in der Produktion geeignet Projekte (Open Source ist bereits bereit, proprietäre Treiber zu ersetzen). Für zukünftige Versionen ist eine Stabilisierung der GeForce- und GPU-Unterstützung für Workstations geplant. Letztendlich wird das Stabilitätsniveau der Open-Source-Codebasis auf das Niveau proprietärer Treiber gebracht.

In der aktuellen Form ist die Aufnahme veröffentlichter Module in den Hauptkernel nicht möglich, da sie nicht den Codierungsstilanforderungen und Architekturkonventionen des Kernels entsprechen. NVIDIA beabsichtigt jedoch, mit Canonical, Red Hat und SUSE zusammenzuarbeiten, um dieses Problem zu lösen Stabilisierung der Treibersoftwareschnittstellen. Darüber hinaus kann der veröffentlichte Code zur Verbesserung des im Kernel enthaltenen Open-Source-Nouveau-Treibers verwendet werden, der dieselbe GPU-Firmware wie der proprietäre Treiber verwendet.

Source: opennet.ru

Kommentar hinzufügen