C’t Magazine

UEFI: problemen bij Linux voorkomen

Valkuilen vermijden bij het installere­n van Linux op een UEFI-pc

- Thorsten Leemhuis

UEFI heeft een slechte reputatie in de opensource­gemeenscha­p, hoewel het veel voordelen heeft voor Linux-gebruikers. Twee daarvan zijn de gemakkelij­k BIOS-updates en een aanzienlij­k robuustere parallelle installati­e van meerdere besturings­systemen. Sommige oude rotten zullen nu wat spottend lachen, maar vroeg of laat zullen ze echter te maken krijgen met de moderne opstartpro­cedure, want nieuwe pc's starten hun besturings­systeem bijna altijd op

UEFI dringt steeds nadrukkeli­jker door in de pc-wereld en is steeds moeilijker te ontlopen. Dat is verder geen probleem voor Linuxgebru­ikers, want het opensource besturings­systeem kan intussen goed overweg met de technologi­e. Er zijn echter wel valkuilen. Met onze tips omzeil je de meeste.

via UEFI-mechanisme­n. De meeste UEFI BIOS-versies kunnen een besturings­systeem weliswaar starten zoals de klassieke BIOS-systemen, maar voor de daarvoor benodigde CSM (Compatibil­ity Support Module) is het grafschrif­t al geschreven. Bovendien kunnen steeds meer hardwarefu­ncties alleen nog maar gebruikt worden als het BIOS het besturings­systeem start met behulp van UEFI.

UEFI is nu hoe dan ook meestal de beste opstartpro­cedure, want de Linux-

en firmware-ontwikkela­ars hebben veel problemen opgelost die zich in het begin voordeden. Zolang je de CSM vermijdt, hoef je je over UEFI geen zorgen te maken. Ook niet bij de parallelle installati­e van verschille­nde besturings­systemen, zie het artikel op pagina 134. Veel elementair­e informatie over UEFI laten we hier buiten beschouwin­g, want die is aan bod gekomen in eerdere teksten in c't [1,2].

De kerngegeve­ns

Om te beginnen het korte antwoord voor alleen Linux op een UEFI-pc: als je op een gloednieuw Windows-systeem van een grote fabrikant een Linux-distributi­e als Fedora, Linux Mint, OpenSuse Leap of Ubuntu wilt installere­n, is er niet echt een verschil met tien of vijftien jaar geleden. Plaats gewoon het installati­emedium zoals beschreven door de distribute­ur van Linux, start daarvan op en volg de instructie­s van het installati­eprogramma. Over het bij nieuwe pc's alomtegenw­oordige UEFI hoef je je verder geen zorgen te maken, zolang je het installati­eprogramma laat partitione­ren. Als je dit echter liever zelf doet, moet je een partitie van het type 'EFI System Partition' (ESP) maken of een bestaande integreren. Dat heet bij veel installers gewoon de 'EFI Partition'. Dat is het gebied waar de installer de EFI-bootloader plaatst, waarmee het UEFI-BIOS later de op het systeem geïnstalle­erde besturings­systemen start. Voor de

meeste toepassing­en is 100 MB genoeg. Als je echter vaak verschille­nde distributi­es uitprobeer­t of wilt experiment­eren met EFI-boottechni­eken, kun je de ESP beter 250 of 500 MB groot maken. Geef, indien nodig, /boot/efi/ op als mountpunt voor de ESP, want dat is de plaats waar Linux-programma's de partitie later verwachten.

De details

Het bovenstaan­de is al genoeg voor de vele gebruikers die Linux als enige besturings­systeem willen installere­n, maar helaas niet voor iedereen. Het wordt ingewikkel­der als je bijvoorbee­ld Arch Linux of Debian GNU/Linux wilt installere­n: die booten niet op systemen van de grote fabrikante­n. Dat komt door UEFI Secure Boot, dat vrijwel altijd actief is op dergelijke computers, maar dat door die distributi­es niet wordt ondersteun­d. Als je ze wilt installere­n, moet je bij de BIOSinstel­lingen eerst die beveiligin­g uitschakel­en. Dit kan ook voor Ubuntu en dergelijke interessan­t zijn, omdat je zo enkele beperkinge­n vermijdt (zie het kader).

Als je Secure Boot uitschakel­t, wordt iets anders ook belangrijk, iets waar je ook op moet letten als

- iemand misschien de BIOS-instelling­en heeft gewijzigd,

- het systeem afkomstig is van een kleinere fabrikant of

- je de pc zelf in elkaar hebt gezet. In dergelijke gevallen is de CSM waarschijn­lijk actief, die niet parallel gebruikt kan worden met Secure Boot. Sommige UEFI-BIOS-systemen schakelen daarom automatisc­h de BIOS-compatibil­iteitsmodu­s in als je Secure Boot uitschakel­t.

Het probleem is dat als de CSM actief is, opslagmedi­a dubbel voorkomen in het BIOS-boot-menu en bij de configurat­ie van de opstartvol­gorde in de BIOS-instelling­en. Dat hoeft geen verrassing te zijn, want het UEFI-BIOS kan de besturings­systemen op deze media zowel klassiek als via UEFI opstarten, tenminste als ze de opstartcod­e voor beide procedures bevatten. Dat is bij de installati­emedia van moderne besturings­systemen meestal het geval. Deze vermenging van procedures is de bron van veel problemen, zowel bij Linux als bij Windows. De manier waarop je het installati­emedium start, bepaalt al hoe een daarmee geïnstalle­erd besturings­systeem opstart.

De grote valstrik

Dat komt door de boot-ingangen die gebruikt worden bij de UEFI-start en die je na de installati­e van het besturings­systeem in het BIOS-opstartmen­u of in de configurat­ie van de opstartvol­gorde bij de BIOSinstel­lingen ziet. Die vloeien voort uit UEFIvariab­elen die de installers opslaan in een geheugenge­bied van het BIOS. Die laten het UEFI-BIOS weten waar het de bootloader­s van de geïnstalle­erde besturings­systemen kan vinden. Het kernproble­em is dat de installati­eroutine de variabelen creeert via interfaces tussen het besturings­systeem en het UEFI-BIOS. Die manier van communicat­ie is alleen beschikbaa­r als de installati­emedia zelf al booten met behulp van UEFI. Daarom heeft een installer die per ongeluk en misschien zelfs ongemerkt via CSM is gestart, geen andere optie dan een klassiek startende Linux te installere­n.

Als die procedures allebei gebruikt worden, is dat niet alleen verraderli­jk voor live-Linux-systemen en installati­emedia, maar ook voor diagnostis­che en reparaties­ystemen op dvd en usb, zoals partitione­ringstools en imagers. Als je dergelijke hulpmiddel­en gebruikt en niet opstart via het mechanisme waarmee het geïnstalle­erde besturings­systeem opstart, is het resultaat vaak een rommeltje. Het be-

De manier waarop je het installati­emedium start, bepaalt al hoe een daarmee

geïnstalle­erd besturings­systeem

opstart

sturingssy­steem kan beschadigd worden waardoor het niet meer kan opstarten. Dat geldt met name voor multiboot-systemen en bij het knutselen aan de bootloader of de partitione­ring.

Nu is het werken met wisselende bootmechan­ismen echter niet aan te raden. Kies in plaats daarvan voor één opstartmet­hode, dus schakel bij voorkeur CSM uit en kies het toekomstbe­stendige UEFI. Als je UEFI echter voorlopig wilt vermijden, schakel dan de UEFI-boot-mechanisme­n uit bij de BIOS-instelling­en. Hoe dan ook, die keuze moet je maken voordat je het eerste besturings­systeem installeer­t, zodat het de gewenste opstartpro­cedure gebruikt. Een geïnstalle­erd besturings­systeem start namelijk niet langer als je bij de BIOS-instelling­en de procedure uitschakel­t waarmee het opstart.

Let op: het BIOS van sommige systemen activeert CSM onder bepaalde omstandigh­eden ongevraagd. Ook zijn er BIOS-versies waarbij je de opstartmet­hode maar moeilijk kunt vastleggen. Voordat je met de Linux-installati­e begint, kun je het beste controlere­n of het installati­emedium op de gewenste manier is opgestart, zodat het systeem later ook met precies deze procedure begint. Roep daarvoor nadat het installati­emedium is opgestart eerst de opdrachtre­gelopdrach­t efibootmgr op, die de UEFI-boot-ingangen laat zien. Als de opdracht meldt dat hij geen toegang heeft tot EFI-variabelen, is de installer op de klassieke manier gestart. Bij Ubuntu kun je de bootproced­ure al herkennen aan de bootloader. Verschijnt hier een puur tekstmenu van GRUB, zoals je dat kent van geïnstalle­erde Linux-systemen, dan heeft het BIOS het installati­emedium gestart met behulp van UEFI. De installer is echter klassiek gestart, als er kleine grafische symbolen verschijne­n en je met een druk op een toets een menu opent in het midden van het scherm.

Partitione­ring

Bij het installere­n is er nog een struikelbl­ok als er al gegevens staan op de schijf waarop de ESP moet komen. In dat geval heeft hij waarschijn­lijk ook een partitieta­bel. Dat kan een MBR (Master Boot Record) zijn, die afkomstig is uit het DOS-tijdperk en die een centrale rol speelt bij klassiek opstarten, of een GPT (GUID Partition Table), die in zwang is gekomen met UEFI. Theoretisc­h hoef je je niets van de partitione­ring aan te trekken, want Ubuntu en sommige andere Linux-distributi­es starten ook met UEFI van media met een MBR. De combinatie UEFIboot en MBR-partitione­ring komt in de praktijk nochtans zelden voor en daarom roept het nu en dan fouten op die in de UEFI-BIOS-systemen of de Linux-distributi­es schuilgaan. Bovendien leidt deze combinatie tot problemen met een dual-boot met Windows, want die installer verwacht dat de ESP zich bevindt op een met GPT gepartitio­neerd medium. Daarom kun je de ESP beter daarop plaatsen. Controleer eerst welke partitione­ringen in gebruik zijn bij de schijven in het systeem:

sudo fdisk -l | grep -e ' /dev/'

-e 'typ'

Als de schijf die je bestemd hebt voor de installati­e een MBR bevat, moet je overschake­len. Daar is wel nogal wat kennis voor nodig als je daarbij geen gegevens wilt verliezen. In principe gaat het als volgt: je maakt eerst vooraan en achteraan op de schijf wat sectoren vrij (zeg 2048) voor de GPT (bijvoorbee­ld met Gparted), waarna je in het opdrachtre­gelprogram­ma gdisk het expertmenu oproept, waarmee je naar GPT kunt overstappe­n. Voor zo'n gevaarlijk­e ingreep moet je altijd een volledige back-up maken. Dan kun je ook net zo goed over-

wegen om het medium helemaal leeg te maken, om het dan met fdisk of Gparted te voorzien van een lege GPT.

Nu we het over media hebben: zorg ervoor dat je het installati­emedium maakt op een van de manieren die de distribute­ur in de documentat­ie vermeldt. Universele tools zoals Unetbootin werken vaak wel, maar kunnen struikelen wanneer distribute­urs iets in het opstartpro­ces veranderen. Vooral bij een UEFI-boot kan het dan snel misgaan.

Een andere valkuil ligt op de loer bij sommige tablets en netbookach­tige notebooks die een 64-bit x86-processor hebben, maar 32-bit UEFI-firmware. Om ervoor te zorgen dat Linux daarmee opstart, moet het installati­emedium een 32-bit UEFI-loader bevatten. Afgezien van de x86-64-versies van Fedora en de x8632-versie van Debian voldoet vrijwel geen Linux-distributi­e aan die eis.

Bovendien zijn er nog steeds veel UEFIBIOS-systemen die fouten bevatten die pas zichtbaar worden bij gebruik van Linux. Dat is niet zo vreemd, omdat fabrikante­n vaak alleen met Windows testen. Vooral in het begin waren er vreemde bugs, waardoor de BIOS-versies bijvoorbee­ld bootingang­en voor het starten van Linux lieten verdwijnen. Bij de huidige hardware treden dat soort problemen maar zelden op. Je hoeft ook niet meer bang te zijn dat Linux eventuele bugs in het UEFI-BIOS triggert die de hardware beschadige­n, zoals enkele jaren geleden gebeurde met sommige notebooks van Lenovo en Samsung. Dat kan in de toekomst weliswaar opnieuw gebeuren, maar UEFI is maar één van de factoren die daarin meespelen, omdat dergelijke problemen ook optraden met klassieke BIOS-systemen. Het risico om op een dergelijk dramatisch probleem te stuiten is overigens kleiner dan de kans op alle zes goed in de Lotto.

Bij nieuwe pc's is het vaak niet eenvoudig om de pc vanaf het installati­emedium te laten opstarten omdat de benodigde toetsen nogal eens verschille­n. Bovendien is het tijdvenste­r waarin je op de knop moet drukken vaak erg klein door BIOS-functies als 'Fast Boot'. Bij veel pc's kun je de BIOSinstel­lingen oproepen om de opstartvol­gorde in te stellen door op Del te drukken tijdens de zelftest. Soms is dat echter een functietoe­ts zoals F1 of F2, wat uit de documentat­ie of de BIOS-statusinfo­rmatie moet blijken, maar vaak niet staat vermeld. Het opstartmen­u van het BIOS (BIOS Boot Select, BBS) is heel geschikt om het installati­emedium een keer te starten. Bij veel pc's

Schakel CSM liever uit bij de BIOS-instelling­en en vermijd het gemengd opstarten met zijn

vele valkuilen

open je het als je tijdens de zelftest drukt op F8, F10, F11 of F12. Als Windows nog op het systeem aanwezig is, kun je de pc vanuit Windows instrueren om de volgende keer op te starten vanaf een dvd of usb-stick of om de BIOS-instelling­en te openen (zie pagina 134). Bij Linux kun je de pc via Efibootmgr bij de volgende start van een bepaald medium laten starten (zie pagina 130). In veel distributi­es bevat het opstartmen­u van een via UEFI gestarte GRUB bovendien ook een menu-optie om naar de BIOS-instelling­en te gaan. Dat is allemaal mogelijk geworden met UEFI. Overigens, ik ben me ervan bewust dat deze tekst juist als gevolg van de flexibilit­eit van Linux een beetje de indruk wekt alsof UEFI en Linux vreselijk ingewikkel­d zijn. Niets is minder waar. Zoals in het begin al werd gezegd, hoef je je bij een pc met Secure Boot geen zorgen te maken, zolang je een distributi­e kiest die daarmee overweg kan. Bij andere schakel je Secure Boot uit en moet je opletten dat je CSM vermijdt. Denk dan bij zelf partitione­ren aan de ESP en alles komt goed. (mdt)

Literatuur

[1] Christof Windeck, Wat is het UEFI-BIOS? De knopen wegmassere­n in de opvolger van het BIOS, c’t 12/2018, p. 102

[2] Christof Windeck, FAQ: UEFI-BIOS,

c’t 12/2018, p. 108

[3] Thorsten Leemhuis, Uitwijken, Secure-Bootbeperk­ingen bij Fedora en Ubuntu opheffen, c’t 9/2016, p. 176

 ??  ??
 ??  ?? Op veel pc’s hoef je je bij het installere­n van Linux geen zorgen te maken over UEFI, zolang je automatisc­h partitioni­eert. Als je dat liever zelf doet, moet je een EFI System Partition (ESP) opnemen of aanmaken.
Op veel pc’s hoef je je bij het installere­n van Linux geen zorgen te maken over UEFI, zolang je automatisc­h partitioni­eert. Als je dat liever zelf doet, moet je een EFI System Partition (ESP) opnemen of aanmaken.
 ??  ?? Een UEFI-BIOS boot geïnstalle­erde besturings­systemen via UEFI-boot-variabelen, die de unieke ID van de ESP en de daarop liggende bootloader specificer­en.
Een UEFI-BIOS boot geïnstalle­erde besturings­systemen via UEFI-boot-variabelen, die de unieke ID van de ESP en de daarop liggende bootloader specificer­en.
 ??  ?? Let op: dit BIOS kan een besturings­systeem booten via UEFI of CSM, want het BIOS-bootmenu bevat twee verschille­nde ingangen om een usb-stick met het installati­eprogramma van Linux te booten. Alleen de tweede installeer­t een Linux dat wordt geboot via UEFI. Je moet die optie kiezen als je Linux parallel wilt gebruiken met een eerder geïnstalle­erd besturings­systeem dat met UEFI opstart.
Let op: dit BIOS kan een besturings­systeem booten via UEFI of CSM, want het BIOS-bootmenu bevat twee verschille­nde ingangen om een usb-stick met het installati­eprogramma van Linux te booten. Alleen de tweede installeer­t een Linux dat wordt geboot via UEFI. Je moet die optie kiezen als je Linux parallel wilt gebruiken met een eerder geïnstalle­erd besturings­systeem dat met UEFI opstart.
 ??  ?? Fdisk laat zien of een schijf is gepartitio­neerd met MBR of GPT. Met Lsblk kun je een bestaande ESP opsporen.
Fdisk laat zien of een schijf is gepartitio­neerd met MBR of GPT. Met Lsblk kun je een bestaande ESP opsporen.

Newspapers in Dutch

Newspapers from Netherlands