Chargement d'un OS
02/04/2006
 Christian CALECA 
Liste des cours

Cette page expose succintement le mécanisme de chargement. Lisez jusqu'au bout, parce qu'à la fin, il y a une panne classique de chargement, avec sa solution...

Lorsque le BIOS recherche la présence d'un système d'exploitation, il ne sait que charger en mémoire le premier secteur du disque dur (512 octets), vérifier que les deux derniers octets ont pour valeur hexadécimale 55 AA, signe que ce secteur contient quelque chose d'exécutable. Il exécute alors cette chose.

Si, après avoir balayé l'ensemble des unités de mémoire de masse qu'il connaît (voir le paramétrage du BIOS), il n'a trouvé aucun premier secteur se terminant par 55 AA, il affichera son incapacité à charger quoi que ce soit.

Sur un disque dur, ce premier secteur n'est autre que le MBR, qui contient aussi la table des partitions.

Il est parfaitement possible d'utiliser ce MBR pour charger un système d'exploitation. Certains chargeurs comme GRUB ou LILO, beaucoup utilisés dans le monde GNU/Linux, savent le faire. Cependant, il est possible d'agir autrement.

Nous savons que chaque partition dispose d'un premier secteur appelé "Partition Loader". Il est donc possible d'adopter la stratégie suivante : le MBR contient un programme qui se contentera, après avoir repéré dans la table des partitions quelle est celle qui est marquée comme "active", de charger en mémoire le "Partition Loader" de cette partition active, et de l'exécuter.

partitions Reprenons cet exemple :
  1. Le MBR est chargé en mémoire. Il se termine par 55 AA, il est donc exécuté.
  2. L'opération menée est simple :
    1. lecture de la table de partition,
    2. la seconde partition est marquée comme active.
  3. Le programme du MBR charge donc le PL de la seconde partition et lui donne la main.
  4. Le contenu de ce PL a été fait de telle sorte qu'il va charger en mémoire le "kernel" du système d'exploitation et lui donner la main.
  5. Le "kernel" se chargera ensuite de tout le reste du chargement nécessaire pour la construction de l'environnement de travail final.

C'est cette technique qui est employée par Microsoft depuis les origines de MS DOS, et encore maintenant, avec la technologie NT, même s'il y a un "multi boot", dont nous parlerons plus loin.

Lorsque l'on installe un système comme GNU/Linux, le choix de la stratégie est plus grand.

Il faudra installer un "boot loader" comme GRUB ou LILO, mais il sera possible de choisir son emplacement, MBR ou PL de la partition racine du système.

Généralement, lors de l'installation d'une distribution GNU/Linux, il est conseillé de placer le boot loader dans le MBR, ce qui permettra relativement simplement de le charger, de faire un "multi boot", si plusieurs systèmes sont présents sur la même machine.

Rien n'interdit en effet, même sur l'exemple ci-dessus, de placer un FreeDOS dans la seconde partition et un GNU/Linux dans la première. Mais alors se posera le problème de pouvoir choisir son OS au moment du démarrage.

Le boot selon Microsoft

Donc, si l'on suit cette règle, l'on installera LILO ou GRUB (chargeurs possibles pour GNU/Linux), sur le PL qui contient le kernel dudit système. Si c'est la partition active, Linux démarrera.

Oui, mais si l'on a aussi un autre système sur une autre partition ?

Il faudra changer la partition active. Ca nécessite de démarrer un FDISK et de changer la partition active. Pas très pratique...

Pourtant, Windows NT (4, 2000, XP...) savent faire des multi boots, mais uniquement sur des OS Microsoft. Ce n'est pas tout à fait vrai, mais pour faire comprendre au multi boot de Microsoft qu'il peut faire démarrer un système GNU/Linux, ce ne sera vraiment pas facile.

Le boot selon GNU/Linux

C'est simple, on fait ce que l'on veut.

Le chargeur sur le PL

Comme on l'a vu plus haut, GRUB ou LILO (ou un autre), sur le PL de la racine de l'installation. Dans ce cas, il faut que la partition soit active.

S'il y a plusieurs OS sur la même machine, il faudra alors installer dans le MBR un programme capable de donner le choix. Il en existe.

Le chargeur sur le MBR

Il est aussi possible d'installer GRUB ou LILO sur le MBR, ce qui donnera éventuellement un multi boot, parce que l'un comme l'autre savent charger tout type d'OS connu sur PC. GRUB est probablement le plus souple.

Nous ne verrons pas ici comment configurer l'un ou l'autre pour réaliser un multi boot, mais il est tout à fait possible de démarrer aussi bien un GNU/Linux qu'un BSD ou même un Windows, voire un DOS, avec GRUB (ou LILO).

Dans un tel cas, la partition active n'a plus de sens.

La panne...

Alors voilà.

Sur un disque dur, a été un jour installé un OS ne provenant pas de chez Microsoft. Cet OS a installé son chargeur sur le MBR.

Vous voulez maintenant effacer ce disque et y installer un système Microsoft.

Naturellement, vous allez détruire toutes les partitions qui existent, en construire de nouvelles (avec FDISK pour DOS ou avec l'équivalent intégré au processus d'installation d'un Windows NT).

Donc, création de nouvelles partitions, formatage desdites partitions et installation.

Tout se passe bien, sauf qu'au redémarrage, votre machine restera "plantée" sur le Boot.

Pourquoi ?

Tout simplement, parce que Microsoft, dans sa grande suffisance, n'a jamais pensé à ce type de scénario (d'autres systèmes peuvent-ils exister ?) et que le MBR n'est pas restauré dans la configuration voulue par MS, à savoir, utiliser la partition active.

Pas d'affolement dans cette pénible circonstance... (Microsoft y a tout de même pensé, mais sans le crier sur les toits).

Avec FDISK

FDISK propose une fonction non documentée (que l'on ne trouve pas dans l'aide "officielle"). Faites :

FDISK /MBR

Ca restaurera le MBR d'une façon que Microsot aime.

Avec Windows XP

Le CD d'installation propose, en mode restauration du système, un outil équivalent : FIXBOOT.