Linux installeren op onze bouwvoorstellen
Je kunt Ubuntu en andere Linux-varianten op onze pc-voorstellen installeren – maar wel met de nodige kleine en grotere obstakels. Met enkele ingrepen lukt het echter die te overwinnen.
Eerst het goede nieuws: de gangbare Linux-distributies kun je grotendeels probleemloos installeren op de drie pc-bouwvoorstellen van de voorgaande pagina’s, net als op de budget-gaming-pc uit c’t 12/2019 [1]. Bij enkele uitgebreide tests met Ubuntu Desktop 19.10 bleken er dan toch wat schoonheidsfoutjes te zijn ingeslopen: enkele pc’s hadden een hoog energieverbruik terwijl het systeem idle draaide, andere vertoonden problemen in de slaapstand en bij alle systemen waren er issues met de grafische drivers.
Met enkele doelgerichte ingrepen kun je de grotere problemen echter wel verhelpen. Maar als je op de hoogte bent van deze issues, kun je een verkeerde aankoop of fouten bij het inrichten van de pc met Linux vermijden.
Maar even terug naar het goede nieuws: niet alleen lukt het installeren van Linux, maar ook bij de metingen van gegevensdragers, usb-ssd’s en netwerkinterfaces haalde Ubuntu hetzelfde niveau als een
Windows-installatie. Wake-on-LAN en de audioweergave en -opname werken ook overal. Maar bij nadere inspectie vertoonden alle voorstellen wel mankementen, waarvan enkele bij alle systemen optraden. Daar gaan we verderop in dit artikel op in.
7-WATT MINI-PC
Bij het bouwvoorstel voor een mini-pc kregen we de Linux-installatie in eerste instantie helemaal niet aan de praat. Allereerst probeerden we vanuit de Windowsinstallatie met een ingedrukte Shift-toets opnieuw te starten, en in het menu dat dan verschijnt de optie te selecteren om vanaf een usb-stick met Ubuntu te booten. Dit werd door het BIOS echter volledig genegeerd. Ook als we in de BIOS-set-up de bootvolgorde wijzigden, verscheen de usb-stick vreemd genoeg niet, hoewel deze al bij talloze test-pc’s prima had gewerkt. Via het menu voor de BIOS Boot Select (BBS), dat je oproept door tijdens de BIOS Self test F11 in te drukken, lukte het uiteindelijk wel zonder morren om de pc vanaf de stick te booten.
De mini-pc met de AMD Athlon 200GE-cpu leek zonder problemen met Ubuntu te werken. Tot het moment dat we onze testmonitor in plaats van via HDMI aansloten via DisplayPort. De grafische driver van de kernel herkende de ondersteunde schermresoluties niet meer en toonde alleen nog maar 640 × 480 pixels. Dat gebeurde ook met een previewversie van Linux-kernel 5.4 die we bij wijze van test installeerden. Met Windows was dit echter niet het geval en werd de volledige resolutie van het scherm gebruikt. Ook met een tweede scherm dat we op de DisplayPort aansloten trad dit probleem op, hoewel er toen tenminste al 1280 × 768 pixels op het scherm verschenen. Twee andere schermen die we op de DisplayPort aansloten werkten uiteindelijk prima met Ubuntu.
We hielden er ook rekening mee dat er problemen zouden optreden: telkens wanneer de grafische kaart verbinding opbouwde met schermen die we op de hdmi-poort hadden aangesloten (bijvoorbeeld bij het booten of het wakker worden vanuit een energiebesparingsmodus van het systeem of de monitor), verschenen in het protocol van de kernel acht langere waarschuwingen van de grafische driver. Deze duidden op een probleem bij het instellen van de HDMI-timingparameters. Uiteindelijk hebben we echter geen negatieve effecten hiervan ondervonden.
Voor 20 euro extra is het barebone-systeem waar deze pc op gebaseerd is verkrijgbaar in een wifiversie. De Intel dual-band wireless-AC 3168GW wifichip die in dit systeem zit werkt weliswaar, maar niet echt soepel. De networkmanager vond twee wifi’s en kon zich hiermee verbinden, maar een zoektocht op de commandline met iw dev wlp2s0 scan resulteerde in de foutmelding ‘scan aborted’. De kernel-ontwikkelaars hebben echter tijdens onze tests het probleem verholpen, in eerste instantie in de prerelease Linux-versie 5.4, vervolgens in Linux 5.3.9. De ontwikkelaars van Ubuntu hebben aangekondigd de correctie in de kernel te integreren, wat op het moment van schrijven echter nog niet was gebeurd.
BETAALBARE GAMING-PC
Ons voorstel voor een budget gaming-pc waarmee je voor een kleine 600 euro een computer bouwt die geschikt is voor full-hd gamen ondervond minder problemen bij de installatie van Ubuntu. Net als onder Windows is het bij dit systeem ook onder Linux belangrijk om de BIOS-set-up in te stellen zoals we in het artikel aangeven [1].
De Radeon RX 570 van ons bouwvoorstel viel in sommige gevallen op door een onverwacht hoog idle energieverbruik – hier gaan we verderop nader op in.
Met de optionele GeForce GTX 1660 hangt het installeren van Ubuntu tijdens de start omdat de standaard gebruikte grafische driver Nouveau de kaart niet goed ondersteunt. Je moet de startoptie ‘Safe graphics’ gebruiken en na het voltooien van de installatie de propriëtaire driver van Nvidia nog installeren. Maar ook daarbij moesten we een drietal problemen nog verhelpen. Omdat deze ook weer bij de andere bouwvoorstellen optraden, gaan we ook daar later verder op in.
ALLROUND-PC
Nadat we op de allround-pc de Ubuntu-installatie hadden voltooid, werd na een herstart niet dit systeem, maar de Windows-installatie die we eerder hadden geïnstalleerd gestart. Blijkbaar negeert het BIOS om ondoorgrondelijke redenen de door de installer bepaalde bootvolgorde. In zulke gevallen is de oplossing eenvoudig: ga het BIOS in en zet de Ubuntu-entry in de UEFI-bootlijst voor die van Windows.
Los hiervan presteerde Linux prima op de allrounder, afgezien van de eigenaardigheden wat betreft de hardware-monitoring en de grafische drivers die we verderop beschrijven.
HIGH-END- & GAMING-PC
Ons high-end-systeem is snel en stil, maar heeft onder Linux een verborgen irritante eigenschap: wanneer de distributie via het TRIM-commando (onder Linux ook wel bekend als Discard), de NVMe-gegevensdrager signaleert dat er bereiken vrijgekomen zijn, meldt de kernel een I/O-error en stopt deze met de procedure. Het van tijd tot tijd doorgeven van vrijgekomen opslagruimte kan de prestaties en de levensduur van flashopslag ten goede komen. De meeste distributies doen dit daarom zo nu en dan automatisch, maar je kunt het via fstrim ook handmatig uitvoeren.
Deze I/O-error heeft te maken met de IOMMU (Input-Output Memory Management Unit) en is een bekend probleem waar ook eigenaars van andere Ryzen-moederborden last van hebben – in sommige gevallen zou het systeem zelfs crashen. Wij hadden daar geen last van. We hebben enkele integriteitstests uitgevoerd, want dit zou kunnen duiden op een groter probleem bij de aansturing van de NVMe-controller waarbij ongemerkt gegevensfouten optreden. Bij de tests hebben we echter niets aangetroffen. De Linux-kernel 5.5 zal de oorzaak van dit probleem verhelpen.
Er lijkt op korte termijn nog geen oplossing te komen voor het probleem, want tot nu toe lijkt nog niemand het doorgegeven te hebben bij de kernel-ontwikkelaars. We hebben contact opgenomen met een ontwikkelaar, die gezegd heeft er eens naar te kijken. Als je het niet vertrouwt, kun je het verhelpen door de kernel te starten met de parameter iommu=soft, waarmee ook de trimprocedure functioneert.
Door zijn vele cpu-cores haalde de high-end pc bij het compileren van Linux 5.3 moeiteloos als eerste zijn doel, want hij wist de taak in maar 45 seconden te voltooien. De aanzienlijk zwakkere mini-pc deed er zesenhalve minuut over. Met een krachtige Radeon of GeForce grafische kaart is de duurste pc ook in de
grafische benchmarks stukken sneller dan de andere bouwvoorstellen, zoals blijkt uit de tabel met meetwaarden. Daar hebben we ook waarden in opgenomen met de PowerColor Radeon RX 5700 XT Red Devil, die we in de artikelen al kort hebben genoemd. Deze kaart is een goede vervanger voor Linux-gebruikers die liever geen GeForce-kaart gebruiken. De generatie Radeon-kaarten die AMD afgelopen zomer heeft geïntroduceerd, presteert in gaming-benchmarks onder Linux grotendeels gelijk aan de GeForce RTX 2070 Super. En dat terwijl de AMD-kaart met de stillere en in theorie tragere silent-BIOS draaide (zie de link voor meer info). Maar let wel op: Ubuntu ondersteunt de 5700 XT pas goed na installatie van alle updates, die ook de vereiste firmware voor de grafische kaart na-installeren.
MEETWAARDEN HALEN
Naast de bovengenoemde individuele eigenaardigheden, waren er ook enkele problemen waar meerdere pc’s last van hadden. Het was bijvoorbeeld alleen mogelijk bij de mini-pc en de betaalbare gaming-pc om de processortemperatuur op te vragen. Goed nieuws voor de twee andere systemen waar een Ryzen 3000-cpu in zit: de Linux-kernel 5.4 kan de temperatuur van deze cpu’s wel uitlezen.
Bij geen van de vier pc’s is het standaard mogelijk om waarden die de super I/O-chip meet op te vragen, zoals de temperatuur van het moederbord, de rpm van de ventilators of de spanningsniveaus. Bij de high-end pc hebben we ook geen manier kunnen ontdekken om dat voor elkaar te krijgen, want de Linux-kernel ondersteunt de super I/O-chip ITE IT8688E niet. Het zit er ook niet in dat deze ondersteuning er zal komen, omdat de fabrikant geen toegang tot zijn datasheets verleent aan de ontwikkelaar die dit op zich heeft genomen. In het verleden wist hij de gegevens nog uit een onofficiële bron te verkrijgen, maar deze is inmiddels opgedroogd.
Bij de drie andere pc’s is het wel mogelijk om de meetwaarden van de super I/O-chip uit te lezen door de kernel-module nct6775 na te laden. De eenvoudigste manier om alles wat je daarvoor nodig hebt in te richten, is door het pakket lm-sensors te installeren en het programma sensors-detect uit te voeren. Het programma herkent de chip en zorgt er desgewenst ook meteen voor dat de distributie de relevante kernel-module voortaan automatisch koppelt. Aansluitend leest sensors de meetwaarden van de chips uit.
DOORGEVEN
Bij de drie krachtigere pc’s hebben we gekeken of het mogelijk was om PCIe-apparaten aan virtuele machines door te geven. Bij de betaalbare gaming-pc was dat geen probleem zolang we de kernel met intel_iommu=on startten. Bij Intel-cpu’s is dit momenteel bij veel distributies noodzakelijk om technieken te gebruiken zoals IOMMU en DMAR (DMA Remapping), die van belang zijn voor de passthrough. Het moederbord heeft echter geen tweede PEG-slot, waardoor het maar matig geschikt is om krachtige grafische kaarten ook in virtuele machines goed te laten presteren.
Bij beide pc’s met de Ryzen 3000-processor hadden we minder succes wat de passthrough betreft. Ondanks pogingen met verschillende kernelparameters die je bij AMD-cpu’s moet instellen voor het doorgeven van PCIe-apparaten, activeerde de kernel van Ubuntu de vereiste DMAR niet correct, al hadden we de vereiste BIOS-instellingen correct ingevoerd.
ENERGIEVERBRUIK
Alle PEG-grafische kaarten die we bij de drie bouwvoorstellen als standaard of als optie hadden voorgesteld, toonden problemen onder Linux. De minste hadden we nog met de AMD Radeon-kaarten. Die vielen alleen op door incidenteel hoog idle verbruik. Dat zie je dan niet alleen in de energierekening terug, maar het zorgt ook voor meer warmte die de ventilatoren van de grafische kaart en de behuizing moeten afvoeren. En dat zorgt dan weer voor meer geluid.
Een kleiner probleem vertoonde de Radeon RX 570. Bij onze tests met 4K-monitors steeg het idle energieverbruik bij de betaalbare gaming-pc met een MSI-kaart onder Linux van 31 watt opeens naar 50 watt. Bij de allrounder waar een RX 570 van Sapphire een optie is, steeg het verbruik in combinatie met een 4K-scherm met bijna 19 watt. Dit wordt veroorzaakt door de grafische driver. Die verhoogt de kloksnelheid van de grafische chip van de Radeon RX 570 aanzienlijk als je het scherm met een refreshrate van 60 hertz aanstuurt. Bij Windows gebeurde dit niet. Daar stijgt het idle energieverbruik pas wanneer je twee schermen aansluit – maar dat is ook het geval bij Linux.
Een stukje irritanter, maar ook ingrijpender is het probleem met de Radeon RX 5700 XT die als alternatief bij de high-end pc wordt genoemd. Deze kaart viel ook al bij een monitor op door het ongebruikelijk hoge idle energieverbruik. Daardoor verbruikt de pc onder Linux idle maar liefst 84 watt – tegen 55 watt bij Windows.
Gelukkig zullen nieuwe drivers daar verbetering in brengen bij Linux 5.4. Deze bieden betere ondersteuning voor energiebesparingstechnieken, waardoor in onze test met de prerelease-versie het energieverbruik daalde naar het Windows-niveau.
NVIDIA-DRIVERS
De vier GeForce-kaarten die we hebben gebruikt, toonden aan dat problemen uit onverwachte hoeken kunnen komen of door ogenschijnlijk triviale details worden getriggerd. Bij deze kaarten activeert Linux standaard de Nouveau-driverfamilie, die de moderne Nvidia-graphics maar matig ondersteunt. Bij de toch al zwakke GeForce 1030 merk je daar in eerste instantie niet zoveel van, maar samen met een 4K-monitor wordt de interface behoorlijk traag. Bij de drie andere kaarten merk je eerder dat er problemen zijn, want Nouveau haalt maar een fractie van de 3D-prestaties uit de gpu’s. Bovendien draaien de ventilators vaak sneller en daarmee luider dan onder Windows. Ook is het idle energieverbruik vaak hoger.
Uiteindelijk zul je er nauwelijks omheen kunnen om de propriëtaire drivers van Nvidia te installeren. Wij hebben deze voor alle tests daarom gedownload via de optie in Ubuntu om extra drivers te installeren. Na de vereiste herstart meldde het systeem de testgebruiker niet meer automatisch aan, zoals we dat hadden ingesteld tijdens de installatie bij het aanmaken van de gebruiker. In plaats daarvan verscheen na het starten de inlogmanager. Na een minuut of twee verschenen soms delen van de desktop die we echter niet konden bedienen en kwam er nog het venster van de inlogmanager doorheen. Het probleem trad op bij alle actuele driverversies die Ubuntu op dat moment aanbood: zowel de Short Lived Branch (435. xx) als de Long Lived Branch (430.xx).
Na talloze controles met andere distributies stootten we toevallig op de oorzaak van het probleem: een timing-issue tussen X-server en systemd-logind bij het automatische aanmelden bij Ubuntu. Nadat we deze hadden gedeactiveerd draaide alles zoals het hoort.
Zo blijkt maar weer dat er tussen ‘Gaat vanzelf’ en ‘De driver werkt niet’ soms een onopvallende hobbel zit die niets met de grafische driver te maken heeft.
SUSPEND-PROBLEMEN
Bij alle GeForce-kaarten trad er bovendien een ander probleem op bij een testopstelling met een 4K-monitor van Acer. Als deze via HDMI was aangesloten, functioneerde de stand-byfunctie opeens niet meer betrouwbaar. Soms bleef het scherm van Acer na het ontwaken van het systeem uit de slaapmodus helemaal donker, maar toonde hij wel het ontgrendelscherm als we dan blind met Ctrl+Alt+F3 een terminalvenster openden en vervolgens weer met Ctrl+Alt+F2 naar het ontgrendelscherm wisselden. Soms verscheen het ontgrendelscherm echter pas nadat we de HDMI-kabel kort ontkoppelden. Zo nu en dan was de enige oplossing om van HDMI naar DisplayPort te wisselen – en soms hielp ook dat niet. Ondanks lang zoeken hebben we geen oorzaak of oplossing kunnen vinden. Dit fenomeen trad niet op onder Windows.
SUSPEND-PROBLEMEN, DEEL 2
Bij de drie grote pc’s was er nog een probleem bij de varianten met een GeForce GTX 1660 (betaalbare gamingpc), RTX 2060 Super (allrounder) of de RTX 2070 Super (high-end-pc). Afhankelijk van de distributie, grafische kaart en driver, uitte dit probleem zich op twee manieren. In één geval weigerde het systeem twee tot drie minuten lang naar de suspend-modus te schakelen. In het andere geval leek het systeem tijdens het starten vast te lopen – soms was er dan iets zichtbaar op het scherm, soms ook niet. In dat geval moesten we rustig afwachten en niet meteen op de resetknop drukken, want twee tot drie minuten later startte het systeem opeens gewoon weer door. In beide gevallen trad deze denkpauze op nadat het systeem uit de suspend-modus was wakker geworden.
Bij nader onderzoek van de output van dmesg zagen we dat de kernelmodule Ucsi_Ccg ongeveer twee tot drie minuten na de start meldde dat de module de hardware die hij beheerde niet kon initialiseren. Welke hardware dat precies was, bleef onduidelijk. Met modinfo ucsi_ccg werd duidelijk dat de driver de usb c-controller van Cypress onder zijn beheer heeft. Alleen zit deze controller op geen van de door ons gebruikte moederborden, maar wel op de grafische chips van de drie GeForce-kaarten. Fabrikanten van grafische chips kunnen daarmee een USB-C-aansluiting integreren voor het aansturen van VR-brillen, alleen gebruikt geen van de door ons gebruikte grafische kaarten deze mogelijkheid. We hebben bij wijze van test de module gedeactiveerd door de kernel met de volgende parameter te starten: module_blacklist=ucsi_ccg
En warempel, met deze truc startte het systeem lekker snel op en waren de suspendproblemen verdwenen. De USB-C-aansluiting van het moederbord werkte nog zonder problemen.
LANGLOPENDE DISTRIBUTIE?
Wij hebben de pc’s overigens getest met Ubuntu Desktop 19.10, dat zich bij de eerste tests als goede keuze bewees. Fedora 31 werkte ook goed. Dat is
overigens niet verrassend, want bij beide distributies zitten de essentiële componenten op praktisch identieke versieniveaus. Beide gebruiken bijvoorbeeld de 3D-driver van Mesa 19.3 en een kernel die op Linux 5.3 is gebaseerd. Veel rolling release-distributies zitten momenteel op een vergelijkbaar niveau, daarom zouden deze zich min of meer hetzelfde moeten gedragen.
Met langlopende Linux-distributies hadden we minder geluk. De actuele versie 19.2 van Linux Mint ging het niet goed af: deze versie mist een groot aantal drivers voor veel pc's, omdat deze standaard alleen een kernel gebruikt die op Linux 4.15 is gebaseerd. Deze beschikt ook niet over enkele optimalisaties voor de Ryzen 3000-cpu’s die we bij de allround- en highend-pc hebben gebruikt.
Met Ubuntu Desktop 18.04.3 LTS ging het beter, maar ook niet geweldig. Deze distributie gebruikt een Linux 5.0-kernel, die overigens bij Linux Mint als optie bestaat. De aanvullende drivers-functie van deze distributies biedt echter alleen oudere Nvidia-drivers aan. Deze ondersteunen al de GeForce GT1030 grafische kaart, maar niet de 1660, 2060 Super of 2070 Super. Beide langlopende distributies beschikken ook niet over drivers voor de Radeon RX 5700 XT, die zitten er pas in vanaf Linux 5.3. Geschikte drivers voor de Radeon RX 750 uit twee pc-voorstellen, zitten daarentegen wel in Ubuntu 18.04.3. Die van 19.10 zijn echter een half jaar nieuwer. Deze leveren betere 3D-prestaties en werken beter met actuele games.
De matige prestaties onder langlopende distributies en de besproken problemen die met Linux 5.4 verdwijnen bevestigen maar weer dat als je ervoor kiest nieuw verschenen hardware te gebruiken, je ook een zo nieuw mogelijke Linux-versie moet gebruiken – en dan het liefst een waar regelmatig nieuwe kernelversies van verschijnen. Denk daarbij aan Fedora, openSUSE Tumbleweed of Arch Linux en diens telgen. Hier zijn inmiddels of zullen op korte termijn nieuwe kernelversies van verschijnen. Daarmee zullen enkele problemen die wij tegen zijn gekomen al verholpen zijn, zoals het hoge energieverbruik van de 5700 XT. Gebruikers van Ubuntu die niet zelf handmatig de kernel updaten en bijhouden zullen deze en andere manco’s wel moeten verduren tot de nieuwe versie, die in april 2020 verschijnt.
CONCLUSIE
Op geen van onze bouwvoorstellen draaide Linux direct vlekkeloos. Dat kan bij de installatie de nodige frustratie en irritatie opleveren, zoals bij ons tijdens onze tests. Uiteindelijk waren er geen al te dramatische problemen en alle obstakels die we tegenkwamen waren met kleine ingrepen redelijk eenvoudig op te lossen.
We waren echter minder blij met de display-problemen bij de mini-pc en de I/O-fout bij het highend-voorstel, want daar lijkt momenteel niet echt een goede oplossing voor te zijn. De betaalbare gaming-pc en de allrounder kwamen wat dat betreft beter uit de bus. Maar ongeacht welke pc je wilt gebruiken: uit de test blijkt dat een nieuw systeem ook een actuele Linuxversie nodig heeft met een nieuwe kernel en de laatste videodrivers.
Literatur
[1] Benjamin Kraft en Alieke van Sommeren, Bouwvoorstel voor een betaalbare full-hd gaming-pc,
c’t 12/2019, p.108
[2] Rudolf Opitz, Multimedia-hulpjes, Goedkope grafische kaarten voor 4K-schermen en video,
c't 10/2017, p.106