Table de partition d'un disque dur : explications
Requis: Connaissance de la numérotation hexadécimale, binaire.
Le suffixe « h » ou préfixe « 0x » signifie que le nombre est exprimé en hexadécimal.
Souhaitable: Connaissance de l’assembleur 8086 (mode réel).
1. Description générale:
La table de partition ou Master Boot Record en anglais (MBR) désigne le premier secteur accessible d’un disque dur physique.
Elle est toujours située sur le cylindre N°0, secteur N°1 (la
numérotation commence à 1 pour les secteurs) avec la tête de lecture
N°0.
Notons que certains font la différence entre MBR et partition table, ce
qui est effectivement justifié mais je ne souhaite pas entrer dans de
tels détails sémantiques car il y a bien trop de choses à dire par
ailleurs.
La façon d'adresser un disque dur est variable selon le niveau où l'on se place.
A la base, il s'agit de particules magnétisées représentant des 0 ou des 1.
La succession de ces 0 et 1 forment les données binaires que l'on
connaît mais ce n'est pas aussi simple que 0=0 et 1=1 (cf. encodages
RLL et consorts).
Lors du formatage de bas niveau ces valeurs binaires sont découpées en
zones de 512 octets (4096 bits) entre lesquelles se trouvent des bits
permettant le contrôle de la validité des données de chacune de ces
zones (CRC: redondance cyclique). Ces zones sont appelées "secteurs".
Le formatage de haut niveau implante un système de fichiers dont l'une
des caractéristiques est de découper le disque dur en lots de secteurs
appelés unités d'allocation ("clusters").
L’accès à un disque dur au niveau du BIOS se fait non pas en terme de
fichiers ni même en numéro de secteurs (sauf avec certaines extensions
du BIOS) mais en précisant l’endroit où la zone visée (en fait le
secteur de 512 octets) doit être lue ou écrite.
Il convient de désigner sur quelle zone (appelée également secteur) de
quel cylindre et avec quelle tête de lecture l’opération doit être
effectuée. Cet accès est donc de type « géométrique » puisque
l’on fait explicitement référence à une zone physique du disque dur
(bien qu'en fait cela ne reflète pas la réalité de l'emplacement du
secteur en question sur le disque dur).

Total = 512 octets soit un secteur entier
Une table de partition n’est donc pas qu’une table.
Elle contient, outre la table (descripteurs de partitions), un
programme qui est exécuté à chaque démarrage de l’ordinateur (programme
de démarrage) et une signature spéciale (marque de secteur exécutable)
dont nous verrons l’utilité juste ci-dessous.
2. Démarrage d’un ordinateur compatible PC:
Il n’est pas question ici de décrire en détail le démarrage d’un PC
mais simplement de donner les éléments qui concernent la table de
partition.
La partie intéressante se situe dans la manière dont le BIOS sait que
le premier secteur d’un disque donné est exécutable ou pas,
c'est-à-dire s’il contient un programme en langage machine prévu à cet
effet.
En fait, le BIOS ne peut pas en être sûr mais si il
trouve la signature caractéristique d’un secteur exécutable alors il
suppose qu’il l’est. Cette signature appelée « marque de secteur
exécutable » est constituée de deux octets qui terminent le secteur en
question. Ces octets doivent être 55 AA (hexadécimal). Il s’agit bien
évidemment d’une convention que tous les BIOS et tous les systèmes
d’exploitation respectent.
Cette marque est quelquefois appelée également « repère AA55 ».
Ensuite, le contrôle est transféré à ce programme et c’est lui qui est
chargé de trouver la partition active et ensuite de transférer le
contrôle au secteur de démarrage (secteur de boot) correspondant à la
partition en question. Mais nous verrons cela dans le paragraphe 4.