Master boot record

In de architectuur van de IBM PC is het master boot record (MBR) de bootsector, dat is de allereerste sector van een harde schijf of een ander digitaal opslagmedium waarmee een pc opgestart kan worden, zoals een Live-USB. Er staat een reeks opdrachten in die nodig is om het besturingssysteem te laden (booten).

De bootstrappingfirmware in het ROM BIOS laadt en voert het master boot record uit. Het MBR van een schijf bevat normaliter de partitietabel, die de PC dan gebruikt om het bootrecord op de partitie die gemarkeerd is met de active flag te laden en uit te voeren. Door dit ontwerp kan het BIOS elk besturingssysteem laden zonder dat het specifiek hoeft te weten waar het moet zoeken op een partitie.

Doordat het MBR vrijwel direct na het opstarten wordt ingelezen, hebben veel computervirussen zich in het tijdperk voor de virusscanner makkelijk kunnen verspreiden door de MBR-code te wijzigen.

Opstartprocedure

bewerken

Tijdens de opstartprocedure maakt het voor het BIOS eigenlijk geen verschil of er van diskette of van harde schijf wordt gestart.

Vanaf diskette

bewerken

De oudste pc's hebben geen harde schijf, alleen diskettes. De opstartprocedure is simpel: Het BIOS leest de eerste sector van een diskette (de bootsector) naar locatie 0000:7C00 en voert de daarin staande instructies uit. Die instructies zorgen dan voor het verdere opstarten.

Om zeker te weten dat er een uitvoerbaar programma in de eerste sector staat, staat aan het einde van de sector de magische waarde 55 AA. Is een diskette met willekeurige gegevens gevuld, dan zou het wel erg toevallig zijn als er 55 AA aan het einde van de eerste sector stond. Staat er een andere waarde, dan ziet het BIOS dat het geen uitvoerbaar programma betreft.

Op diskettes waar op geen besturingssysteem staat bevat de bootsector meestal wel een kort programma met een mededeling dat de diskette geen besturingssysteem bevat en dat deze vervangen moet worden met een opstartdiskette.

Vanaf harde schijf

bewerken

Opstarten van een harde schijf gaat net zo, althans wat het BIOS betreft. Het BIOS leest de eerste sector van de schijf, het MBR, naar locatie 0000:7C00 en voert de daarin staande instructies uit. Ook nu staat er 55 AA in de laatste twee bytes van de sector. Daarmee is de taak van het BIOS voltooid.

Maar een harde schijf kan gepartitioneerd zijn, en bestaat dan uit een aantal partities die elk geformatteerd zijn als een diskette, inclusief bootsector. In het MBR staan nu geen opstartinstructies maar een doorverwijzing naar een partitie. De instructies in het MBR laden de bootsector van een van de partities naar locatie 0000:7C00 (waardoor dus het eerder geladen MBR wordt overschreven) en voeren de daarin staande instructies uit. Het MBR gedraagt zich dus als een transparant verdeelstation om een van de partities te kiezen.

Lezen van een schijf

bewerken

Men zou uit het bovenstaande kunnen concluderen dat het mogelijk is een diskette te partitioneren, en dat het partitioneren van een harde schijf niet verplicht is. Dat klopt echter alleen voor de opstartprocedure. Is er eenmaal opgestart, dan kunnen de gegevens op de schijven worden gelezen, en nu maakt het BIOS onderscheid tussen een harde schijf en een diskette. Wordt er een harde schijf gelezen, dan houdt het BIOS rekening met de partitionering.

Indeling van het master boot record

bewerken
446 bytes Code Area
64 bytes partitietabel
2 bytes bootsignatuur (0xAA55)
totaal 512 bytes

Voorbeeld van een master boot record

bewerken

Code area. Hier staan het opstartprogramma en (goed leesbaar) een aantal foutmeldingen:

000 33 C0 8E D0 BC 00 7C 8E C0 8E D8 BE 00 7C BF 00
010 06 B9 00 02 FC F3 A4 50 68 1C 06 CB FB B9 04 00
020 BD BE 07 80 7E 00 00 7C 0B 0F 85 10 01 83 C5 10
030 E2 F1 CD 18 88 56 00 55 C6 46 11 05 C6 46 10 00
040 B4 41 BB AA 55 CD 13 5D 72 0F 81 FB 55 AA 75 09
050 F7 C1 01 00 74 03 FE 46 10 66 60 80 7E 10 00 74
060 26 66 68 00 00 00 00 66 FF 76 08 68 00 00 68 00
070 7C 68 01 00 68 10 00 B4 42 8A 56 00 8B F4 CD 13
080 9F 83 C4 10 9E EB 14 B8 01 02 BB 00 7C 8A 56 00
090 8A 76 01 8A 4E 02 8A 6E 03 CD 13 66 61 73 1E FE
0A0 4E 11 0F 85 0C 00 80 7E 00 80 0F 84 8A 00 B2 80
0B0 EB 82 55 32 E4 8A 56 00 CD 13 5D EB 9C 81 3E FE
0C0 7D 55 AA 75 6E FF 76 00 E8 8A 00 0F 85 15 00 B0
0D0 D1 E6 64 E8 7F 00 B0 DF E6 60 E8 78 00 B0 FF E6
0E0 64 E8 71 00 B8 00 BB CD 1A 66 23 C0 75 3B 66 81
0F0 FB 54 43 50 41 75 32 81 F9 02 01 72 2C 66 68 07
100 BB 00 00 66 68 00 02 00 00 66 68 08 00 00 00 66
110 53 66 53 66 55 66 68 00 00 00 00 66 68 00 7C 00
120 00 66 61 68 00 00 07 CD 1A 5A 32 F6 EA 00 7C 00
130 00 CD 18 A0 B7 07 EB 08 A0 B6 07 EB 03 A0 B5 07
140 32 E4 05 00 07 8B F0 AC 3C 00 74 FC BB 07 00 B4
150 0E CD 10 EB F2 2B C9 E4 64 EB 00 24 02 E0 F8 24
160 02 C3 49 6E 76 61 6C 69 64 20 70 61 72 74 69 74 ..Invalid partit
170 69 6F 6E 20 74 61 62 6C 65 00 45 72 72 6F 72 20 ion table.Error
180 6C 6F 61 64 69 6E 67 20 6F 70 65 72 61 74 69 6E loading operatin
190 67 20 73 79 73 74 65 6D 00 4D 69 73 73 69 6E 67 g system.Missing
1A0 20 6F 70 65 72 61 74 69 6E 67 20 73 79 73 74 65  operating syste
1B0 6D 00 00 00 00 62 7A 99 08 AC 08 AC 00 00       m.............

Partitietabel, zie aldaar voor meer uitleg:

1BE 80 01 01 00 07 FE FF FF 3F 00 00 00 37 16 71 02
1CE 00 00 C1 FF 0F FE FF FF 76 16 71 02 6C A9 DE 0B
1DE 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
1EE 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00

Bootsignatuur, hier staat altijd 55AA. Staat dat er niet, dan is de partitietabel ongeldig:

1FE 55 AA

Zie ook

bewerken
bewerken