Windows 10 omzetten naar starten via UEFI
Als een al geïnstalleerde Windowsversie niet meer in de legacy-BIOSmaar in de UEFI-modus moet booten, heb je voor het omzetten maar twee handelingen nodig – maar die zijn dan wel vrij bewerkelijk. Bovendien moet nog aan een paar voorwaarden voldaan worden en moet je bij Windows 10 versie 1903 nog een bug omzeilen.
Of een pc opstart met het klassieke legacy-BIOS of via UEFI speelt doorgaans geen rol, omdat je daar in de praktijk geen verschil tussen merkt. Je zult dan ook zelden de bootmodus willen aanpassen, maar als het tegenzit zal Windows helemaal niet meer starten. Soms is een aanpassing echter noodzakelijk. Misschien wil je een ssd overzetten uit een pc die op de klassieke manier boot naar een nieuwe pc die alleen boot met UEFI. Of je wilt UEFI-beveiligingsfuncties als Secure Boot of daaraan gekoppelde Enterprise-functies als Windows Defender System Guard gebruiken [1].
De veiligste methode voor wijzigen van de bootmethode is eigenlijk met behulp van ons hulpprogramma c’t-WIMage. Daarmee maak je een image van de systeempartitie met alles wat daarop staat, vervolgens stel je het BIOS in op UEFI-boot en tot slot zet je de image terug. Hoe dat gaat, is beschreven in [2]. Maar die manier kost (veel) tijd en als je al ergens een werkende back-up van je Windows-installatie hebt, kan het sneller. Dat kan via Windows PE [3] of vanaf Windows 10 versie 1703 zelfs terwijl Windows draait. Een waarschuwing vooraf: doe dat echt alleen als het noodzakelijk is, want er is geen weg terug – behalve het terugzetten van de Windows-back-up. Het is zeker interessant om te weten hoe het omzetten werkt, maar nieuwsgierigheid alleen is geen goede reden om het daadwerkelijk te doen.
HET PROBLEEM
Voor we beginnen nog een paar opmerkingen over waarom het aanpassen van de boot-modus eigenlijk een probleem is. Om het in één woord uit te drukken: Windows. Het op een opslagmedium geïnstalleerde Windows heeft dankzij Microsoft namelijk enkele afhankelijkheden waar geen technische noodzaak voor is. Om in UEFI-modus te kunnen booten, moet de Windows-bootloader zich bevinden op een opslagmedium met een GUID-partitietabel (GPT). Specifieker: dat moet een FAT-geformatteerde EFI System Partition zijn (ESP, standaard geformatteerd met FAT32). Bij de klassieke bootmethode moet de bootloader zich juist bevinden op een opslagmedium met MBR-indeling.
Voor het aanpassen van de bootmethode volstaat het daarom niet om alleen de BIOS-instellingen te wij
zigen van klassiek booten naar UEFI-boot, want dan start Windows niet meer. Ook een aanpassing van het partitieschema is nodig. Op zijn minst zal er een ESP gemaakt moeten worden, en moet die worden voorzien van de juiste bootloader. Dat hoef je niet handmatig te doen, want daarvoor heeft Windows de commandline-tool MBR2GPT.exe.
Of Windows klassiek of via UEFI is gestart, kun je nagaan met het in Windows ingebouwde msinfo32. exe. Op de regel ‘BIOS-modus’ staat daar ‘UEFI’ oftewel ‘Verouderd’. Dat laatste duidt op de klassieke bootmodus. Het partitieschema van een opslagmedium kun je bijvoorbeeld via Apparaatbeheer controleren. Ga in het eigenschappenvenster van het schijfstation naar het tabblad Volumes en klik op de knop Invullen, dan staat de gezochte informatie op de regel Partitiestijl.
RISICO’S
Voordat je omschakelt, moet je twee potentiele risico’s uitsluiten. Het eerste: de commandlinetool draait niet alleen onder 64-bit maar ook op 32-bit Windows-versies, maar daar heb je in de praktijk eigenlijk niets aan. In de UEFI-modus moet de architectuur van de bootloader namelijk passen bij die van de UEFI-firmware en die is op bijna alle pc’s 64-bit. Zet je bij zo’n pc een 32-bit installatie om, dan kan het resultaat niet booten. Opstarten in de klassieke modus lukt dan niet meer, maar ook niet via UEFI!
Omdat je de firmware niet makkelijk kunt controleren, moet je de architectuur daarvan in de praktijk nagaan. Dat gaat het makkelijkst met een Windowsinstallatiemedium, dat je als het nodig is kunt maken met de Media Creation Tool (MCT, zie link aan het eind van dit artikel). Maak daarmee een usb-stick voor een 32-bit Windows-installatie, stel het BIOS in op UEFIboot en probeer van die stick te booten. Herhaal die test met een 64-bit installatiemedium. Als die wel boot en de 32-bit versie niet, heeft de firmware een 64-bit architectuur. In de omgekeerde situatie is de architectuur 32-bit.
Die test maakt bovendien meteen duidelijk of het tweede risico aanwezig is, namelijk dat de pc in UEFImodus helemaal niet wil booten. Vooral pc’s die zijn uitgebracht vóór het verschijnen van Windows 8.1 hebben daar soms problemen mee.
RANDVOORWAARDEN
Om ervoor te zorgen dat het omzetten lukt, moet aan bepaalde voorwaarden zijn voldaan. Controleren of dat het geval is, is echter niet makkelijk. Als je echt zeker weet dat je de back-up van je Windows-installatie in geval van nood terug kunt zetten, kun je ook gewoon meteen verder lezen vanaf de tussenkop ‘Het omzetten’. Een alternatief is de in het begin genoemde methode via c’t-WIMage. Wil je liever eerst alles controleren? Dan doe je dat als volgt.
Om te beginnen controleer je de partitionering. Het opslagmedium moet op dit moment een MBR-partitionering hebben en er moet nog minstens 16 kB plus 2 sectoren ruimte ongebruikt zijn. De tool kan die ruimte niet zelf vrij maken. Daar belandt later de GPT (GUID-partitietabel) op. Als het partitioneren is gedaan door het installatieprogramma van Windows of met het ingebouwde Schijfbeheer [4] of Diskpart [5], dan zijn normaliter 1024 kB vrij op de eerste partitie, wat meer dan genoeg is.
Als je de hoeveelheid ongebruikte ruimte nauwkeurig wilt nagaan, dan heb je de sectorgrootte nodig. Die vind je met het commando fsutil fsinfo sectorinfo c:. Normaliter is dat 512 bytes en heb je dus 16 kB plus twee maal 512 bytes nodig – oftewel 17 kB. Wat er nog echt aan ongebruikte ruimte is vóór de eerste partitie kun je controleren met DiskPart. Kies in diskpart eerst de schijf met list disk en select disk 0 (bij meerdere schijven moet je het juiste nummer kiezen) en laat de partities daarvan zien met list partition. De in KB, MB of GB aangegeven ‘offset’ bij elke partitie geeft het startpunt aan. Alles voor de offset van de eerste partitie is ongebruikt.
Overigens wordt er ook een kopie van de GPT bewaard aan het einde van het station, maar de ruimte die daarvoor nodig is (16 kB plus 1 sector) haalt de tool automatisch van de laatste partitie af.
Er zijn nog enkele voorwaarden bij het gebruik van MBR2GPT.exe gedefinieerd door Microsoft wat betreft de partitionering. Er mogen hooguit drie primaire partities aanwezig zijn en er mag geen uitgebreide partitie zijn. Voor elk station dat aan een stationsletter is gekoppeld moet een volume-ID zijn op te vragen (dat kun je testen met fsutil volume list). De volume-ID in Windows is wat het Linux-programma lsblk benoemt als PARTUUID.
Aan twee andere voorwaarden is automatisch voldaan als Windows klassiek boot van een MBR-schijf: de bootpartitie moet actief zijn en in het Windows-bootmenu (om precies te zijn in de BCD-store) moet een
Krijg je de melding ‘Validation completed succesfully’ in plaats van opmerkingen, dan betekent dat niet dat het omzetten gegarandeerd gaat lukken
standaard-besturingssysteem-item verwijzen naar de Windows-installatie.
Tot slot werkt de conversietool alleen als de partitie waarop Windows is geïnstalleerd zich op dezelfde schijf bevindt als de partitie met de bootloader (dat is anders niet noodzakelijk). De bootloader bevindt zich normaliter op een aparte partitie met de naam ‘system-reserved’, die in Verkenner niet zichtbaar is omdat hij geen stationsletter heeft. Als een pc een enkele harde schijf of ssd heeft, is aan die voorwaarde sowieso voldaan. Details over partitionering van Windows staan in [7].
Een speciaal geval is de recente Windows 10-versie 1903 (‘Mei 2019 update’), want die heeft een bug die niet in eerdere versies aanwezig was: het omzetten lukt daarbij niet helemaal. Windows boot wel via UEFI, maar de herstelomgeving Windows RE wordt niet meer goed in de bootmanager gekoppeld. Microsofts ‘Windows as a Service’ ontpopt zich hier weer tot ‘Windows as a Problem’. Maar er is een oplossing: deactiveer RE voor het omzetten en schakel het naderhand weer in. Hoe je dat doet, lees je verderop bij het omzetten.
HET OMZETTEN
Controleer om te beginnen of MBR2GPT.exe op jouw systeem iets te klagen heeft. Dat doe je met de volgende opdracht (de optie /allowfullos kun je weglaten als je dit vanuit Windows PE doet): mbr2gpt /validate /allowfullos
Let op bij het interpreteren van de uitvoer. Krijg je de melding ‘Validation completed succesfully’ in plaats van opmerkingen, dan betekent dat niet dat het omzetten gegarandeerd gaat lukken. Maar als er wel problemen gevonden worden, zal het omzetten zeker mislukken. De melding die je krijgt op de opdrachtpromt is dus niet meer dan een eerste indicatie.
Als je het resultaat van de controle beter wilt (kunnen) lezen, maakt MBR2GPT.exe logbestanden aan die standaard in de map %windir% terechtkomen. De bestandsnamen zijn diagerr.xml, diagwrn.xml, setupact.log en setuperr.log. Je moet de twee laatste bestanden niet verwarren met de gelijknamige bestanden in %windir%\Panther. Het pad voor de logbestanden kun je zelf opgeven met de optie /logs:.
Als je Windows 10 versie 1903 gebruikt, deactiveer je nu Windows RE. De opdracht daarvoor is reagentc /disable. Heractiveren doe je nadat Windows succesvol met UEFI geboot is.
De opdracht voor het omzetten is vrij eenvoudig. Je converteert de systeemschijf met de volgende opdracht (bij Windows 1903 negeer je de meldingen maar over het RE-probleem): mbr2gpt /convert /allowfullos
Als optie kun je eventueel /disk:1 opgeven als schijf 1 in plaats van schijf 0 moet worden omgezet. De nummers zijn hetzelfde als je ziet bij de uitvoer van het commando list disk.
Als de opdracht met succes is voltooid, moet je Windows afsluiten. Schakel vervolgens bij de BIOS-instellingen om van klassiek booten naar UEFI. Dat werkt helaas bij elke pc anders [1]. Daarna kun je Windows weer starten, maar ditmaal wordt de nieuwe bootmodus gebruikt. Pas als dat gebeurd is, schakel
je bij Windows 10 versie 1903 de herstelomgeving RE weer in met reagentc /enable.
VOOR HYPER-V
De beschreven werkwijze functioneert in principe ook bij virtuele machines, maar bij Microsofts Hyper-V zijn extra handelingen nodig. Daar moet je namelijk bij het maken van een virtuele machine al opgeven hoe die moet booten en is achteraf wijzigen niet de bedoeling. Het kan desondanks wel, als je het bestand met de virtuele schijf opneemt in een nieuwe virtuele machine die identiek is op de bootmodus na. De bootmodus hangt af van de ‘generatie’: virtuele machines van generatie 1 booten op de klassieke manier, bij generatie 2 booten ze via UEFI.
Start de virtuele machine die je wilt omzetten. Laat vervolgens MBR2GPT.exe en bij versie 1903 reagentc hun werk doen. Schakel de virtuele machine uit. Verwijder dan de eventueel aanwezige controlepunten van de virtuele machine in Hyper-V-Manager (dat duurt een tijd en kun je in Verkenner volgen in de map ‘Virtual Hard Disks’ van de virtuele machine). Als de virtuele harde schijf is bewaard in het oudere VHDformaat, gebruik je de wizard voor het bewerken van het opslagmedium bewerken in Hyper-V om dat om te zetten naar het nieuwe VHDX-formaat. Virtuele machines generatie 2 accepteren het oude VHD-formaat namelijk niet. Maak dan een virtuele machine generatie 2 en koppel daar het geconverteerde schijfbestand als station aan. De virtuele Windows-installatie zal dan booten in UEFI-modus. Als dat nodig is, kun je zoals hierboven beschreven Windows RE weer activeren. Het omzetten is dan gereed.