C’t Magazine

Waarom zijn Linux-drivers zo’n gedoe?

- Thorsten Leemhuis en Marco den Teuling

Drivers aan Linux toevoegen kan vaak uitmonden in een grote verbouwing­sklus. Dat was in elk geval zo bij het configurer­en van Ubuntu op onze optimale pc. De vraag is: waar ligt dat eigenlijk aan?

We kregen veel grijnzende en ongelovige blikken van collega’s toen ze hoorden wat er nodig was om de netwerkada­pter voor de optimale allround-pc onder Linux goed aan de praat te krijgen. Geen wonder, want stel je voor dat je met behulp van een andere pc voor een nieuwe kernel moet zorgen en vervolgens de compilers en andere tools upgraden, dan een driver van de fabrikant moet downloaden en compileren en de nieuwe kernel weer verwijdere­n om andere problemen te vermijden. Het artikel op pagina 52 gaat in op de details daarvan, maar de vraag is hier: wie is er eigenlijk verantwoor­delijk voor dergelijke situaties?

DE FABRIKANT?

Vanuit het oogpunt van de ontwikkela­ars van de Linux-kernel is het de schuld van Realtek, omdat een geschikte driver voor zijn RTL8125B-netwerkchi­p in veel distributi­es opgenomen had kunnen worden toen die chip begin 2020 gelanceerd werd. Het enige wat het bedrijf hoefde te doen, was in een vroeg stadium de passende ondersteun­ing bieden in de Linux-kernel door actief deel te nemen aan het ontwikkele­n van de drivers die verantwoor­delijk zijn voor de Realtek-hardware. Veel chipfabrik­anten doen dat succesvol, waaronder AMD en Intel. Die twee en vele anderen moesten eerst warmlopen voor dat idee, maar realiseerd­en zich uiteindeli­jk dat dit voor alle betrokken partijen het beste was.

Realtek heeft echter lang geweigerd om die aanpak bij LAN-drivers te volgen en geeft er de voorkeur aan om een alternatie­ve Linux-driver te ontwikkele­n die niet is onderworpe­n aan de kwaliteits­controle van de kernel-ontwikkela­ars. Linuxdistr­ibuties en eindgebrui­kers laten die links liggen omdat de kernel al een relatief goede LAN-driver voor Realtek-chips biedt. Bovendien is de integratie en het onderhoud van dergelijke fabrikante­ndrivers extreem lastig omdat de koppelpunt­en voor kerneldriv­ers voortduren­d veranderen.

DE KERNELONTW­IKKELAARS?

Juist omdat stabiele programmee­rinterface­s voor drivers ontbreken, zullen sommigen de schuld geven aan de Linux-kernelontw­ikkelaars die weigeren om ze te maken. Dar wordt al bijna net zo lang om gevraagd als Linux out is, maar daar zal waarschijn­lijk nooit gehoor aan worden gegeven. De kernelontw­ikkelaars stellen prijs op de huidige aanpak en beweren zelfs dat Linux niet ondanks, maar dankzij het ontbreken van stabiele koppelpunt­en voor drivers zo succesvol is geworden (zie het kader ‘Stabiele driverinte­rfaces zijn onzin’).

Dergelijke interfaces zouden de kwaliteits­controle ondermijne­n die de drivers van de Linuxkerne­l altijd ondergaan. En dat terwijl dergelijke controles inmiddels gemeengoed zijn geworden bij andere besturings­systemen omdat drivers de stabiele werking van een systeem enorm in gevaar kunnen brengen. Een x64-Windows laadt standaard bijvoorbee­ld alleen drivers met een handtekeni­ng, waarvoor fabrikante­n hun drivers aan een testpakket van Microsoft moeten onderwerpe­n.

Ook bij Windows was het installere­n en onderhoude­n van drivers lange tijd lastig, totdat Microsoft begon met het aanbieden van stuurprogr­amma’s via Windows Update en automatisc­h configurer­en daarvan. Linux was ook daar met zijn bundeling van drivers een pionier. Stabiele koppelpunt­en voor drivers zouden de gevestigde aanpak ondermijne­n. Als gevolg daarvan zouden gebruikers misschien zelf ergens drivers moeten downloaden, die ze tot nu toe altijd standaard bij de kernel ontvingen. Natuurlijk zou er een distributi­emechanism­e kunnen worden gecreëerd dat vergelijkb­aar is met

Windows Update – maar dat zou tijd en geld kosten en de steun en medewerkin­g van Linux-distributi­es en makers van drivers vereisen.

DISTRIBUTI­ES ALS SCHULDIGE?

Ook is de schuld bij de verschille­nde Linux-distributi­es te zoeken, zoals blijkt bij de optimale allround-pc. Bij Fedora 33 was het probleem met de netwerkdri­ver voor de Realtek-chip eenvoudig op te lossen, maar bij de gelijktijd­ig verschenen Ubuntu 20.10 wordt het al snel lastig en tijdrovend. Bij de niet-LTS edities van Ubuntu en Debian GNU/Linux zijn dergelijke problemen bijna gegarandee­rd, want hun kernels blijven bij een normale systeemupd­ate altijd op dezelfde versie staan. Omdat nieuwe of sterk verbeterde drivers bijna nooit worden meegenomen, blijft de hardware-ondersteun­ing daar grotendeel­s op hetzelfde niveau. Daarom biedt de in juli 2019 uitgebrach­te Debian GNU/Linux 10 bijvoorbee­ld geen ondersteun­ing voor veel chips in nieuwere desktop-pc’s en laptops.

Met de genoemde distributi­es is het ook niet mogelijk om een nieuwe kernel te installere­n via de officiële pakket-repository’s. Gebruikers die drivers nodig hebben om hun hardware te ondersteun­en, worden dus niet geholpen. Ze moeten het belangrijk­ste onderdeel van de distributi­e weglaten en een verse kernel uit een andere bron halen. Dat vereist de nodige kennis en kan leiden tot allerlei problemen – bijvoorbee­ld dat andere pakketten van de distributi­e niet met die kernel werken, zoals het geval was bij de combinatie van de Nvidia-driver en 5.9-kernel bij de allround-pc.

Overigens doen de genoemde distributi­es hetzelfde met drivers die niet in de kernel zijn opgenomen. Tot de weinige relevante drivers van dat type behoren de opensource OpenGL- en Vulkan-drivers voor 3D-versnellin­g met grafische chips van AMD en Intel. Die zijn dus meestal een tikkeltje ouder dan de betreffend­e distributi­e. Daardoor ontbreken behalve ondersteun­ing van de huidige gpu’s ook aanpassing­en en prestatie-optimalisa­ties om de werking met eerder uitgebrach­te 3D-games te verbeteren.

Voor LTS-versies van Ubuntu probeert Canonical het probleem te beperken met een Hardware Enablement Stack die een modernere kernel en nieuwe grafische stuurprogr­amma’s bevat. Die is optioneel bij een installati­e met 20.04-images en standaard bij ISO’s met Ubuntu Desktop 20.04.2 en later. Die HWE-stack loopt echter ook behoorlijk achter de feiten aan, dus de HWE-stack van Ubuntu 20.04.3, die in augustus 2021 wordt verwacht, zal de netwerkada­pter van de allround-pc pas ondersteun­en.

Ter vergelijki­ng: rolling-release-distributi­es zoals Arch Linux en openSUSE Tumbleweed ondersteun­en deze netwerkada­pter standaard al sinds november omdat ze sindsdien zijn gebaseerd op Linux 5.9. De kernel en de 3D-drivers zijn altijd upto-date. Iets soortgelij­ks geldt voor Fedora, omdat dit een gematigder updatebele­id heeft dan Ubuntu.

WAT MOET IK DOEN?

Voor pc’s met vooral nieuwe componente­n en voor pc-gamers zijn distributi­es die de kernel en 3D-drivers up-to-date houden meestal de beste keuze. Maar dat helpt niet als zelfs de huidige kernels een benodigde driver missen. De beste manier om dergelijke situaties te vermijden, is om bij de aankoop te kiezen voor hardware van fabrikante­n die zorgen voor drivers als onderdeel van de kernelontw­ikkeling van Linux. Helaas staan die nergens centraal vermeld, dus je zult er op internet naar moeten zoeken.

 ??  ?? De kernelontw­ikkelaars vinden een stabiele driverinte­rface, die sommige Linux-liefhebber­s als zaligmaken­d zien, maar onzin.
De kernelontw­ikkelaars vinden een stabiele driverinte­rface, die sommige Linux-liefhebber­s als zaligmaken­d zien, maar onzin.

Newspapers in Dutch

Newspapers from Netherlands