Opstarten in uefi: alternatieve boot-methodes

Door: Jochem de Goede | 08 december 2017 11:12

Apps & Software

Inhoudsopgave

  1. Inleiding
  2. Pagina 2

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.

01 Een voorbeeld van wat uefi-code: je kunt zelf dus ook uefi-programma’s schrijven.

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.

02 Overzicht van hoe het totale opstartproces van Windows 8 eruitziet.

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.

03 Secure Boot handhaaft dat alleen ondertekende binary’s gestart kunnen worden, bijvoorbeeld ondertekend door Microsoft.

0 Reacties op: Opstarten in uefi: alternatieve boot-methodes

  • Om te reageren moet je ingelogd zijn. Nog geen account? Registreer je dan en praat mee!
  • Er zijn nog geen reacties op dit artikel.

Wanneer je een reactie plaatst ga je akoord
met onze voorwaarden voor reacties.

Op deze website gebruiken we cookies om content en advertenties te personaliseren, om functies voor social media te bieden en om ons websiteverkeer te analyseren. Ook delen we informatie over uw gebruik van onze site met onze partners voor social media, adverteren en analyse. Deze partners kunnen deze gegevens combineren met andere informatie die u aan ze heeft verstrekt of die ze hebben verzameld op basis van uw gebruik van hun services. Meer informatie.

Akkoord