Linux: Kernel-Entwickler drĂŒcken freie Grafiktreiber durch

Der Pinguin ist Vorbild fĂŒr das Kernel-Logo Tux.
(Bild: Daniel AJ Sokolov)
Selbst Schwergewichte der Grafikchip-Branche sind eingeknickt und bieten mittlerweile quelloffene Kernel-Treiber an. Anwendern verschafft das Freiraum.
Die VorwĂŒrfe sind so alt wie Linux: Die Kernel-Entwickler erschweren die unabhĂ€ngige Entwicklung von Grafiktreibern fĂŒr Linux. Damit wĂŒrden sie der Linux-Welt einen BĂ€rendienst erweisen; sie sollen lieber Lizenz-Barrikaden einreiĂen und stabile Programmierschnittstellen fĂŒr Treiber schaffen. Forderungen dieser Art finden sich zehntausendfach im Internet, einige davon aus der FrĂŒhzeit von Linux. Ein Blick auf jĂŒngste Entwicklungen zeigt jedoch: FĂŒr die Kernel-Entwickler hat es sich ausgezahlt, hart zu bleiben. Gerade weil sie es externen Treibern seit jeher schwer machen, gibt es mittlerweile fĂŒr alle gĂ€ngigen Grafikkerne quelloffene Kernel-Treiber; in fast allen FĂ€llen stammen die sogar von den Herstellern selbst und sind Teil von Linux, genau wie es Linus Torvalds und seine Mitstreiter wĂŒnschen. Dennoch bleibt die Lage bei Grafiktreibern vertrackt.
Nvidia beugt sich dem Druck
GeForce-GPUs sind das bekannteste Beispiel fĂŒr Grafikkerne, deren Hersteller lang und erfolgreich voll auf proprietĂ€re Linux-Treiber gesetzt hat. Das Ă€nderte sich erst im Mai 2022, als Nvidia ĂŒberraschend einen Kernel-Treiber unter Open-Source-Lizenz [1] veröffentlicht hat.
Dieser als nachladbares Kernel-Modul ĂŒbersetzbare Treiber wird aber allem Anschein nach nie in den Linux genannten Betriebssystemkern einflieĂen, der von jeher Kernel-Basisinfrastruktur und Treibercode verquickt. Linux profitiert dennoch: Red-Hat-Entwickler verbessern mit Code und Informationen aus Nvidias Modul gerade den im Kernel enthaltenen Nouveau-Treiber.
Durch die Umbauten lernt Nouveau mit dem jĂŒngst freigegebenen Linux 6.6 [2] und der Anfang Januar erwarteten Version 6.7, "Ada Lovelace"-GPUs von GeForce-40xx-Grafikkarten anzusprechen. Mittelfristig soll das Ganze auch den bislang eher rudimentĂ€ren Support fĂŒr die VorgĂ€nger "Ampere" (u.a. 30xx-Serie) und "Turing" (u.a. 20xx-Serie) signifikant verbessern und die 3D-Performance deutlich steigern; der Code dazu steckt schon im Kernel, liegt standardmĂ€Ăig aber vorerst brach. Weitere Verbesserungen, die indirekt Nvidias offenem Treiber zu verdanken sind, reifen derweil bereits und sollen in die nĂ€chsten Linux-Versionen einflieĂen.
Nvidias 3D-Treiber bleiben proprietÀr
Wohlgemerkt hat Nvidia lediglich Code eines Kernel-Moduls offengelegt, der beim Grafiktreiberstack nur das Fundament bildet. Denn die darauf aufsetzenden Treiber bleiben proprietĂ€r â etwa jene fĂŒr 3D (OpenGL und Vulkan), Videowiedergabe (NVDEC), Videoencoding (NVENC) oder allgemeine Berechnungen (CUDA) mittels GPU. Offene Treiber fĂŒr Nvidias Modul gibt es nicht. Darum nehmen die Linux-Entwickler es auch nicht auf, denn proprietĂ€re Treiber machen eine ordentliche QualitĂ€tskontrolle unmöglich und erschweren die Validierung spĂ€terer Ănderungen. Ohnehin sperren sich Torvalds & Co. in der Regel gegen die Aufnahme von Treibercode fĂŒr Hardware fĂŒr die der Kernel schon einen Treiber mitbringt.
Diese nicht im Kernel-, sondern im Userspace laufenden Treiber arbeiten nicht mit Nouveau zusammen â wer sie einsetzen will, braucht eines der beiden Kernel-Module von Nvidia. Bis auf weiteres zumeist das altbekannte proprietĂ€re Modul, denn dem quelloffenen fehlen noch mehrere Funktionen, die fĂŒr Desktop- und Notebook-GPUs wichtig sind. Die rĂŒstet Nvidia langsam nach.
Irgendwann kann das Modul so vielleicht die Handhabung von Nvidias Treiberstack erleichtern, der bei der Installation gerne mal zickt und bei Kernel-Updates schnell in Schieflage gerĂ€t. Dazu mĂŒssen Distributionen das Modul aber vorkompiliert mitliefern. Manche scheuen derlei, weil sie dann erst auf eine neue Kernel-Version wechseln können, wenn Nvidia oder jemand anders das Modul zu dieser kompatibel gemacht hat. Andere Distributionen scheuen diese AbhĂ€ngigkeit nicht und haben teilweise sogar schon das proprietĂ€re Modul vorkompiliert beigelegt, obwohl Teile der Open-Source-Community darin einen VerstoĂ gegen die Lizenz von Linux sehen: der GPLv2.
UnabhÀngig entwickelte Vulkan- und Video-Wiedergabe-Treiber
Dank engagierten Open-Source-Entwicklern brauchen manche Anwender die proprietĂ€ren GeForce-Treiber aber vielleicht bald nicht mehr. Denn unter FederfĂŒhrung einer Mitarbeiterin von Collabora ist mit "NVK" ein auf Nouveau aufbauender Userspace-3D-Treiber entstanden, der bereits Vulkan 1.0 meistert. Er floss kĂŒrzlich in Mesa ein, das auch die offenen 3D-Treiber fĂŒr AMD- und Intel-GPUs beherbergt, die Debian, Fedora, Ubuntu & Co. standardmĂ€Ăig einrichten.

Noch im Experimentierstadium steckt derweil ein neuer Userspace-Treiber zur beschleunigten Video-Wiedergabe via Nouveau, an dem ein Red-Hat-Mitarbeiter arbeitet. FĂŒr BĂŒroarbeitsplĂ€tze mit modernen Desktops von Gnome- und KDE-Projekt reichen diese Treiber vermutlich mittelfristig vollkommen aus. FĂŒr High-End-Gaming, Grafik-Workstations oder Berechnungen auf dem Grafikchip bleiben Nvidias proprietĂ€re Userspace-Treiber aber sicher noch lange die bessere Wahl.
Ohne das offene Kernel-Modul des GeForce-Machers wĂ€ren die beiden neuen Open-Source-Treiber wohl nie entstanden. Ein groĂes Hindernis waren fehlende Informationen, um das nötige Fundament in Nouveau zu schaffen. Das noch viel gröĂere Problem war jedoch die beschnittene Firmware, die Nvidia viele Jahre fĂŒr Linux bereitstellte. Sie konnte GPUs der letzten Jahre weder in ihre sparsamsten noch ihre leistungsfĂ€higsten Betriebsmodi schalten â der ebenfalls Nouveau genannte OpenGL-Treiber von Mesa liefert in Folge vielfach nur eine miserable 3D-Performance.
Warum Nvidia einen Kernel-Treiber offengelegt hat
Durch die Fortschritte werden fĂŒr PCs gedachte Linux-Distributionen die neuesten GeForce-Chip-Generationen bald besser von Haus aus unterstĂŒtzen. Auch Linux-Livesysteme wie Desinfec't, fĂŒr die proprietĂ€re Treiber vielfach keine Option darstellen, laufen dadurch besser.
Das war aber offensichtlich nicht der Grund fĂŒr Nvidias Kehrtwende. Das zeigt das Open-Source-Modul, das derzeit primĂ€r fĂŒr KI-Beschleuniger gedacht ist â und damit ein starkes Indiz liefert, dass der explodierende Markt fĂŒr KI-Supercomputer und High Performance Computing (HPC) [3] zum Sinneswandel fĂŒhrte. Dort dominiert Nvidia mit Rechenbeschleunigern, die frĂŒher eng mit Gaming-GPUs verwandt waren. FĂŒr das Unternehmen wurde es im HPC-Markt aber absehbar immer schwerer, Bestandteile, die fĂŒr bestmögliche Performance nötig wĂ€ren, mit einem proprietĂ€ren Linux-Treiber zu realisieren.
Kernel-Entwickler machen ihre Intention deutlich
Teilschuld daran trĂ€gt eine Lizenz-Barriere, denn schon seit zwei Jahrzehnten exportieren die Linux-Entwickler gewisse Methoden nur via "EXPORT_SYMBOL_GPL" an Kernel-Module. Die Autoren des dahinter steckenden Codes wollen damit klarstellen: Diese Funktionen dĂŒrfen nur Treiber nutzen, die wie Linux selbst unter der GPLv2 oder einer dazu kompatiblen Lizenz stehen. Checks beim Laden von Modulen versuchen das durchzusetzen, haben aber SchwĂ€chen.

Nvidias proprietĂ€res Kernel-Modul hat so gekennzeichnete Methoden meiden können, ohne dass es Funktionsumfang und Geschwindigkeit spĂŒrbar limitierte â Indizien zufolge hat der nicht einsehbare Code dabei aber wohl manchmal unsaubere Tricks genutzt, die die SystemstabilitĂ€t gefĂ€hrden.
Datenfluss-Optimierung scheitert an Barriere
Der Spielraum wurde mit den Jahren aber immer kleiner, weil die Zahl der GPLv2-Exporte zunahm. Ferner stopften die Linux-Macher einige Schlupflöcher des Lizenz-Lade-Checks. So etwa vor drei Jahren, nachdem Facebook-Entwickler einen Satz von Kernel-Ănderungen einreichten. Diese sollten Netzwerk-Treibern des Kernels ermöglichen, die eingehenden Daten mithilfe von Nvidias proprietĂ€rem Treiber direkt in den Speicher der GPU zu transferieren. Das steigerte die Performance beim Machine Learning mit Nvidias Beschleunigern, wo riesige Datenmengen flieĂen.

Vorkommnisse wie diese zeigen Nvidias zweite Motivation fĂŒr den Sinneswandel: Damit Beschleuniger-Chips bestmögliche Performance liefern, mĂŒssen sie immer enger mit dem Rest des Systems zusammenarbeiten. Diesen Aspekt verstĂ€rkt sich derzeit abermals durch die zunehmende Verbreitung von Compute Express Link (CXL), eine noch junge Hardware-Verbindungstechnik, die den Aufbau von Systemen in groĂen Rechenzentren revolutioniert.
Eine möglichst enge Zusammenarbeit gelingt mit einem externen proprietĂ€ren Treiber schlicht nicht. Die Lizenz-Barrikade ist da ein Problem â aber nicht das einzige, denn auch dem in Linux enthaltenem Treibercode sind Grenzen gesetzt, um Risiken zu reduzieren, die die SystemstabilitĂ€t gefĂ€hrden.
Nvidia kann Linux jetzt besser fĂŒr die eigenen Belange anpassen
Unter einer Bedingung sind die Linux-Entwickler allerdings offen fĂŒr Anpassungen an der Basisinfrastruktur des Kernels: Wenn sie die Performance des in Linux enthaltenen Treibercodes steigern. Solche Ănderungen kann Nvidia jetzt einbringen -- etwa um das Memory Management fĂŒr seine KI-Beschleuniger zu optimieren oder dort neue Einhakpunkte fĂŒr Nouveau zu schaffen, damit der Treiber die Daten schneller erhĂ€lt oder Ergebnisse zurĂŒckliefern kann. Diese Verbesserungen könnte Nvidia dann auch in seinem externen Open-Source-Modul nutzen, damit die hauseigenen Produkte besser am Markt dastehen. Genau solche Aspekte sind ein Grund, warum sich hunderte andere Unternehmen schon lange an der Linux-Entwicklung beteiligen â und den Kernel so nicht nur besser machen, sondern auch mit einem Strom an Entwicklern versorgen.
Nvidia hat wohl erkannt, dass ein proprietĂ€rer Treiber mittel- bis langfristig zu Wettbewerbsnachteilen gefĂŒhrt hĂ€tte, schlieĂlich hat die Firma die Offenlegung eines Kernel-Moduls von langer Hand vorbereitet. Denn schon vor Jahren hat die Firma begonnen, einen GSP (GPU System Processor) genannten RISC-V-Kern in ihre GPUs zu integrieren. Der fĂŒhrt eine proprietĂ€re Firmware aus, die das Kernel-Modul bei der Initialisierung an die GPU schickt â und allerlei Aufgaben erledigt, die zuvor Betriebssystemtreiber erledigen mussten. Dadurch kann Nvidias quelloffenes Modul schlanker ausfallen und es braucht keine Interna enthalten, die die Firma vor neugierigen Augen verbergen will; auch fĂŒr DRM-Techniken kann das nötig sein, beispielsweise wenn Hersteller ein Abgreifen hochauflösender Videos unterbinden wollen.
Linux ist ein eher monolithischer Kernel. Vereinfacht gesagt ist es damit eine groĂe ausfĂŒhrbare Datei, die alle von ihm unterstĂŒtzten Funktionen enthĂ€lt. Code zur Ansteuerung von Grafikkerne ist daher ebenso Kernel wie alles andere und keinerlei BeschrĂ€nkungen unterworfen. Das unterscheidet Linux von Microkerneln oder dem Hybridkernel von Windows: Dort kann man sich den Kernel eher wie das GrundgerĂŒst mit Abstraktionsschicht vorgestellten, an dem bis zu einem gewissen Grad abgeschottet arbeitende Treiber andocken.
Weil die "ausfĂŒhrbare Datei" immer gröĂer wurde, haben die Entwickler bei Version 2.0 die Möglichkeit nachgerĂŒstet, Teile in Module auszulagern. Dazu haben sie Kommunikationswege geschaffen, die die Linux-Entwickler als Kernel-interne Schnittstellen ansehen. Diese passen sie immer mal wieder an, wodurch extern gewartet Treiber wie die von Nvidia gelegentlich auf die Nase fallen, denn die klinken sich ĂŒber das Modul-Interface ein.
Nvidias Ansatz ist nichts Ungewöhnliches, denn Ăhnliches findet sich auch bei dem Grafiktreibercode, den AMD und Intel schon lange im Rahmen des Linux-Kernels entwickeln. Allerdings ist die GSP Firmware von Nvidia deutlich gröĂer und offensichtlich fĂŒr mehr Aufgaben zustĂ€ndig.
Ăbrigens: Nvidias Engagement fĂŒr quelloffenen, im Rahmen des Kernels entwickelten Treibercode ist nur neu, wenn es um Grafik- und Beschleunigerchips fĂŒr PCs und Server geht. Denn die Firma arbeitet schon lange am Kernel mit, damit Linux seine hauseigenen Tegra-Prozessoren möglichst gut unterstĂŒtzt. 2014 hat sie sogar erstmals direkt zum Nouveau-Code des Kernels beigetragen, damit er zumindest die Grundfunktionen der GPUs unterstĂŒtzt, die in diesen Embedded-Prozessoren mit ARM-Kern stecken.
Kehrtwende in der Embedded-Welt
Neben Nvidia engagieren sich neuerdings zwei weitere BranchgröĂen fĂŒr quelloffene Linux-Grafiktreiber. Eine davon ist fĂŒr die Computer-Welt Ă€hnlich bedeutsam: ARM.
Das Unternehmen hatte ein ambivalentes VerhĂ€ltnis zu quelloffenen Treibern, denn auch ARM arbeitet schon lange intensiv am Linux-Kernel mit. Damit macht sie ihre CPU-Designs am Markt attraktiver, schlieĂlich verkauft sie die meist an Firmen, die damit fĂŒr den Linux-Einsatz gedachte Prozessoren bauen. Bei seinen GPU-Designs der Mali-Serie gab sich ARM aber von jeher zugeknöpft und setzte auf proprietĂ€re Treiber, die sich ĂŒber ein eigenes quelloffenes Kernel-Modul bei Linux einklinken. Prozessoren mit solchen GPUs finden sich in allen möglichen Produkten, besonders hĂ€ufig in Smartphones, Tablets, Chromebooks und Einplatinencomputern.
Vor drei Jahren leitete ARM dezent eine Kehrtwende ein: Ăber AuftrĂ€ge an die Firma Collabora begann das Unternehmen, die Entwicklung quelloffener Kernel- und OpenGL-Treiber fĂŒr die neuesten Mali-Designs zu fördern. Diese in Linux und Mesa enthalten Treiber waren zuvor unabhĂ€ngig von ARM unter dem Namen "Panfrost" entstanden, wobei Collabora dort schon stark angeschoben hat. Im Juli 2023 hat sich ARM dann voll hinter die Treiber gestellt und eine Kooperation mit Collabora verkĂŒndet [4]. Panfrost soll fortan der "Treiber fĂŒr die Linux-Community" sein. Damit Kernel- und OpenGL-Treiber die Mali-GPUs zukĂŒnftig erstklassig unterstĂŒtzen, wollen die beiden Firmen die Performance verbessern und fĂŒr Support zukĂŒnftiger Mali-Generationen sorgen.
Ăhnlich wie Nvidia pflegt ARM sein Kernel-Modul und seine proprietĂ€ren Userspace-Treiber weiter. ARM ist allerdings nicht ganz so gut darin, den Code zum Bau des eigenen Kernel-Modules zeitnah kompatibel zu neuen Linux-Versionen zu machen. Das ist meist alle paar Monate nötig, weil die Kernel-Entwickler immer mal wieder Methoden verĂ€ndern, ĂŒber die verschiedene Teile von Linux (und damit auch sein Treibercode) miteinander interagieren. Dadurch Ă€ndern sich auch die an Module exportierten Symbole, um Kernel-Methoden zu nutzen.
Sich stÀndig verÀnderte Kommunikationswege
Diese Umbauten nehmen sie vor, um die Performance zu optimieren oder den Code zu vereinfachen; zumeist schaffen sie aber Infrastruktur zur UnterstĂŒtzung neuer Einsatzgebiete, GerĂ€teklassen oder Hardware-Features. Durch die Verquickung von Kernel-Basisinfrastruktur und Treibercode brauchen Torvalds & Co. dabei keinerlei RĂŒcksicht auf AbwĂ€rtskompatibilitĂ€t nehmen: Entwickler, die eine Methode verĂ€ndern wollen, welche an Module exportiert wird, mĂŒssen zugleich alle Stellen im Kernelcode anpassen, die diese Methode nutzen â auch dann, wenn sich niemand mehr aktiv um die betroffenen Codestellen kĂŒmmert. Letzteres ist bei Treibercode keine Seltenheit, denn der fliegt normalerweise erst raus, wenn ihn allem Anschein nach niemand mehr produktiv mit Linux nutzt. Genau deshalb unterstĂŒtzen aktuelle Kernel viel Hardware, die zuletzt vor weit ĂŒber einem Jahrzehnt ĂŒber die Ladentische ging und nicht mit aktuellen Windows-Versionen spielt.
Linux kann sich so KompatibilitĂ€tscode zur UnterstĂŒtzung alter Treiber sparen und das Ruder herumreiĂen, wenn technische UmwĂ€lzungen oder krasse Fehlentscheidungen beim Codedesign dies erfordern. Das war etwa beim USB-Stack mehrfach nötig. Auch der Schutz vor Prozessor-SicherheitslĂŒcken wie Spectre konnten die Kernel-Entwickler effizienter realisieren als Windows, eben weil sie den Code aller gĂ€ngigen Treiber zur Hand hatten, um den gleich mit anzupassen.
Der Verzicht auf stabile Modulschnittstellen verkompliziert aber die externe Entwicklung und Pflege von Kernel-Treibern: Ihre Programmierer mĂŒssen den Code flexibel auslegen und immer mal wieder aktualisieren, damit er zu den Modul-Exporten von Ă€lteren Linux-Versionen ebenso passt wie zu brandneuen.
Motivation zur Mitarbeit am Kernel
Der Grund, dass die Linux-Entwickler darauf noch nie RĂŒcksicht genommen haben: Das Fehlen stabiler Schnittstellen hat indirekt zum Erfolg des Kernels beigetragen. Und das sogar erheblich. Denn durch diesen Aspekt haben schon tausende Firmen erst ihre Treiber in Linux integriert, aber spĂ€ter dann auch andere Verbesserungen zum Kernel beigesteuert.
Davon profitieren Anwender, weil die Linux-Entwickler die Beitragenden nötigen, bei der Basisinfrastruktur fĂŒr alle Treiber einer GerĂ€teklasse zusammenzuarbeiten. Dadurch trĂ€gt dann vielleicht Nvidia eine Optimierung am Fundament fĂŒr Grafiktreiber bei, durch die auch GPUs von AMD schneller laufen â und umgekehrt.
Die Linux-Entwickler unterbinden durch ihre Spielregeln zudem Hersteller-spezifische Schnittstellen rund zur Nutzung und Konfiguration von Hardware. Bei Linux-Distributionen beziehungsweise -Desktops kann man so mit einem Bildschirmkonfigurations-Werkzeug die Grafikchips verschiedenster Hersteller auf die immer gleiche Weise einstellen; das macht Hersteller-spezifische Tools unnötig, die einen womöglich ausspionieren oder gar die Systemsicherheit gefÀhrden.
Und noch ein eher versteckter Vorteil von im Kernel enthaltenen Treibern will erwĂ€hnt werden: Hersteller haben keine Kontrolle ĂŒber den Code. Sie können Kunden durch Einstellen der Pflege eines Treibers nicht nötigen, Geld in neue Produkte zu stecken. Gewiefte Entwickler rĂŒsten zudem Features nach, die der Hersteller vielleicht lieber spĂ€teren Produktgeneration vorbehalten hĂ€tten. Oder sie machen den Treiber und damit die Hardware fĂŒr Einsatzgebiete fit, die den Hersteller nicht jucken â etwa Support fĂŒr Prozessor-Architekturen jenseits von ARM und x86.
Problemkind hat ein Einsehen
Neben ARM versorgt eine weitere Partei im Embedded-Markt seine Grafikkern-Designs neuerdings mit quelloffenen Treibern: Imagination Technologies. Die PowerVR-Kerne sind im Markt seltener anzutreffen als ARMs hauseignes Grafikkerndesign, finden sich aber in allerlei MobilgerÀten und Einplatinencomputern.

(Bild: In gĂŒnstigen Atom-Tablets und Netbooks steckte die PowerVR-Grafik, die unter Linux fĂŒr Ărger sorgte.)
Imagination hat in der Open-Source-Szene einen miserablen Ruf. Das liegt an den proprietĂ€ren Treibern, die die Firma viele Jahre bereitgestellt hat. Anders als jene von ARM oder Nvidia eigneten die sich oft nur fĂŒr veraltete Linux-Versionen oder nur fĂŒr den auf dem GerĂ€t vorinstallierten Kernel. In Folge dessen kann man bei vielen Produkten mit PowerVR-Grafik nur schwerlich oder gar nicht auf neue Linux- oder Betriebssystemversionen wechseln.
Ăhnliche Probleme gab es vor fĂŒnfzehn Jahren auch in der PC-Welt mit den ersten Generationen von Intels Atom-Prozessoren, denn auch in denen steckten PowerVR-Kerne von Imagination. Solche CPUs fanden sich hĂ€ufiger in Netbooks oder Tablets mit Linux-basierten Betriebssystemen. Allerwelts-Distributionen liefen auf diesen GerĂ€ten aber vielfach mehr schlecht als recht: Imaginations Treiber arbeiteten oft nicht oder nur unter EinschrĂ€nkungen mit den Kerneln von Fedora, Ubuntu & Co. zusammen, selbst wenn die nur ein bisschen neuer waren. Diese Situation verschlimmerte sich innerhalb weniger Monate und bereitete Anwendern damals sehr viel Kopfzerbrechen.
Im FrĂŒhjahr 2022 hat das Unternehmen angekĂŒndigt [5], in Zukunft auf Open-Source-Treiber zu setzen. Das ging mit einem Vulkan-Treiber los, der in Mesa eingeflossen ist. SpĂ€ter folgte einen Kernel-Grafiktreiber fĂŒr die neueste Generation der PowerVR-Grafikkerne, den die Linux-Entwickler kĂŒrzlich zur Aufnahme in Kernel 6.8 akzeptiert haben.
Andere hatten frĂŒher ein Einsehen
Damit gibt es dann quelloffene Kernel-Treiber von allen groĂen Unternehmen, die Grafikkerndesign fĂŒr Prozessoren anbieten, die in fĂŒr Linux gedachten Embedded-Systemen stecken.
Broadcom hat beispielsweise selbst Treiber zu Linux beigesteuert, die VideoCore-Grafikkerne ansprechen, die unter anderem in den Prozessoren der Raspberry-Pi-Serie stecken. FĂŒr Qualcomms Adreno-GPUs der in zahllosen Android-GerĂ€ten und Chromebooks verbauten Snapdragon-Prozessoren bringt der Kernel ebenfalls einen Treiber mit; er war in der Community entstanden, aber mittlerweile trĂ€gt Qualcomm immens zum Treiber bei. Beide Unternehmen arbeiten darĂŒber hinaus an quelloffenen Mesa-Treibern fĂŒr OpenGL mit.
Auch VeriSilicon, das Unternehmen hinter den Vivante-Grafikkernen, entwickelt schon lange quelloffene Kernel-Treiber â allerdings extern. Diese Treiber dienten Open-Source-Entwicklern als Quelle fĂŒr einen alternativen Treiber, den Linux mittlerweile seit vielen Jahren mitbringt. Bei OpenGL setzt VeriSilicon auf proprietĂ€re Treiber, aber auch hier haben Programmierer eine Alternative geschaffen.
Nur eine GröĂe der GPU-Branche stellt keine quelloffenen Linux-Treiber: Apple. Aber warum sollte die Firma das auch, denn im Unterschied zu allen anderen erwĂ€hnten sieht Apple seine Prozessoren nicht fĂŒr den Linux-Einsatz vor. Die Open-Source-Community fĂŒllt diese LĂŒcke. So arbeitet das Asahi-Projekt an Kernel- und Userspace-Treibern fĂŒr die GPUs, die in den ARM-basierten CPUs von MacBook, Mac Mini & Co. stecken.
Rosige Zeiten voraus
Das klingt aus Open-Source- und Linux-Sicht recht rosig. In der Praxis lĂ€sst dennoch vieles zu WĂŒnschen ĂŒbrig: Die Dinge sind im Einzelfall hĂ€ufig komplizierter, als es dieser Text beschreiben kann, ohne enorm auszuufern. So unterstĂŒtzen die in Linux enthaltenen Treiber manchmal einige Grafikkerne gar nicht oder beherrschen nur einen Teil der Hardware-Features; das kommt insbesondere bei Ă€lteren oder besonders neuen GPUs vor.
Support dafĂŒr findet sich dann oft in Treibern direkt vom Hersteller. Egal, ob diese nun quelloffen oder proprietĂ€r sind: Viele von ihnen eignen sich nur fĂŒr ausgewĂ€hlte, hĂ€ufig veraltete Kernel-Versionen. Und selbst wenn sich ein Unternehmen engagiert und die Treiber halbwegs zeitnah zu neuen Linux-Versionen kompatibel macht: WĂ€hrend die Linux-Entwickler ihren Treibercode oft ein Jahrzehnt oder lĂ€nger pflegen, ist bei den Herstellertreibern oft nach wenigen Jahren Schluss.
Upgrade-Probleme durch extern gewartete Treiber
Externe Treiber können Wechsel von Betriebssystem- und Kernel verkomplizieren oder komplett blockieren. Die erwĂ€hnten Probleme mit den proprietĂ€ren Treibern von Imagination zeigen das â sind letztlich aber nur ein Beispiel, denn Ă€hnliche Schwierigkeiten gab und gibt es auch bei extern gewarteten Kernel-Modulen anderer Unternehmen.
Eben solche EinschrĂ€nkungen sind ein Hauptgrund fĂŒr die Update-Misere bei Android â und warum selbst Entwickler von LineageOS und anderen von Android abgeleiteten Betriebssystemen manchmal den Support fĂŒr GerĂ€te aufgeben mĂŒssen. Die Problematik hat sogar schon den Machern des ersten Fairphones und anderen Firmen ein Bein gestellt, die ihr Smartphones eigentlich mehrere Jahre mit neuen Android-Versionen versorgen wollten.Allerdings stellt auch Android nur die Spitze des Eisbergs dar, denn Ă€hnliche Schwierigkeiten gibt es auch bei vielen anderen Produkten, die Embedded-Prozessoren oder damit gebaute Boards einsetzen; also bei IoT-GerĂ€ten, Robotern, Waschmaschinen, Fernsehern, Autos und vielen weiteren GerĂ€teklassen.
Den Grafikkern-Designern, Prozessor-Herstellern und Firmen, die solche CPUs einsetzen, war das lange egal: Im Embedded-Markt war es lange Usus, Hardware mit einem maĂgeschneiderten Betriebssystem auszuliefern. Dessen Software war oft schon bei der Produktvorstellung veraltet und blieb fast immer auf dem gleichen Stand; Sicherheitskorrekturen gab es oft gar nicht oder nur fĂŒr kurze Zeit. Mit den Jahren haben immer mehr Kunden diese missliche Lage erkannt und Druck auf Firmen ausgeĂŒbt, sich fĂŒr quelloffene und im Rahmen von Linux gewartete Treiber zu engagieren. Wohlgemerkt sind hier weniger die Endkunden gemeint, sondern vor allem die Firmen, die Prozessoren mit den Grafikdesigns verbauen: Autohersteller und deren Zulieferer, Industrie-IT-Anbieter und zahllose andere Unternehmen aus den verschiedensten Branchen.
Mehr und mehr Firmen haben ein Einsehen
Doch auch bei Android-GerĂ€ten werden diese Aspekte wichtiger. Daher engagiert sich Google mehr und mehr dafĂŒr, auch dort weniger von proprietĂ€ren Linux-Treibern abzuhĂ€ngen, die Kernel-Sicherheitskorrekturen und -Versionswechsel erschweren oder gar unmöglich machen.
AuĂer Google haben auch allerlei andere Firmen die Probleme externer und womöglich gar proprietĂ€rer Treiber erkannt. Auch sie haben daher begonnen, beim Produktdesign darauf zu achten, ob passende Treiber fĂŒr die angedachten Komponenten in Linux stecken. Das ist nicht nur Einsicht zu verdanken, sondern auch neuen Richtlinien der Gesetzgeber. Allen voran die im Herbst 2022 beschlossene EU-Ăkodesign-Verordnung fĂŒr Smartphones und Tablets oder dem jĂŒngst gefundenen Kompromiss zum EU Cyber Resilience Act: Beide verpflichten Hersteller, ihre GerĂ€te fĂŒr mehrere Jahre mit Security-Updates zu versorgen.
In Linux enthaltener Treibercode macht Firmen das leicht. Sie können ihre Pflicht so zudem autark erfĂŒllen. Sprich: Sie mĂŒssen im Fall der FĂ€lle keinen sonst wo sitzenden Grafikkern-Designer um angepasste Kernel-Module anbetteln, der sich das womöglich teuer bezahlen lĂ€sst, irgendwann aufgibt oder gar pleitegeht. Mit Treibercode im Kernel können die Produktanbieter zudem heute noch unbekannte oder weit entfernte Probleme lösen â wie das heranrĂŒckende Jahr-2038-Problem von 32-Bit-Prozessoren, das Linux-Systeme einiger heute verkaufter Autos durcheinander zu bringen droht.
Summa sumarum
Genau diese FlexibilitĂ€t ist einer der unscheinbaren Vorteile, die der Verquickung von Kernel-Basisinfrastruktur mit unzĂ€hligen Treibern bei gleichzeitigem Verzicht auf stabile Treiberschnittstellen zu verdanken ist. Denn durch eben diesen Spielraum konnte Linux immer wieder neue und unvorhergesehene Einsatzgebiete und MĂ€rkte erobern. Es hat zudem immer wieder ĂŒberraschende Performance-Optimierungen ermöglicht. Vor allem aber befreit sie Nutzer aus der AbhĂ€ngigkeit von den Herstellern. Anwender können ihre Hardware dadurch oft viel lĂ€nger nutzen als etwa unter Windows â und mĂŒssen kein Geld in neue GerĂ€te stecken, weil der Hersteller bei QualitĂ€t und Ausdauer seiner Treiber geizt. Mit stabilen Treiberschnittstellen hĂ€tte Linux viel von dem verloren, wofĂŒr Anwender den Kernel schĂ€tzen.
(ktn [6])
URL dieses Artikels:
https://www.heise.de/-9582895
Links in diesem Artikel:
[1] https://www.heise.de/news/Hoelle-zugefroren-Nvidia-veroeffentlicht-Linux-Kernel-Treiber-unter-GPL-MIT-7088926.html
[2] https://www.heise.de/news/Linux-6-6-bringt-neuen-Scheduler-9350044.html
[3] https://www.heise.de/news/Nvidia-bringt-kuenftig-jedes-Jahr-neue-GPU-Architekturen-9332599.html
[4] https://newsroom.arm.com/news/arm-expands-open-source-partnerships
[5] https://blog.imaginationtech.com/imagination-and-our-commitment-to-open-source
[6] mailto:ktn@heise.de
Copyright © 2023 Heise Medien