Simple Operating System - Chargement du noyau
Chargement du noyau par Grub
Présentation de Grub
Grub est un Multiboot Loader tout comme LILO c'est à dire qu'il s'occupe de charger le noyau en mémoire (ce que fait le Boot Sector) et même proposer un choix de noyaux sur lesquels il est possible de démarrer. Voici les avantages de Grub face à LILO :
- Il est capable de prendre en charge différents formats de fichiers binaires (noyau linux, Executable and Linkable Format, compressés,...)
- Il prend en charge différents systèmes de fichiers (ext2/3, FAT, Flash File System,...). En effet, Grub est capable de charger un noyau à n'importe quel endroit du système de fichier dynamiquement contrairement à LILO, qui enregistre les secteurs du disque lui permettant de charger le noyau, c'est pourquoi vous devez enregistrer les modifications du fichier de configuration de LILO (lilo.conf) par la commande LILO.
- Enfin Grub peut piloter des cartes réseaux afin de récupérer le noyau à partir du réseau.
Il peut être installé dans le MBR, dans le Boot Sector ou encore sur une disquette.
Chargement
Grub est composé de 2 parties principales qui vont être chargées en mémoire :
- Stage 1 qui est l'équivalent d'un Boot Sector (512 octets avec flag de fin 0xAA55)
- Stage 1.5 ou 2 qui est plus gros que le précédent puisque il est capable de gèrer les systèmes de fichiers, les différents formats de fichiers, piloter des cartes réseaux.
Voici les étapes du chargement :
- Le BIOS recherche un Boot Sector (sur disquette) ou un MBR (sur disque) afin de le charger en mémoire, le stage 1 qui y est installé est donc placé en mémoire.
- On saute à la première instruction du stage 1, qui contient (en dur) l'emplacement de récupération du stage 2 (lecteur disquette, secteurs d'un disque) et charge ce dernier en mémoire. Cet emplacement est enregistré au moment de l'installation de Grub.
- On saute à la première instruction du stage 2 qui exécute le menu de démarrage, nous laissant ainsi la possibilité de démarrer à partir d'un noyau placé sur notre système de fichier ou sur un périphérique amovible.
- Le choix du noyau à charger est fait, le stage 2 charge le noyau en mémoire en utilisant les fonctions du BIOS.
- Enfin Grub fait un saut à l'adresse de l'insruction sos_main.