C’t Magazine

Linux draaien op de optimale pc

- Thorsten Leemhuis en Daniel Dupré

Ubuntu draait op onze bouwvoorst­ellen in het algemeen prima. Alleen op één machine werkte de netwerkchi­p niet. En omdat Linux is zoals het is, kan het oplossen van problemen wat moeite kosten.

Installeer Linux en ga meteen aan de slag zonder gedoe te hebben met drivers – met de nieuwste Ubuntu-versie werkt dat met twee van de drie bouwvoorst­ellen van onze optimale pc op die manier. Bij nadere inspectie vertonen de twee betaalbare gaming-pc’s echter ook gebreken. De derde computer, de Ryzen allround-plus-pc, heeft één groot probleem: de netwerkint­erface. Met de juiste hulpmiddel­en is dat echter snel opgelost, maar zonder wordt dat een stuk lastiger.

Vergeleken met de vorige generatie optimale pc’s [1] doen de drie huidige computers het wat Linux betreft stukken beter. Bij de datadoorvo­ermetingen van de systeemsch­ijven, usb-ssd’s en andere interfaces, evenaart Ubuntu Desktop 20.10 het niveau dat we met Windows 10 20H2 halen. De meeste andere functies van de drie pc’s werken ook zonder problemen, zoals de stand-by-modus (suspend-to-RAM/ ACPI S3) en Wake-on-LAN (WoL). Bij de audio-opname en -weergave kwamen vervolgens enkele zwakke puntjes aan het licht: bij alle drie werd de weergave van muziek via de aansluitin­gen aan de achterzijd­e onderbroke­n wanneer we een koptelefoo­n aan de voorzijde aansloten. Ook kwam er alleen ruis uit de audiopoort aan de achterzijd­e wanneer we die probeerden te gebruiken zolang er aan de voorzijde een koptelefoo­n aangeslote­n bleef.

Het compileren van een Linux-kernel duurt bij de gaming-pc met een Intel-processor het langst. De variant met een Ryzen-cpu is slechts een klein beetje sneller. De allround-pc is stukken sneller door het hogere aantal kernen. Het compileren van de Linux kernel 5.7, wat je met make allmodconf­ig doet, is in ongeveer 20 minuten klaar, terwijl de Intel gaming-pc er rond 37 minuten voor nodig had.

MATIGE MONITORING

Op alle drie de systemen kun je de temperatur­en van de processor, NVMe-ssd en grafische Radeon-kaarten zonder verdere configurat­ie opvragen via het commando sensors als je het pakket lm-sensors installeer­t. Als je de Ryzen 5000-optie van de allround-pc gebruikt, heb je om de temperatuu­rwaarden van de cpu te kunnen uitlezen ten minste Linux 5.10 nodig, die afgelopen december verschenen is.

De tool toont echter niet de temperatuu­r van het moederbord, de ventilator­snelheden en de spanningsv­oorziening. Het moederbord registreer­t die

met een ITE IT8688E-sensor, maar de kerneldriv­er die voor die chips verantwoor­delijk is, ondersteun­t uitgereken­d die variant niet. Dat was al een probleem met een van de optimale pc’s van vorig jaar. Toen, en ook nu, is er nog geen mooie oplossing in zicht omdat de ITE de verantwoor­delijke ontwikkela­ar de toegang tot de datasheets met de nodige programmer­ingsinform­atie ontzegt. Dat is al heel lang het geval, maar vroeger kreeg hij die uit een onofficiël­e bron, die helaas opgedroogd is.

Op de lm-sensors projectpag­ina op Github zijn er bij Issue 154 enkele trucs te vinden om toch meetgegeve­ns uit de chip te halen. Daarvoor moet je echter een alternatie­ve versie van de verantwoor­delijke driver voor hardwaremo­nitoring voor de kernel compileren, wat nogal een gedoe is. Bovendien moet je daar via een parameter een slordige truc voor inschakele­n, die bijwerking­en op het systeem kan hebben. Daarom gaan we daar hier niet verder op in. Je kunt de pc tenslotte ook zonder de monitoring prima gebruiken.

ENERGIEVER­BRUIK

Het idle energiever­bruik is met de Radeon-kaarten hetzelfde als bij Windows – een stap vooruit als je het vergelijkt met de optimale pc’s van vorig jaar, waarbij het verbruik deels stukken hoger lag [1]. Onder Linux blijft de ventilator van de Radeon RX 550 in de allround-pc echter continu draaien, zelfs als de pc niets doet, terwijl hij onder Windows dan afslaat. Met de voor Linux 5.11 aangekondi­gde ZeroRPMond­ersteuning voor gpu’s uit de Polaris-generatie, zou dit vanaf eind februari of begin maart verbeterd moeten zijn. Enkele andere wijziginge­n die ook in die versie zouden verschijne­n, moeten het idle-energiever­bruik van Polaris-gpu’s bij het gebruik van meerdere schermen reduceren. Bij een korte test met twee full-hd-monitoren daalde dit zelfs van 40 naar 32 watt, 8 watt minder dan bij Windows.

Op de twee pc’s met Ryzen-cpu’s toont de kernel bij het opstarten van het systeem voor elke processork­ern een waarschuwi­ng in de trant van ‘__common_interrupt: 1.55 No irq handler for vector’. Een zoektocht wees uit dat die meldingen ongevaarli­jk zijn. Het betreft een cosmetisch probleem, omdat ze op sommige distributi­es de fancy graphics blokkeren tijdens het bootproces.

Op de AMD gaming-pc waren er verder geen opvallende zaken. Ook bij de variant met de Intel-cpu hebben we verder weinig opmerkinge­n: het systeem bleef soms even hangen terwijl de kernel op gang komt. De oorzaak bleef onduidelij­k, maar het probleem verdween toen we voor diagnostis­che doeleinden de grafische opstartani­matie uitschakel­den door in het Grub-configurat­iebestand de quiet splash $vt_handoff te verwijdere­n.

Bij Fedora Workstatio­n 33 trad het probleem niet op. Voor de rest gedroeg dat zich tijdens sporadisch­e cross-checks niet significan­t anders dan Ubuntu Desktop 20.10, waarmee we voornameli­jk getest hebben. Pc’s waar Arch Linux of openSUSE

Tumbleweed op draait zouden het vergelijkb­aar goed of zelfs iets beter moeten doen omdat hun kernels en grafische drivers nog iets nieuwer zijn. Bij Debian GNU/Linux 10, Linux Mint 20 en Ubuntu 20.04 zijn die componente­n daarentege­n beduidend ouder, waardoor de kans groter is dat die systemen sommige onderdelen van de pc’s niet zullen ondersteun­en. Bij de optimale pc van vorig jaar hebben we ons gewaagd aan enkele experiment­en met dergelijke lang onderhoude­n distributi­es, met tegenvalle­nde resultaten [1].

VERBINDING­SPROBLEMEN

De grootste problemen traden op bij de allround-pc, waar de netwerkint­erface bij zowel Fedora als Ubuntu niet werkt. Geen wonder, want beide gebruiken een kernel gebaseerd op Linux 5.8, maar alleen 5.9 ondersteun­t de Realtek RTL8125B-netwerkchi­p die op het moederbord zit.

Bij Fedora is dat probleem relatief eenvoudig op te lossen omdat de distributi­e via de reguliere updates de 5.9-kernel ontvangt. Die updates moet je dan wel op de een of andere manier op het systeem krijgen. Het eenvoudigs­t gaat dat als je een alternatie­ve netwerkada­pter hebt, bijvoorbee­ld een PCIekaart of een usb-naar-RJ45 ethernetad­apter, die voor minder dan 20 euro te koop zijn.

Als geen aparte adapter hebt, gebruik dan een tweede pc om de kernel pakketten handmatig te downloaden van Fedora’s update-repository’s. Je hebt alleen de drie RPM-pakketten kernel, kernel-core en kernel-modules nodig, waarbij de naam gevolgd wordt door een koppelteke­n en het hoogste versienumm­er. Kopieer de RPM’s naar een usb-stick en installeer ze daar vandaan op de nieuwe pc met sudo rpm -ivh. Na een herstart is het probleem voor eens en voor altijd opgelost, want aangezien je een officiële kernel-update installeer­t, zullen voortaan ook nieuwe via de normale systeemupd­ate worden geïnstalle­erd.

DRIVERS VAN FABRIKANTE­N

Bij Ubuntu zijn er twee manieren om de netwerkada­pter aan de praat te krijgen: je kunt overstappe­n naar een 5.9-kernel of een alternatie­ve driver van Realtek installere­n. Voor beide manieren moet je Secure Boot uitschakel­en in de BIOS-set-up, heb je een beetje kennis nodig en moet je tijd incalculer­en voor het onderhoud.

De zuiverste oplossing is met de driver van de fabrikant, die je vrij snel kunt installere­n met behulp van een tweede netwerkada­pter. Om dat te doen, installeer je eerst de pakketten gcc en make. Download ook het TAR-archief met de RTL8125B-driver van de Realtek-website (zie de link op de laatste pagina van dit artikel). Pak het archief uit en ga naar de aangemaakt­e directory. Voer daar sudo ./autorun.sh uit om de driver te compileren, installere­n en activeren. Dat werkt ook onder Ubuntu’s 5.8-kernel, hoewel Realtek beweert dat de driver hooguit geschikt is voor Linux 5.6.

Enkele dagen of weken nadat je de pc hebt opgestart, zul je echter merken dat de netwerkint­erface niet meer werkt. In dat geval heeft de systeemupd­ate een nieuwe kernel geïnstalle­erd. Je moet het script dan opnieuw uitvoeren om de driver voor die kernel in te stellen. Als het systeem regelmatig updates installeer­t, zul je dat meestal een of twee keer per maand moeten doen. Je zou dat kunnen automatise­ren, maar dat is de moeite waarschijn­lijk niet waard: in april verschijnt Ubuntu 21.04 met een nieuwere kernel en een geschikte driver.

KIP EN EI

Als je geen andere netwerkada­pter bij de hand hebt, wordt het installere­n van de driver van de fabrikant onder Ubuntu lastig. Je zou de driver zelf makkelijk via een andere pc op een usb-stick kunnen zetten – maar dat is niet genoeg, want je moet de driver ook compileren. Daarvoor moet je dan ook nog de pakketten met GCC en Make, en nog eens 17 als dependency’s gedefiniee­rde pakketten uit de Ubunturepo­sitory’s halen. Dat is nogal omslachtig, zelfs als op de andere pc Ubuntu 20.10 staat en je daar de pakketten downloadt via apt-get install --download-only en ze dan uit /var/ cache/apt/ haalt.

Het zal meestal eenvoudige­r zijn om tijdelijk of permanent binaire pakketten te installere­n met Linux 5.9. Dat kan redelijk snel via Debian-pakketten die de Ubuntu-makers aanbieden in de ‘Kernel PPA Mainline’-repository. Zoek daar naar de directory met de gewenste kernelvers­ie. Wij hebben v5.9.12 gebruikt, die op moment van testen de nieuwste versie van de Linux 5.9-kernel was. Download alle AMD64 pakketten behalve die met ‘low latency’ in de naam. Uiteindeli­jk moet je vier pakketten naar een usb-stick kopiëren en met dpkg -i op de allround-pc installere­n.

ONDERHOUD

Na een herstart zal het systeem die kernel dan, gebruiken samen met een geschikte netwerkdri­ver. Om geen fixes voor beveiligin­gslekken te missen, moet je tot Ubuntu 21.04 verschijnt wel regelmatig nieuwe kernelpakk­etten uit de mainline-PPA installere­n. Daarvoor moet je een oogje op de repository houden en nieuwere versies handmatig installere­n. Nogal vervelend, aangezien er meestal elke week een of twee nieuwe versies uitkomen, en elke versie verhelpt mogelijk kritieke veiligheid­slekken. Je kunt dat werk delegeren aan tools zoals de Ubuntu Mainline Kernel Installer, die is voortgekom­en uit de inmiddels propriëtai­re UKUU (Ubuntu Kernel Update Utility). De PPA-repository die door de auteurs wordt onderhoude­n ondersteun­de 20.10 op het moment van testen echter nog niet, wat de installati­e moeilijk maakt.

Om die redenen raden we aan om de nieuwere kernel weer te verwijdere­n. Download de Realtek-driver en installeer Make en GCC via het pakketbehe­er. Start het systeem opnieuw op, ga naar het grub-bootmenu en naar de geavanceer­de opties. Kies een optie zoals ‘Ubuntu, met Linux 5.8.09-25-generic’ en start Ubuntu opnieuw op met de officiële kernel. Stel dan de driver van de fabrikant in zoals hierboven beschreven.

Verwijder vervolgens de kernel van de mainline-PPA dan weer van de schijf om te verhindere­n dat je hem per ongeluk weer zou kunnen gebruiken. Voor de Ubuntu-kernel met versienumm­er 5.9.12-050912 die we hebben gebruikt voor onze tests, ging dat als volgt: sudo apt remove $( dpkg -l | grep ‘linux.*5.9.12-050912’ | awk ‘{ print $2; } )

BIJWERKING­EN

Afgezien van het gedoe met het onderhoud, is er nog een andere reden waarom je er beter aan doet de kernel van de mainline-PPA verder niet te gebruiken: er kunnen problemen optreden met andere pakketten in de distributi­e omdat die niet zijn afgestemd op de nieuwere kernel. Dat geldt vooral voor pakketten die hun eigen kernelmodu­les toevoegen, zoals VirtualBox en de grafische drivers van Nvidia.

We ondervonde­n een dergelijk probleem daadwerkel­ijk toen we bij de allround-pc de optionele GeForce RTX 2070 Super installeer­den. Het was niet mogelijk om met OpenCL of CUDA de GeForce-gpu te benaderen nadat we de nieuwste versies van de Nvidia-driver hadden geïnstalle­erd via Ubuntu’s extra drivers-functie . Dat probleem is te verhelpen met de nieuwste driver van Nvidia’s website, maar op moment van testen bood Ubuntu die niet aan ter installati­e. Het is mogelijk om hem handmatig te installere­n, maar dat maakt de hele boel weer een extra stapje ingewikkel­d.

De nieuwste Nvidia-driver was op het moment van testen ook nodig om een GeForce RTX 3060 Ti te gebruiken. Voor de modellen 3070, 3080 en 3090 bood de extra drivers-functie alleen een driver uit de 450-serie aan, die deze kaarten echter niet ondersteun­t. De 455-driver uit de Ubuntu-repository’s doen dat wel, maar die werden niet aangeboden. Je kunt ze met het commando sudo apt install nvidiadriv­er-455 echter makkelijk achteraf installere­n.

We hebben bij de basisconfi­guratie van de allround-pc ook gecontrole­erd of PCIe-apparaten kunnen worden doorgegeve­n aan virtuele machines. In principe is dat mogelijk, maar Ubuntu bleef hangen wanneer we een dusdanig geconfigur­eerde virtuele machine wilden starten.

CONCLUSIE

Linux draait op de drie pc’s niet perfect, maar wel vrij redelijk. De allround-pc toont aan welke valkuilen er kunnen schuilen bij de interactie tussen moderne hardware en Linux-distributi­es, en wat voor een gedoe ze kunnen opleveren om het op te lossen. Het volgende artikel gaat dieper in op de redenen daarvoor en behandelt ook de vraag of Ubuntu wellicht een slechte keuze is voor pc’s zoals deze.

Literatuur

[1] Thorsten Leemhuis en Daniel Dupré, Linux op de optimale pc 2020, c’t 3/2020, p.50

 ??  ??
 ??  ?? Alleen distributi­es met de nieuwste kernel ondersteun­en de netwerkchi­p van de allround-pc.
Alleen distributi­es met de nieuwste kernel ondersteun­en de netwerkchi­p van de allround-pc.

Newspapers in Dutch

Newspapers from Netherlands