Realiser un secteur de boot
Qu'est-ce qu'un secteur de boot ?
Un secteur de boot est un programme situe sur le premier secteur d'une unité de stockage ou
d'une partition et qui est charge au démarrage du PC. Le programme de ce secteur a en principe
pour tâche de charger un noyau en mémoire et de l'exécuter. Ce noyau peut être présent au départ
sur une disquette, un disque dur, une bande ou tout autre support magnétique. Ce tutorial détaille
ce qui se passe quand on boote sur disquette mais les principes expliqués ici restent valables pour
tout autre support.
Charger un secteur de boot en memoire
Au demarrage, le PC initialise et teste le processeur et les périphériques. Cette phase est le
"Power On Self Test" (POST).
Ensuite, le PC exécute un programme en ROM, le BIOS, qui va essayer de lire et de charger en
mémoire le premier secteur de boot d'une unité de disque : le "Master Boot Record" (MBR). Si
un MBR est trouvé sur la disquette dans le lecteur, il est charge en mémoire a l'adresse
0000:7C00. Sinon, le BIOS cherche un MBR sur une autre unité de stockage (disque dur, cdrom,
etc.). Une fois que le MBR est chargé en mémoire, le BIOS passe la main au petit programme
qu'il contient.
Le MBR contient un programme mais aussi des données. Parmi celles-ci, il y a la table des
partitions. Cette table contient des informations sur les partitions du disque (où elles
commencent, leur taille, etc.). Un MBR standard cherche sur la table des partitions une partition
active, puis, si une telle partition existe, il charge le secteur de boot de cette partition en
0000:7C00. C'est souvent ce deuxième secteur de boot qui charge le noyau et lui donne la main.
Par exemple, sous Linux, c'est assez complique car il faut souvent charger trois secteur de boot
pour pouvoir démarrer le noyau d'un système d'exploitation (possibilité de multi-boot). Le MBR
est tout d'abord charge au démarrage. Si une partition active est détectée, le secteur de boot de
cette partition est charge puis exécuté (on a donc chargé un deuxième secteur de boot). Ce secteur
contient le programme "LILO" qui, d'une façon interactive, va charger un troisième secteur de
boot lié au système choisi par l'utilisateur. Ce dernier secteur va se charger puis lancer un
noyau.
Un secteur de boot qui affiche un message
ENCADRE
prog01 :
--------
[BITS 16] ; indique a nasm que l'on travaille en 16 bits
[ORG 0x0]
; initialisation des segments en 0x07C0
mov ax,0x07C0
mov ds,ax
mov es,ax
mov ax,0x8000 ; stack en 0xFFFF
mov ss,ax
mov sp, 0xf000