UEFI: problemen bij Linux voorkomen
Valkuilen vermijden bij het installeren van Linux op een UEFI-pc
UEFI heeft een slechte reputatie in de opensourcegemeenschap, hoewel het veel voordelen heeft voor Linux-gebruikers. Twee daarvan zijn de gemakkelijk BIOS-updates en een aanzienlijk robuustere parallelle installatie van meerdere besturingssystemen. Sommige oude rotten zullen nu wat spottend lachen, maar vroeg of laat zullen ze echter te maken krijgen met de moderne opstartprocedure, want nieuwe pc's starten hun besturingssysteem bijna altijd op
UEFI dringt steeds nadrukkelijker door in de pc-wereld en is steeds moeilijker te ontlopen. Dat is verder geen probleem voor Linuxgebruikers, want het opensource besturingssysteem kan intussen goed overweg met de technologie. Er zijn echter wel valkuilen. Met onze tips omzeil je de meeste.
via UEFI-mechanismen. De meeste UEFI BIOS-versies kunnen een besturingssysteem weliswaar starten zoals de klassieke BIOS-systemen, maar voor de daarvoor benodigde CSM (Compatibility Support Module) is het grafschrift al geschreven. Bovendien kunnen steeds meer hardwarefuncties alleen nog maar gebruikt worden als het BIOS het besturingssysteem start met behulp van UEFI.
UEFI is nu hoe dan ook meestal de beste opstartprocedure, want de Linux-
en firmware-ontwikkelaars 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 installatie van verschillende besturingssystemen, zie het artikel op pagina 134. Veel elementaire informatie over UEFI laten we hier buiten beschouwing, want die is aan bod gekomen in eerdere teksten in c't [1,2].
De kerngegevens
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-distributie als Fedora, Linux Mint, OpenSuse Leap of Ubuntu wilt installeren, is er niet echt een verschil met tien of vijftien jaar geleden. Plaats gewoon het installatiemedium zoals beschreven door de distributeur van Linux, start daarvan op en volg de instructies van het installatieprogramma. Over het bij nieuwe pc's alomtegenwoordige UEFI hoef je je verder geen zorgen te maken, zolang je het installatieprogramma laat partitioneren. 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ïnstalleerde besturingssystemen start. Voor de
meeste toepassingen is 100 MB genoeg. Als je echter vaak verschillende distributies uitprobeert of wilt experimenteren met EFI-boottechnieken, 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 bovenstaande is al genoeg voor de vele gebruikers die Linux als enige besturingssysteem willen installeren, maar helaas niet voor iedereen. Het wordt ingewikkelder als je bijvoorbeeld Arch Linux of Debian GNU/Linux wilt installeren: die booten niet op systemen van de grote fabrikanten. Dat komt door UEFI Secure Boot, dat vrijwel altijd actief is op dergelijke computers, maar dat door die distributies niet wordt ondersteund. Als je ze wilt installeren, moet je bij de BIOSinstellingen eerst die beveiliging uitschakelen. Dit kan ook voor Ubuntu en dergelijke interessant zijn, omdat je zo enkele beperkingen vermijdt (zie het kader).
Als je Secure Boot uitschakelt, wordt iets anders ook belangrijk, iets waar je ook op moet letten als
- iemand misschien de BIOS-instellingen 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 waarschijnlijk actief, die niet parallel gebruikt kan worden met Secure Boot. Sommige UEFI-BIOS-systemen schakelen daarom automatisch de BIOS-compatibiliteitsmodus in als je Secure Boot uitschakelt.
Het probleem is dat als de CSM actief is, opslagmedia dubbel voorkomen in het BIOS-boot-menu en bij de configuratie van de opstartvolgorde in de BIOS-instellingen. Dat hoeft geen verrassing te zijn, want het UEFI-BIOS kan de besturingssystemen op deze media zowel klassiek als via UEFI opstarten, tenminste als ze de opstartcode voor beide procedures bevatten. Dat is bij de installatiemedia van moderne besturingssystemen meestal het geval. Deze vermenging van procedures is de bron van veel problemen, zowel bij Linux als bij Windows. De manier waarop je het installatiemedium start, bepaalt al hoe een daarmee geïnstalleerd besturingssysteem opstart.
De grote valstrik
Dat komt door de boot-ingangen die gebruikt worden bij de UEFI-start en die je na de installatie van het besturingssysteem in het BIOS-opstartmenu of in de configuratie van de opstartvolgorde bij de BIOSinstellingen ziet. Die vloeien voort uit UEFIvariabelen die de installers opslaan in een geheugengebied van het BIOS. Die laten het UEFI-BIOS weten waar het de bootloaders van de geïnstalleerde besturingssystemen kan vinden. Het kernprobleem is dat de installatieroutine de variabelen creeert via interfaces tussen het besturingssysteem en het UEFI-BIOS. Die manier van communicatie is alleen beschikbaar als de installatiemedia 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 installeren.
Als die procedures allebei gebruikt worden, is dat niet alleen verraderlijk voor live-Linux-systemen en installatiemedia, maar ook voor diagnostische en reparatiesystemen op dvd en usb, zoals partitioneringstools en imagers. Als je dergelijke hulpmiddelen gebruikt en niet opstart via het mechanisme waarmee het geïnstalleerde besturingssysteem opstart, is het resultaat vaak een rommeltje. Het be-
De manier waarop je het installatiemedium start, bepaalt al hoe een daarmee
geïnstalleerd besturingssysteem
opstart
sturingssysteem 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 partitionering.
Nu is het werken met wisselende bootmechanismen echter niet aan te raden. Kies in plaats daarvan voor één opstartmethode, dus schakel bij voorkeur CSM uit en kies het toekomstbestendige UEFI. Als je UEFI echter voorlopig wilt vermijden, schakel dan de UEFI-boot-mechanismen uit bij de BIOS-instellingen. Hoe dan ook, die keuze moet je maken voordat je het eerste besturingssysteem installeert, zodat het de gewenste opstartprocedure gebruikt. Een geïnstalleerd besturingssysteem start namelijk niet langer als je bij de BIOS-instellingen de procedure uitschakelt waarmee het opstart.
Let op: het BIOS van sommige systemen activeert CSM onder bepaalde omstandigheden ongevraagd. Ook zijn er BIOS-versies waarbij je de opstartmethode maar moeilijk kunt vastleggen. Voordat je met de Linux-installatie begint, kun je het beste controleren of het installatiemedium op de gewenste manier is opgestart, zodat het systeem later ook met precies deze procedure begint. Roep daarvoor nadat het installatiemedium is opgestart eerst de opdrachtregelopdracht 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 bootprocedure al herkennen aan de bootloader. Verschijnt hier een puur tekstmenu van GRUB, zoals je dat kent van geïnstalleerde Linux-systemen, dan heeft het BIOS het installatiemedium gestart met behulp van UEFI. De installer is echter klassiek gestart, als er kleine grafische symbolen verschijnen en je met een druk op een toets een menu opent in het midden van het scherm.
Partitionering
Bij het installeren is er nog een struikelblok als er al gegevens staan op de schijf waarop de ESP moet komen. In dat geval heeft hij waarschijnlijk ook een partitietabel. 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. Theoretisch hoef je je niets van de partitionering aan te trekken, want Ubuntu en sommige andere Linux-distributies starten ook met UEFI van media met een MBR. De combinatie UEFIboot en MBR-partitionering 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-distributies 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 gepartitioneerd medium. Daarom kun je de ESP beter daarop plaatsen. Controleer eerst welke partitioneringen 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 installatie een MBR bevat, moet je overschakelen. 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 (bijvoorbeeld met Gparted), waarna je in het opdrachtregelprogramma gdisk het expertmenu oproept, waarmee je naar GPT kunt overstappen. Voor zo'n gevaarlijke 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 installatiemedium maakt op een van de manieren die de distributeur in de documentatie vermeldt. Universele tools zoals Unetbootin werken vaak wel, maar kunnen struikelen wanneer distributeurs iets in het opstartproces veranderen. Vooral bij een UEFI-boot kan het dan snel misgaan.
Een andere valkuil ligt op de loer bij sommige tablets en netbookachtige notebooks die een 64-bit x86-processor hebben, maar 32-bit UEFI-firmware. Om ervoor te zorgen dat Linux daarmee opstart, moet het installatiemedium een 32-bit UEFI-loader bevatten. Afgezien van de x86-64-versies van Fedora en de x8632-versie van Debian voldoet vrijwel geen Linux-distributie 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 fabrikanten vaak alleen met Windows testen. Vooral in het begin waren er vreemde bugs, waardoor de BIOS-versies bijvoorbeeld bootingangen 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 beschadigen, 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 installatiemedium te laten opstarten omdat de benodigde toetsen nogal eens verschillen. Bovendien is het tijdvenster waarin je op de knop moet drukken vaak erg klein door BIOS-functies als 'Fast Boot'. Bij veel pc's kun je de BIOSinstellingen oproepen om de opstartvolgorde in te stellen door op Del te drukken tijdens de zelftest. Soms is dat echter een functietoets zoals F1 of F2, wat uit de documentatie of de BIOS-statusinformatie moet blijken, maar vaak niet staat vermeld. Het opstartmenu van het BIOS (BIOS Boot Select, BBS) is heel geschikt om het installatiemedium een keer te starten. Bij veel pc's
Schakel CSM liever uit bij de BIOS-instellingen 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-instellingen 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 distributies bevat het opstartmenu van een via UEFI gestarte GRUB bovendien ook een menu-optie om naar de BIOS-instellingen te gaan. Dat is allemaal mogelijk geworden met UEFI. Overigens, ik ben me ervan bewust dat deze tekst juist als gevolg van de flexibiliteit van Linux een beetje de indruk wekt alsof UEFI en Linux vreselijk ingewikkeld 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 distributie kiest die daarmee overweg kan. Bij andere schakel je Secure Boot uit en moet je opletten dat je CSM vermijdt. Denk dan bij zelf partitioneren aan de ESP en alles komt goed. (mdt)
Literatuur
[1] Christof Windeck, Wat is het UEFI-BIOS? De knopen wegmasseren 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-Bootbeperkingen bij Fedora en Ubuntu opheffen, c’t 9/2016, p. 176