Opstarten in uefi: alternatieve boot-methodes
Al lange tijd worden nieuwe pc’s en laptops uitgerust met een ‘uefi’ in plaats van de ouderwetse bios. Het argument ‘veiligheid’ wordt echter onterecht gebruikt om het opstarten van een cd of usb-stick (met bijvoorbeeld GParted, malwareherstel of Linux-distributie) moeilijk te maken. In dit artikel lees je waarom dat zo is en hoe je alsnog kunt booten zoals jij dat wilt.
Wat is uefi?
Voordat we daadwerkelijk beginnen, kan het geen kwaad wat termen door te nemen. Uefi staat voor ‘unified extensible firmware interface’ en is als het ware een eigen besturingssysteem voor de computer. Het klassieke bios (basic input/output system) is firmware, maar de uefi ligt tussen de firmware en het besturingssysteem in. Uefi en bios kunnen naast elkaar bestaan op dezelfde computer. Vroeger was er ook efi (extensible firmware interface). Dat werd ontwikkeld door Intel, maar sinds 2005 doet Intel mee aan het UEFI Forum: een consortium van bedrijven uit de computerindustrie dat de uefi verder ontwikkelt. Uefi is ‘unified’ omdat het geheel softwaregebaseerd is: eerder werd het bios voor elke chip apart gecompileerd, uefi is een stuk generieker.
In dit artikel duiken we in de wereld van uefi. Elke pc of laptop wordt vandaag de dag met een uefi geleverd. Het is een verandering die voor sommige gebruikers heel plotseling lijkt te zijn veranderd. Er is veel positiefs aan de uefi: de basisinstellingen van de pc zijn eenvoudiger te bedienen, er is meer functionaliteit en de pc start er sneller door op.
Nadelen zijn er helaas ook: zo is het voor gebruikers wat lastiger en ingewikkelder geworden om vanaf andere media op te starten, bijvoorbeeld vanaf een usb-stick. Veel pc-fabrikanten hebben hun uefi dusdanig dichtgetimmerd dat dat niet zomaar mogelijk is. Bovendien is de situatie ingewikkelder geworden vanwege achterwaartse compatibiliteit, waardoor je alsnog vanaf het bios kunt starten in een uefi-omgeving.
In dit artikel bekijken we hoe het opstarten vanaf de uefi precies werkt met usb-sticks, hoe en waarom het is dichtgetimmerd. En we gaan deze kennis ook praktisch toepassen om op te starten met alternatieve media.
01 Uefi-boot
Op het moment dat de pc start, gaat de uefi-bootmanager aan de slag. Deze kijkt naar de bootconfiguratie en laadt de firmware-instellingen in het geheugen. Daarna wordt de kernel van het standaardbesturingssysteem gestart. In de firmware-instellingen, die opgeslagen liggen in het nvram, staat het pad van het efi-bestand dat gestart moet worden. Nvram staat overigens voor non-volatile random-access memory, dat aanwezig is op het moederbord. Non-volatile houdt in dat de data in het geheugen bewaard wordt, ook als de stroom eraf wordt gehaald.
De opstartbestanden staan op een efi-partitie, ook wel de ESP (efi system partition) genoemd. Zo’n partitie is een simpele fat32-partitie en heeft een mapje voor elk besturingssysteem dat op de pc staat. Elke map bevat één efi-bestand, aangemaakt door het geïnstalleerde besturingssysteem. Zo’n efi-bestand wordt gemaakt in een uefi-programmeertaal die veel lijkt op de taal C en dat bestand start het daadwerkelijke besturingssysteem.
Het voordeel van de uefi is dat het automatisch nieuwe uefi-bootdoelen kan detecteren. Op die manier kun je eenvoudig opstarten vanaf andere media. Om die functionaliteit mogelijk te maken, maakt uefi gebruik van standaardpaden om de bootloader te definiëren. Zo’n pad en bestandsnaam is bijvoorbeeld /efi/boot/boot_x64.efi voor een 64bit-systeem en voor de ARM-architectuur zou het bestand bootaa64.efi heten.
Vooral aan het begin van de introductie van de uefi ontstonden er weleens opstartproblemen. Elke bootloader had namelijk zijn eigen problemen of eigenaardigheden. Zo maakte Windows 7 bijvoorbeeld een nieuwe fat32-ESP, zelfs al was er een bestaande met fat16. Daarna mislukte de installatie. Veel Linux-distributies maakten vroeger een fat16-ESP aan. Bovendien hadden Ubuntu 11.04 en 11.10 een serieuze bug waarbij de ESP soms per ongeluk leeg werd gemaakt.
Bij het booten is nog één term van belang: CSM, dat staat voor compatibility support module en het biedt ondersteuning voor legacy-booten door ondersteuning voor het bios te bieden. Je kunt CSM alleen inschakelen als de optie Secure Boot uitstaat, maar daarover in paragraaf 3 meer.
©PXimport
02 Gpt
Gpt, oftewel de ‘guid partition table’, vervangt het oude mbr (master boot record), de manier waarop vroeger schijven werden ingedeeld. De gpt is een onderdeel van de uefi. Sinds Windows Vista kan Windows kan alleen van gpt-schijven in uefi opstarten. De partition header van een gpt-schijf bevat informatie over welke blokken gebruikt kunnen worden op de schijf. Ook bevat deze header de ‘guid’ van de schijf: de general unique identifier, een uniek identificatienummer. Een gpt-schijf kan basic of dynamic zijn, net als bij het mbr. Gpt ondersteunt tot 128 partities en het maakt automatisch een back-up van de gpt-partitietabel.
Het probleem met het master boot record was dat het niet meer van deze tijd was: schijven groter dan 2 TB konden niet gestart worden bijvoorbeeld. Gpt biedt ondersteuning voor schijven tot een grootte van 9,4 ZB. Dat zijn zetabytes, oftewel 9,4 x 10^21. Overigens bevat de gpt in het allereerste blok nog wel een mbr voor compatibiliteitsredenen. Deze zit in blok 0. In blok 1 zit de gpt-header en in de rest zijn de partities aanwezig.
©PXimport
03 Secure Boot
Secure Boot is een onderdeel van uefi en is bedoeld om malware die de firmware aanvalt tegen te houden. Zulke malware is erg naar, want die kan namelijk een herinstallatie van het besturingssysteem overleven doordat die zich in de firmware nestelt. Het principe van Secure Boot is erg eenvoudig: alleen binary’s (bestanden met alleen code) die ondertekend zijn door een vertrouwde partij worden opgestart. Malware kan in theorie niet ondertekend worden, dus daarmee wordt malware dan geblokkeerd. Bedrijven kunnen hun uefi-binary door Microsoft laten ondertekenen. In de meeste uefi’s zijn de publieke sleutels van Microsoft aanwezig. Als een bedrijf zijn binary laat ondertekenen, dan gebeurt dit dus met Microsofts privésleutel, zodat de firmware die binary herkent en start.
Ubuntu zag de bui al hangen en heeft dus zijn binary’s maar laten ondertekenen door Microsoft. Daarom kun je sinds 2012 Ubuntu gebruiken op uefi-systemen. Indien je een Linux-distributie wilt gebruiken die niet ondertekend is, dan kun je of Secure Boot uitzetten in de uefi of je kunt zelf eigen sleutels installeren in je uefi. Uiteindelijk wordt voor Secure Boot gewoon een public-private key-architectuur gebruikt en dus kun je dan de publieke sleutel van de binary installeren, waarna die wel gewoon gestart kan worden.
©PXimport
04 Secure Boot uitschakelen
Als je een Linux-distributie wilt opstarten vanaf een usb, kun je het dus eerst proberen met Secure Boot aan, aangezien een aantal Linux-distributies daar gewoon mee werken. Als dat niet lukt, is het de eenvoudigste optie om Secure Boot maar uit te zetten. Hoe je dat precies doet, verschilt per pc-fabrikant. Bij sommige pc’s zal de procedure bovendien lastiger of zelfs in zijn geheel onmogelijk zijn dan bij andere.
Om het toch te proberen, ga je in de uefi en zoek je naar de optie genaamd Secure Boot. Om in de uefi te komen, klik je in Windows 10 op de startknop, daarna op het tandwiel (de optie Instellingen) en tot slot op Opnieuw opstarten met de Shift-toets ingedrukt. Eenmaal opnieuw gestart verschijnt er een Windows-scherm en ga je naar Problemen oplossen / Geavanceerde opties / Instellingen voor UEFI-firmware / Opnieuw opstarten. De Secure Boot-opties vind je vaak onder het menu Boot of onder Windows Configuration Options.
Een andere manier om in de uefi te komen is net als vroeger om in het bios te komen: om tijdens het opstarten te drukken op sneltoetsen als Esc, F2, Delete enzovoort. De exacte toets verschilt per fabrikant.
Sommige fabrikanten bieden tooltjes aan waarmee je de uefi-instellingen via Windows kunt wijzigen. Dat is een stuk eenvoudiger, dan kun je misschien rustiger eens rondkijken met de handleiding van je moederbord ernaast.
©PXimport
05 Maak handmatig een opstartbare uefi-schijf
Je kunt op twee manieren een opstartbare usb-schijf maken: met een tooltje of zonder. Het tooltje behandelen we in paragraaf 6, maar dit zou geen masterclass zijn als we niet eerst handmatig aan de slag gaan. Sluit je usb-schijf aan. Open vervolgens in Windows 10 de PowerShell met admin-rechten en typ dan diskpart en list disk. Onthoud het schijfnummer van je usb-stick en typ bijvoorbeeld select disk 5. Typ clean om de schijf te legen. Zie je bij Gpt in de tabel die getoond wordt na de opdracht list disk een sterretje bij je usb? Typ dan convert mbr. Daarna typ je de opdrachten:
create partition primary
format fs=fat32 quick
active
assign
exit
Vooral het active-commando is belangrijk: dat markeert de schijf als opstartbaar. Daarna kopieer je de bestanden vanuit een iso-bestand naar je usb-stick. Dat kan dus zijn vanuit de Windows-iso, maar ook een Linux-iso. Om te verifiëren dat je schijf goed gaat werken, check even of er een map /efi/boot aanwezig is met een efi-bestand erin.
©PXimport
06 Opstartbare uefi-schijf met een tooltje
Er zijn diverse handige tooltjes om een opstartbare uefi-usb-stick of -schijf te maken. De eerste is de Windows 10-downloadtool van Microsoft. Daarmee kun je of een iso of meteen een opstartbare usb-stick maken. Voor Linux kun je gebruikmaken van een tool als Rufus of Win32DiskImager. Veel Linux-distributies leveren ook een iso-bestand dat je direct naar de schijf weg kunt schrijven, waarna die automatisch opstartbaar wordt. Daarvoor gebruik je dd-modus. Zorg ervoor dat je in Rufus kiest voor de uefi-computerindeling met een gpt-schijf.
©PXimport
07 Bootmenu
Het belangrijkste is nu natuurlijk om het uefi-bestand van deze schijf te starten. Zoals altijd: de methode verschilt per moederbord. Vaak zie je het na het starten meteen de tekst om het bootmenu te openen, vaak is dat iets als F1, F2, F11, F12, Delete of Esc (let op dat je toets kiest waarmee je het bootmenu opent en niet in de uefi opstart). Eenmaal in het bootmenu zie je de usb-stick in de lijst staan en kun je deze selecteren en starten. Wil je nu niet steeds handmatig op een toets willen drukken, dan kun je natuurlijk ook de opstartvolgorde wijzigen. Daarvoor start je wel in de uefi op en zoek je naar de bootvolgorde. Het is dan een kwestie van usb bovenaan zetten.
©PXimport