Chapitre 2. Un peu de théorie: structure logique d'un disque dur

Le master boot record est le premier secteur du disque dur. Il contient la table des partitions ainsi que le [début du] programme chargé de faire démarrer le ou les systèmes d'exploitation. C'est aussi là que l'on trouvera des virus de boot...

Sa structure est la suivante:

les 446 premiers octets sont constitués de code exécutable (le programme dont nous parlions précédemment);
viennent ensuite quatre groupes de 16 octets chacun, qui constituent la table des partitions;
enfin, les deux derniers octets sont toujours 55h AAh, un magic number que l'on retrouvera en particulier à la fin du secteur de boot des partitions...

Les entrées de la table des partitions ont six champs chacune:

struct partition {
        unsigned char bootable;        /* 0 ou 0x80 */
	hsc début_tsc;
        unsigned char id;              /* type de partition */
        hsc fin_tsc;
        unsigned int secteur_début;
        unsigned int nbre_de_secteurs;
};

Les types de partition (tels que connus par le fdisk 2.11f de Linux):

 0  Vide            1b  Win95 FAT32 cac 64  Novell Netware  bb  Boot Wizard hid
 1  FAT12           1c  Win95 FAT32 cac 65  Novell Netware  c1  DRDOS/sec (FAT-
 2  root XENIX      1e  Win95 FAT16 cac 70  DiskSecure Mult c4  DRDOS/sec (FAT-
 3  util XENIX      24  NEC DOS         75  PC/IX           c6  DRDOS/sec (FAT-
 4  FAT16 <32M      39  Plan 9          80  Old Minix       c7  Syrinx         
 5  Etendue         3c  Reprise Partiti 81  Minix / ancien  da  Non-FS data    
 6  FAT16           40  Venix 80286     82  Echange Linux   db  CP/M / CTOS / .
 7  HPFS/NTFS       41  Amorce PPC PReP 83  Linux           de  Dell Utility   
 8  AIX             42  SFS             84  Lecteur C: cach df  BootIt         
 9  AIX amorçable   4d  QNX4.x          85  Linux étendu    e1  Accès DOS      
 a  Gestionnaire d' 4e  QNX4.x 2ème par 86  Ensemble de vol e3  R/O DOS        
 b  Win95 FAT32     4f  QNX4.x 3ème par 87  Ensemble de vol e4  SpeedStor      
 c  Win95 FAT32 (LB 50  OnTrack DM      8e  Linux LVM       eb  BeOS fs        
 e  Win95 FAT16 (LB 51  OnTrack DM6 Aux 93  Amoeba          ee  EFI GPT        
 f  Win95 Etdue (LB 52  CP/M            94  Amoeba BBT      ef  EFI (FAT-12/16/
10  OPUS            53  OnTrack DM6 Aux 9f  BSD/OS          f1  SpeedStor      
11  FAT12 caché     54  OnTrackDM6      a0  Hibernation Thi f4  SpeedStor      
12  Diagnostics Com 55  EZ-Drive        a5  BSD/386         f2  DOS secondaire 
14  FAT16 caché <32 56  Golden Bow      a6  OpenBSD         fd  Détection auto 
16  FAT16 caché     5c  Priam Edisk     a7  NeXTSTEP        fe  LANstep        
17  HPFS/NTFS caché 61  SpeedStor       b7  BSDI fs         ff  BBT            
18  AST SmartSleep  63  GNU HURD ou Sys b8  Swap BSDI