MBR of GPT: Alles over efficiënt partitioneren
Op een schijf installeer je een besturingssysteem en bewaar je data. Dat dient natuurlijk volgens strikte regels te verlopen. Zo moet je 'm eerst partitioneren en daar bestaan meerdere methodes voor, zoals MBR of GPT. We gaan hier in op de verschillen ervan.
Wanneer je in Windows een gloednieuwe schijf stopt, verschijnt die normaal gesproken niet zomaar in Windows Verkenner. Je hebt immers nog geen stationsletter toegekend en bovendien moet de schijf eerst worden geformatteerd. Anders gezegd, je dient de schijf van een bepaald bestandssysteem te voorzien, zoals exfat of ntfs. Zo’n bestandssysteem is weinig meer dan een set regels die het wegschrijven en inlezen van data op het opslagmedium regisseert. Echter, voordat je een schijf kunt formatteren, moet je die eerst partitioneren oftewel opdelen in logische volumes, ook als het je bedoeling is slechts één volume te gebruiken dat de hele schijf overspant.
Er zijn in principe twee partitieschema’s beschikbaar: mbr (master boot record) en gpt (guid partition table). Soms maakt die keuze niet zoveel uit, maar er zijn ook scenario’s waarin je eigenlijk gedwongen bent een bepaalde keuze te maken, wat dan vooral te maken heeft met het feit dat de partitiestructuur ook verband houdt met hoe een pc opstart. Het bootproces en de partitiestijl van een computer zijn dus twee verstrengelde aspecten die daarom ook beide aan bod komen in dit artikel.
Mbr-sector
We vertellen wat meer over mbr, het partitieschema dat al zo’n 35 jaar geleden werd bedacht. Linux kleeft er dan ook het archaïsche label ‘ms-dos’ op, maar toch kan mbr ook vandaag nog enig bestaansrecht claimen (zie de laatste paragraaf ‘De keuze’).
Mbr staat voor master boot record en wie iets van schijfstructuren weet, weet dat dit de eerste fysieke sector op een (opstartbare) schijf is. Het partitieschema is naar deze sector genoemd precies omdat die zo cruciaal is.
Zodra de bootstrapping-firmware uit het rom-bios in het geheugen is ingeladen, past die de uitvoerbare code uit de mbr-sector toe. Deze code controleert vervolgens de hoofdpartitietabel, die zich helemaal op het einde van deze sector bevindt – op de bootsector-handtekening 55AAh na. Deze tabel bevat namelijk de begin- en eindsector van de beschikbare schijfpartities. Een mbr-schijf kan in principe maximaal vier primaire partities bevatten, maar zodra je vanuit het Windows schijfbeheer een vierde partitie toevoegt, maakt Windows van deze partitie automatisch al een ‘uitgebreide partitie’ (extended partition), die zich dan verder laat opdelen in een aantal logische stations.
Tijdens de scan van de partitietabel wordt meteen gecontroleerd welke partitie als ‘actief’ werd gemarkeerd (met de bootsector-indicator 80h): de bootsector van het OS op die partitie handelt dan het verdere bootproces af.
Een uitstekende manier om deze mbr-sector zowel in hexcode als op geïnterpreteerde manier te bestuderen, is met de gratis tool Active@ Disk Editor. Je hoeft hier maar de juiste fysieke schijf te selecteren, linksboven het sjabloon Master Boot Record op te vragen en daar op het knopje met template fields coloring te klikken. De diverse componenten van de partitietabel, waaronder active partition flag, first sector, file system id enzovoort worden dan netjes leesbaar weergegeven.
Eén van de beperkingen van de mbr-partitiestijl is je inmiddels duidelijk geworden: een beperkt aantal (primaire) partities. Voor de doorsnee gebruiker is dat wellicht niet het grootste nadeel. Wellicht belangrijker is dat het aantal sectoren van een partitie in de partitietabel van een mbr-schijf als een 32bits-waarde wordt opgeslagen. Dat levert de volgende rekensom op: 2^32 x 512 bytes (de standaardgrootte van een fysieke sector) is circa 2,2 TB (of zo’n 2 TiB).
Schaf je je dus een schijf met een hogere capaciteit aan, dan wordt die begrensd op maximaal 2,2 TB en de rest van de schijf wordt ijskoud genegeerd. Nu zijn er ook wel schijven met meer dan 512 bytes per sector (zie kader ‘Meer dan 512 bytes per sector’), maar oudere besturingssystemen en heel wat schijftools zijn vast geprogrammeerd (‘hard coded’) om met sectorgroottes van 512 bytes om te gaan, wat tot compatibiliteitsproblemen kan leiden.
Een ander nadeel van een mbr-schijf is dat de mbr-sector zich steevast op de eerste fysieke sector van een opslagmedium bevindt. Raakt deze sector corrupt, dan kan de schijf – evenmin als de opgeslagen data – in zijn geheel niet meer (correct) worden benaderd.
En gpt dan?
Al deze restricties creëerden de noodzaak voor een nieuwe partitiestijl: gpt, wat staat voor guid partition table; guid op zijn beurt staat voor globally unique identifiers. De meeste besturingssystemen van de laatste pakweg acht jaar ondersteunen gpt. Willen Windows of macOS van een gpt-schijf kunnen opstarten, dan kan dat alleen maar in combinatie met (u)efi-firmware (zie paragraaf ‘Uefi’).
Wanneer je een gpt-schijf met een hex-editor bekijkt, dan zul je op de eerste fysieke sector alsnog een structuur herkennen die erg lijkt op die van een mbr-schijf. Dat komt omdat deze sector het zogenoemde protective mbr bevat. Dat is een bewuste strategie: door dit protective mbr zullen besturingssystemen en tools die niet met gpt overweg kunnen, aannemen dat de schijf van één grote, onbekende partitie is voorzien (want filesystem-ID EEh) en daardoor in principe geen verdere, ongewenste manipulaties toelaten.
Je begrijpt meteen wat we bedoelen als je een gpt-schijf met het programma Active@ Disk Editor bekijkt via het sjabloon Master Boot Record. Stel je Active@ Disk Editor in op het sjabloon GUID Partition Table, dan krijg je een goed inzicht in de typische opbouw van het gpt-partitieschema: eerst het Partition type GUID (zoals Microsoft Reserved Partition of Basic Data Partition), gevolgd door het Unique partition GUID.
Windows accepteert standaard tot 128 partities, maar dat is een beperking van het besturingssysteem zelf: het gpt-schema staat een onbeperkt aantal partities toe. De grootte van zo’n partitie is zo goed als onbeperkt: gaan we uit van fysieke sectoren van (slechts) 512 bytes, dan wordt maar liefst 9,4 ZB ondersteund (een zettabyte is 10^21).
Gpt biedt niet alleen een onbeperkt aantal partities van een nagenoeg onbeperkte capaciteit aan, er wordt tevens een kopie van de partitie- en bootdata bewaard. Wanneer de primaire gpt-header corrupt geraakt, wat dankzij uitgebreide cr-checks (cyclic redundancy) snel wordt gedetecteerd, dan kan die op basis van die kopie automatisch worden hersteld.
Gpt en uefi
We hebben het al een paar keer aangegeven: de ontwikkeling van gpt is nauw verweven met uefi oftewel Unified Extensible Firmware Interface. Zeg maar, de opvolger van het oude bios. Intussen is uefi aan versie 2.7A toe (augustus 2017): je vindt alle technische details over deze specificatie in deze lijvige pdf van circa 2500 pagina’s. Hoofdstuk 5 gaat heel specifiek over gpt.
Niet alleen maakt uefi voor de instellingen een prettige, grafische interface mogelijk (in een hoge schermresolutie en met ondersteuning voor aanraakschermen), ook naar veiligheid gaat de nodige aandacht uit, dankzij de ‘secure boot’-functie. Die controleert in een versleutelde database of een driver of app wel van een geldige handtekening is voorzien. Is dat niet het geval, dan weigert het systeem door te starten. Met uefi kunnen tevens firmware en drivers in 32- en zelfs in 64bit-modus opereren, zodat tijdens het opstarten meer geheugen kan worden aangesproken.
Het bootproces van een uefi-bios in combinatie met een gpt-schijf verloopt in een notendop als volgt. Initieel voert het uefi, net als bij het klassieke bios, enkele systeemconfiguratie-functies uit. Vervolgens wordt de guid-partitietabel (gpt) ingelezen, die zich in block 1 op de schijf bevindt, meteen achter block 0 met het protective mbr.
De efi-bootloader identificeert de efi-systeempartitie. Dat is een eenvoudige fat32-partitie (oudere Linux-distributies creëerden hiervoor zelfs nog een fat16-partitie) en bewaart in afzonderlijke mappen de bootloaders van de besturingssystemen die op de andere schijfpartities zijn geïnstalleerd. Voor een x64-besturingssysteem is dat bijvoorbeeld bootx64.efi, daarnaast komen bootia32.efi, bootia64.efi (Itanium), bootarm.efi en bootaa64.efi (ARM) voor. Zo’n bootloader initialiseert vervolgens een bootmanager, die uiteindelijk het eigenlijke besturingssysteem laat opstarten.
De keuze: mbr of gpt?
De belangrijkste kenmerken van beide partitieschema’s zijn inmiddels aan bod gekomen en het is overduidelijk dat gpt met uefi de meest toekomstgerichte oplossing biedt. Zo is Intel bijvoorbeeld voornemens tegen 2020 alleen nog zuivere uefi-systemen aan te bieden, zonder legacy bios-ondersteuning (uefi klasse 3).
Toch kunnen er nog scenario’s zijn waarin je mbr kunt overwegen. Werk je bijvoorbeeld met een ouder besturingssysteem als Windows XP 32 bit, dan heb je gewoon geen keuze: dit besturingssysteem ondersteunt gpt niet, niet als systeempartitie en zelfs niet als datapartitie. Windows XP 64 bit ondersteunt gpt uitsluitend als datapartitie en dus niet voor de systeempartitie.
Alle 64bit-Windows-versies vanaf Vista kunnen wél opstarten vanaf een gpt-systeempartitie, althans met een uefi-bios. Beschik je dus over een oudere pc met een klassiek bios waarop je een 64bit-Windows-versie wilt draaien, dan zit er weinig anders op dan voor mbr te kiezen.