F.2. Examen détaillé du processus de démarrage
Le début du processus de démarrage varie en fonction de la plate-forme matérielle utilisée. Toutefois, une fois le noyau trouvé et chargé par le chargeur de démarrage, le processus de démarrage par défaut est identique pour toutes les architectures. Ce chapitre se concentre principalement sur l'architecture x86.
F.2.1. Interface du firmware
F.2.1.1. Systèmes x86 basés sur BIOS
Le Basic Input/Output System (BIOS) est une interface de micrologiciel qui contrôle non seulement la première étape du processus de démarrage, mais fournit aussi le plus bas niveau d'interface pour les périphériques. Sur les systèmes x86 équipés d'un BIOS, le programme est écrit en lecture-seule dans la mémoire morte et peut ainsi être utilisé à tout moment. Lorsque le système est démarré, le processeur cherche le programme BIOS à la fin de la mémoire système et l'exécute.
Une fois chargé, le BIOS teste le système, recherche et vérifie les périphériques et trouve ensuite un périphérique valide qui sera utilisé pour amorcer le système. Normalement, il vérifie d'abord les lecteurs optiques et les périphériques de stockage USB présents afin de trouver un support amorçable ; s'il n'en trouve aucun, il cherchera alors sur les disques durs du système. Dans la plupart des cas, l'ordre des disques recherchés lors du démarrage peut être contrôlé par un paramètre du BIOS ; il cherche sur le périphérique IDE maître sur le bus IDE principal ou sur un périphérique SATA possédant un marqueur d'amorçage. Le BIOS charge ensuite en mémoire tout programme résidant sur le premier secteur de ce périphérique, appelé secteur de démarrage principal ou MBR(de l'anglais Master Boot Record). Le MBR a une taille de 512 octets seulement et contient des instructions de codes machine, appelées chargeur de démarrage (ou chargeur d'amorçage), qui sont nécessaires pour démarrer l'ordinateur ainsi que la table des partitions. Une fois que le BIOS trouve et charge en mémoire le programme du chargeur de démarrage, il lui cède le contrôle du processus de démarrage.
La première étape du chargeur de démarrage est un petit binaire de code machine sur le MBR. Son seul et unique rôle est de localiser le chargeur de démarrage de la deuxième étape (GRUB) et d'en charger la première partie en mémoire.
F.2.1.2. Systèmes x86 basés sur UEFI
Tout comme le BIOS, l'interface UEFI (de l'anglais, « Unified Extensible Firmware Interface ») est conçue pour contrôler le processus de démarrage (via les boot services) et de fournir une interface entre le firmware du système et un le système d'exploitation (via les runtime services). Contrairement au BIOS, UEFI possède sa propre architecture, indépendamment du processeur, ainsi que ses propres pilotes de périphériques. UEFI peut monter des partitions et lire certains systèmes de fichiers.
Lorsqu'un ordinateur x86 équippé avec UEFI démarre, l'interface recherche dans le stockage du système une partition étiquetée avec un GUID (un identifiant global unique, de l'anglais « globally unique identifier ») qui la marque en tant que partition ESP (de l'anglais, « EFI System Partition »). Cette partition contient des applications compilées pour l'architecture EFI, qui pourrait inclure des chargeurs de démarrage pour des systèmes d'exploitations et des logiciels d'utilitaires. Les systèmes UEFI incluent un gestionnaire de démarrage EFI (de l'anglais, « EFI boot manager ») pouvant démarrer le système à partir d'une configuration par défaut, ou inviter un utilisateur à choisir un système d'exploitation à démarrer. Lorsqu'un chargeur de démarrage est sélectionné, manuellement ou automatiquement, UEFI le lira dans la mémoire et lui offrira le contrôle du processus de démarrage.