EDIT: Pourrais-tu modifier légèrement le titre de ce fil en le remplaçant par :
Le démarrage d’un PC du POST jusqu’au menu GRUB (inclus).
Merci.
==========
En fait, il ne s’agit pas de bits mais de Bytes (un Byte = 8 bits => un octet).
B => byte
b => bits
==========
NOTE: Tout d’abord, je tiens à préciser que …
dans ce qui suit, “GRUB” = “GRUB version 2”.
les valeurs indiquées sous la forme XXh sont des valeurs en base hexadécimale.
le MBR cité dans ce post est du type mdsos non GPT (pour GPT, c’est tout une autre histoire…dépendant de l’UEFI)
==========
La lecture des 512 premier octets (qu’on appelle aussi MBR) du premier périphérique de mémoire de masse ne représente pas la première phase (stage 1) du chargeur de boot GRUB.
==========
Après l’exécution de la phase du POST, le BIOS (enfin le programme inscrit dans le BIOS) poursuit l’exécution de ses instructions par son programme de chargeur d’amorçage (bootstrap loader).
Au cours de la phase du POST, le programme du BIOS a déjà listé tous les périphériques de type “mémoire de masse” (disque, disquette, clef USB, carte SD, cdrom etc…) auxquels il pourrait avoir accès.
Il va maintenant essayer de “passer la main” (chain loading) aux programmes suceptibles d’être inscrits dans ces mémoires de masses.
Pour cela, le “bootstrap loader” du BIOS va d’abord lire le premier secteur du premier périphérique de type “mémoire de masse”, afin de savoir s’il s’agit d’un “secteur d’amorçage”.
Si ce premier secteur est marqué par le “nombre magique” (AA55h à l’offset 1FEh => 2 dernier octets du secteur) il va en déduire qu’il s’agit certainement d’un secteur d’amorçage, et il va copier les instruction contenues dans le “bootstrap code area” de ce MBR en mémoire (0000h:7C00h) afin de pour pouvoir lancer l’exécution des instructions (chain loader) de ce “bootstrap code”.
Ces instructions avaient été inscrites dans le MBR par le programme d’installation de GRUB “grub-setup” (voir aussi “man grub-install”), en utilisant le fichier “/boot/grub/boot/img”.
C’est seulement l’exécution de ces instructions (extraites du premier secteur) qui corresponds effectivement à la phase 1 de l’exécution du programme de chargeur de boot GRUB.
Pas si vite, si “Stage 1” peut effectivement lancer directement “Stage 2”, il doit d’abord “passer la main” (chain loader) à “stage 1.5”.
Les instructions à exécuter pour ce “stage 1.5” sont inscrites dans les 30kB qui suivent le MBR, et avant le début de la première partition.
L’exécution de “Stage 1.5” a pour finalité de charger en mémoire les pilotes qui vont permettre à GRUB d’accéder aux différents systèmes de fichiers du support.
Une fois que “Stage 1.5” a finit de charger les pilotes pour les systèmes de fichiers, il peut “passer la main” à “stage 2”.
“stage 2” ayant accès au fichier “/boot/grub/grub.cfg”, il peut maintenant afficher le menu de démarrage qui permettra à l’utilisateur de choisir le système d’exploitation à démarrer.
Si tu y arrive, tu nous expliquera comment tu as fait.
=========================================
Liens:
POST (Power-On_Self-Test)
Chain loading
GNU GRUB
MBR (Master Boot Record)
GPT (GUID Partition Table)
UEFI (Unified Extensible Firmware Interface)