Zo is de stick opgebouwd
Als je de stappen in dit artikel volgt, krijg je een usb-stick met een opstartmenu. Bij sommige acties vraag je je misschien af waar ze voor nodig zijn. Als je geïnteresseerd bent in de achtergrond, lees dan verder.
TWEE BOOTLOADERS
Om een besturingssysteem op te starten, moet dat een bootloader hebben. In het geval van Windows zijn er zelfs twee, omdat een pc verschillende mechanismen voor het opstarten kan gebruiken: klassiek (legacy BIOS) of via UEFI. Bij het modernere UEFI is vaak een CSM (Compatibility Support Module) geïntegreerd – dat is een keuze van de fabrikant. Als die wordt ingezet, gebruikt de pc klassieke legacy-BIOS-mechanismen voor het opstarten, ondanks UEFI. Dat kan vanwege de veiligheid onwenselijk zijn: een pc kan alleen via UEFI afdwingen dat alleen gesigneerde bootloaders starten – dat heet Secure Boot. Daarom heeft Windows een bootloader voor klassiek booten en een voor het booten via UEFI. Aangezien die laatste ondertekend is, werkt het opstarten ook als Secure Boot actief is.
PARTITIONERING EN BESTANDSSYSTEEM
Helaas is het niet genoeg om twee bootloaders te hebben om een besturingssysteem succesvol te starten. Ook de partitionering en formattering van de gegevensdrager moeten kloppen. Helaas verschillen de eisen afhankelijk van of het een interne gegevensdrager is, dat wil zeggen een ingebouwde ssd of harde schijf, of een externe gegevensdrager zoals een usb-stick.
Laten we het eerst hebben over de interne schijf. Om Windows op de klassieke manier op te starten, moet de schijf worden gepartitioneerd met het MBR-schema en moet de bootloader op de eerste actieve primaire partitie staan. Bij UEFI moet de schijf daarentegen het GPT-schema hebben en moet de bootloader staan op een speciale EFI-systeempartitie (ESP). Bij Windows wordt die meestal geformatteerd met FAT32, omdat FAT-stuurprogramma’s de enige zijn die elke UEFI volgens de specificatie moet integreren (andere zijn toegestaan, maar ongebruikelijk).
Het probleem bij een usb-stick is dat die niet kan voldoen aan de genoemde eisen als deze klassiek en via UEFI moet kunnen opstarten. Dat komt omdat een schijf slechts één partitioneringsschema kan hebben. Je moet dus kiezen tussen MBR en GPT. Daarom zijn de eisen aan usb-stations lager: Windows boot zelfs via UEFI van een stick als die met MBR is gepartitioneerd. Omdat de MBR-indeling geen ESP kent, wordt ook dat niet vereist. Bij het bestandssysteem ligt dat anders: omdat de UEFI-firmware van de pc de bestanden van de bootloader moet kunnen lezen, moeten usb-sticks wel worden geformatteerd met FAT (hier FAT32).
ARCHITECTUUR
Het volgende probleem is de architectuur van setup.exe, het installatieprogramma van Windows. Terwijl de 32-bit setup. exe zowel 32- als 64-bit Windows kan installeren, wil de 64-bit setup.exe alleen 64-bit Windows installeren. Dat klinkt onlogisch, maar het is echt zo. Dan zou je ervoor kunnen kiezen eenvoudigweg altijd de 32-bit setup.exe te gebruiken, maar als een pc met 64-bit UEFI opstart via UEFI, dan start de 32-bit PE niet, waaronder de 32-bit setup.exe draait. Alleen besturingssystemen die dezelfde architectuur hebben als de UEFI-implementatie booten via UEFI. Het gebruik van een 64-bit PE is ook geen oplossing, omdat die geen 32-bit toepassingen kan draaien door het ontbreken van een 32-bit subsysteem [11]. Als je toch setup.exe wilt gebruiken om te installeren vanaf de multiboot-stick, is de enige oplossing om twee boot.wim en twee install. wim op de stick te zetten – elk zowel in 32- als 64-bit varianten. Microsofts oplossing daarvoor: de map sources kan zowel in de hoofdmap staan, als in submappen met de namen x64 en x86 – andere namen werken niet.
Verder is FAT32 zo’n antiek bestandssysteem dat de maximale bestandsgrootte slechts 4 GB bedraagt. In het geval van het duidelijk kleinere c’t-rescuesysteem maakt dat net zo weinig verschil als bij alle andere PE- en RE-varianten, maar als het gaat om de installatie van Windows ziet dat er helaas anders uit. Sinds Windows Vista doet het set-upprogramma in wezen niets anders dan een image naar de interne schijf uitpakken en voorzien van een bootloader. Die image zit in het bestand genaamd install.wim, en de grootte daarvan overschrijdt tegenwoordig snel de 4GB-grens.
FAT32-BEPERKINGEN OMZEILEN
Je moet dus een truc toepassen. Variant 1: je kunt install.wim bijzonder sterk comprimeren (dergelijke bestanden zijn vaak te herkennen aan de in ESD veranderde bestandsextensie). Maar in veel gevallen is dat niet genoeg om de bestandsgrootte te reduceren tot onder de 4GB-limiet.
Variant 2: je kunt install.wim opsplitsen in verschillende bestanden met de naam install.swm, install2.swm, install3. swm enzovoort. Als de map sources echter niet in de root van de stick staat, maar in de submap x64/x86, kan setup.exe niet overweg met SWM-bestanden. Hij vindt wel de eerste en start de installatie. Maar zodra install2.swm nodig is, vraagt setup. exe je om de volgende schijf te plaatsen – een relikwie uit de tijd dat je nog vanaf optische schijven installeerde. We hebben geen manier gevonden om het setupprogramma naar het volgende SWMbestand te leiden.
Daarom wordt variant 3 gebruikt op de stick: het creëren van een NTFS-partitie achter de FAT-32 partitie. Want als het installatieprogramma geen install.wim vindt in de map sources op de opstartpartitie, zal het zoeken naar de map sources met overeenkomstige inhoud op de volgende partities op dezelfde schijf.
De NTFS-partitie vermijdt ook een ander probleem dat Microsoft zelf heeft gecreëerd: Windows houdt er niet van om partities groter dan 32 GB te formatteren met FAT32 (hoewel dat prima werkt met tools van derden). Maar omdat de extra partitie NTFS-geformatteerd is, hoef je geen moeite te doen met aparte tools en kun je toch volledig gebruikmaken van usb-sticks groter dan 32 GB.
Dat boot.wim-bestand bevat het eigenlijke Windowsrescuesysteem. Omdat de submap sources al een bestand bevat met de naam boot.wim, moet je het bestand van het rescuesysteem hernoemen. Ons kanten-klare opstartmenu verwacht noodwin.wim als bestandsnaam. Verplaats het bestand na het hernoemen naar de submap sources.
Kopieer de map ‘Programs’ uit de hoofdmap van de gekoppelde ISO van het Windows-rescuesysteem naar de hoofdmap van Multiboot. Let op: net als bij het bouwen van het rescuesysteem kan het daarbij nodig zijn om uitzonderingen in de virusscanner te definiëren voor de bron- en doelmap.
Kopieer ook het bestand CDUsb.y naar de hoofdmap van Multiboot (het noodsysteem herkent zijn bootdrive aan dat bestand en wijst daar de stationsletter Y aan toe). Daarmee is het 64-bit Windowsrescuesysteem volledig overgezet en kun je de gekoppelde ISO-schijf weer uitwerpen.
Herhaal de procedure met de 32-bit ISO van het rescuesysteem: kopieer boot.wim naar het Multiboot-station, ditmaal in de x86 map, hernoem dat naar noodwin.wim en verplaats het naar de submap sources. Kopieer ook de map Programs naar de hoofdmap. Aangezien er al een is, voegt die bewerking de ontbrekende 32-bit versies van de programma’s toe. In veel gevallen gebruiken de 32- en 64-bit varianten van het rescuesysteem dezelfde programmabestanden, daarom vraagt Verkenner bij het kopiëren na een tijdje wat er moet gebeuren met de bestanden met dezelfde naam. Klik op ‘Deze bestanden overslaan’. Daarna is ook de 32-bit variant van het rescuesysteem op de stick gezet en kun je de schijf uitwerpen.
VULLEN 3: WINDOWS RE
Dan naar Windows RE. De snelste manier is om 7-Zip te gebruiken (te downloaden via de link bij dit artikel). Open het bestand x64\sources\install.esd op het Multidata-station. Blader door naar de submap ‘1\ Windows\System32\Recovery’. Daarin staat onder andere het bestand winre.wim, dat de Windows-herstelomgeving bevat. Pak dat uit naar het Multiboot-station in de map x64\sources.
Open analoog daaraan het bestand x86\sources\ install.esd en pak het bestand ‘1\Windows\System32\ Recovery\winre.wim’ uit naar x86\sources op Multiboot. Sluit 7-Zip weer af, zodat het de usb-stick niet meer in gebruik houdt.
VULLEN 4: BOOTMENU
Als je dan vanaf de stick zou booten, zou je alleen de 32- en 64-bit varianten van Windows-set-up aangeboden krijgen omdat ons opstartmenu nog ontbreekt. Dat zit in het bestand bootmenu.zip dat je hebt gedownload. Selecteer in Verkenner in het contextmenu van dat bestand ‘Alles uitpakken’ en typ de stationsletter van Multiboot als bestemming, gevolgd door een dubbele punt. Het uitpakprogramma van Windows zal vragen of je twee bestaande bestanden wilt vervangen: ja, dat wil je (zie het kader ‘Het bootmenu’ voor details over die twee bestanden).
En dat is eigenlijk alles. Je usb-stick is nu klaar en opstartbaar.
TIPS VOOR BOOTEN
Als een pc Windows kan opstarten, zal alles ook opstarten vanaf de multiboot-stick, omdat een Windows-installatie dezelfde bootloader gebruikt als de usb-stick. Toch kunnen er gevallen zijn waarin het opstarten niet meteen werkt. In dat geval gelden dezelfde tips als voor het opstarten van het Windowsrescuesysteem [9].
Er zijn wel speciale gevallen waar je rekening mee moet houden. Zo zijn er nog steeds pc’s die zo oud zijn dat ze nog niet in staat zijn om 64-bit te werken. Daarbij starten alleen de 32-bit varianten op.
UEFI is ook een speciaal geval: de firmware van het moederbord is ook beschikbaar in 32- en 64-bit versies, en een 64-bit UEFI start alleen 64-bit besturingssystemen op, terwijl een 32-bit UEFI alleen 32-bit besturingssystemen opstart. Aangezien 32- bit UEFI uiterst zeldzaam is, is de keuze voor een 64-bit besturings-/rescue-systeem bij het opstarten via UEFI vrijwel altijd de juiste.
Veel UEFI-pc’s kunnen met behulp vaneen Compatibility Support Module( C SM) ook besturingssystemen opstarten met de andere architectuur. Die bootst het klassieke booten (legacy BIOS) na, en boot vervolgens besturingssystemen met beide architecturen. Maar dat werkt niet altijd: niet elk UEFI heeft een CSM, en in sommige gevallen is die uitgeschakeld. In dat geval mislukt het opstarten vaneen besturingssysteem met de verkeerde architectuur (fout 0xc0000359). In sommige gevallen kun je de CSM in de BIOS-set-up inschakelen, andere pc’s schakelen de CSM zelf gewoon stilzwijgend in wanneer dat nodig is. Dus in geval van problemen is het altijd de moeite waard om het menu-item met het andere aantal bit te proberen – de stick bevat beide.
AANPASSEN
Je kunt de voltooide usb-stick eenvoudig aanpassen. Heb je een andere set installatiegegevens nodig? Vervang eenvoudigweg het bestand boot.wim in de map sources op Multiboot onder x64 of x86 en de corresponderende inhoud van sources op Multidata, en je bent klaar. Dankzij het NTFS-bestandssysteem van Multidata zijn install.wim-bestanden groter dan 4 GB geen probleem. Op dezelfde eenvoudige manier kun je ook nieuwe versies van het Windows-rescuesysteem en Windows RE versies vervangen door simpelweg de bestanden in Verkenner te vervangen. Het opstartmenu werkt nog steeds.
Zelfs het back-uppen van de usb-stick is eenvoudig: kopieer gewoon de volledige inhoud van Multiboot en Multidata met Verkenner ergens heen waar genoeg ruimte is. Als de stick defect of kwijt raakt, pak dan een nieuwe, partitioneer en formatteer hem zoals beschreven en kopieer de geback-upte gegevens terug naar de stick.
Gebruik je c’t-WIMage? Je kunt zelfs dat op dit station gebruiken, en ook vrij eenvoudig. Het enige wat je hoeft te doen is de bestanden ctwimage.bat en vshadow.exe te kopiëren naar het Multidata-station in de map x64 of x86. Afhankelijk van de hoeveelheid gegevens waarvan een back-up moet worden gemaakt, kan het echter nodig zijn om een grotere stick te gebruiken. Het kan de moeite waard zijn om een usbschijf. Let op: wat het set-upprogramma op de schijf installeert, bevindt zich in de map sources in een bestand genaamd install.esd. Nadat je met c’t-WIMage een back-up hebt gemaakt, bevindt het bestand install.wim zich op dezelfde plaats en wordt install.esd genegeerd. Je kunt de inhoud van het ESD-bestand echter exporteren naar het WIM-bestand met DISM (en het ESD-bestand daarna verwijderen) [10]. Dan kun je de stick niet alleen gebruiken om Windows schoon te installeren of te repareren, maar ook om een back-up te maken van werkende installaties en die indien nodig herstellen.
De vrije ruimte op Multiboot en vooral op Multidata kan gewoon gebruikt worden: kopieer gegevens daar naartoe en zet ze over van A naar B. De usb-stick houdt dus ook zijn oorspronkelijke doel, alleen kan hij nu veel meer.