GRUB : Le chargeur d’amorçage de GNU/Linux — Un guide pratique
En 1999, Gordon Matzigkeit et Yoshinori K. Okuji ont fait de GRUB une partie du projet GNU officiel. À partir de ce moment, le développement a été ouvert aux contributions de programmeurs du monde entier.
La version originale, aujourd'hui appelée GRUB Legacy, avait une base de code complexe et difficile à maintenir. C'est pourquoi GRUB 2 a été entièrement réécrit avec une architecture modulaire. La dernière version de GRUB Legacy était la 0.97, publiée en 2005. Vers 2009, Ubuntu et Fedora ont commencé à installer GRUB 2 par défaut. Selon Wikipédia néerlandophone, GRUB 2 est depuis 2014 le chargeur d'amorçage standard de la plupart des distributions Linux. La version actuelle est la 2.06, publiée en 2021.
Fichier de configuration : grub.cfg
Le fichier de configuration grub.cfg contient la liste des systèmes d'exploitation disponibles, les options du noyau et les menus de démarrage. Les administrateurs système modifient rarement ce fichier directement. Ils utilisent `update-grub`, un stub pour `grub-mkconfig`, qui génère automatiquement le fichier de configuration sur base des noyaux détectés et des paramètres.Étapes : Configurer et mettre à jour GRUB
Étape 1 : Vérifier la version de GRUB
grub-install --versionCela confirme que GRUB 2 est installé et affiche le numéro de version.
Étape 2 : Mettre à jour le fichier de configuration GRUB
sudo update-grubCette commande régénère `grub.cfg` sur base de la configuration système actuelle. Exécutez-la après l'installation d'un nouveau noyau ou la modification des paramètres de démarrage.
Étape 3 : Consulter le fichier de configuration généré
cat /boot/grub/grub.cfg | lessVérifiez que les bons noyaux et systèmes d'exploitation figurent dans le menu.
Étape 4 : Choisir temporairement une autre entrée du menu de démarrage
sudo grub-reboot 2Cela sélectionne la deuxième entrée du menu pour le prochain démarrage, sans modifier définitivement le paramètre par défaut. Utile pour tester de nouveaux noyaux.
Étape 5 : Obtenir des informations sur les périphériques
grub-probe --target=device /bootCela indique quel périphérique contient la partition `/boot`. Essentiel lors de la configuration du chargeur d'amorçage.
Étape 6 : Convertir une configuration SYSLINUX au format GRUB
grub-syslinux2cfg /path/to/syslinux.cfgCela convertit les fichiers de configuration SYSLINUX vers un format que GRUB peut lire. Prend en charge des variantes comme ISOLINUX et PXELINUX.
Étape 7 : Vérifier les arguments de démarrage du noyau
cat /proc/cmdlineCela affiche les arguments de démarrage du noyau transmis par GRUB. On y trouve notamment la partition root et les fonctions de sécurité comme secure boot.
Étape 8 : Vérifier les partitions du disque avec les outils GPT
sudo gdisk -l /dev/sdaCela affiche la table de partitions GPT du disque. GRUB 2 prend en charge MBR et GPT, mais exige sur les disques GPT sans UEFI une petite BIOS Boot Partition.
Vérification
Vérifiez que GRUB fonctionne correctement :grub-install --version && sudo update-grub
Si les deux commandes s'exécutent sans erreur, GRUB est correctement configuré. Redémarrez l'ordinateur pour confirmer que le menu de démarrage apparaît et charge le bon système d'exploitation.
Problèmes fréquents
Problème 1 : GRUB n'affiche pas le menu de démarrage après l'installation d'un nouveau noyau
Solution : Exécutez `sudo update-grub`. Si le menu n'apparaît toujours pas, vérifiez que le noyau est bien installé avec `dpkg --list | grep linux-image` (sur Debian/Ubuntu) ou `rpm -qa | grep kernel` (sur Fedora/RHEL).Problème 2 : GRUB ne trouve pas un disque GPT
Solution : Vérifiez qu'une BIOS Boot Partition est présente. Créez-la avec `gdisk` ou `cgdisk` (code de type `ef02`). Cette partition doit faire au moins 1 MiB et ne nécessite aucun système de fichiers.Problème 3 : GRUB ne démarre pas après une mise à jour
Solution : Démarrez à partir d'un live-CD et réinstallez GRUB :sudo mount /dev/sda1 /mnt
sudo grub-install --root-directory=/mnt /dev/sdaRemplacez `/dev/sda1` par la partition root appropriée et `/dev/sda` par le disque sur lequel GRUB doit être installé.
Outils de gestion de disque
Outre les utilitaires GRUB, il existe des outils qui ont une influence indirecte sur le fonctionnement de GRUB. gdisk, cgdisk et parted sont utilisés pour créer ou modifier des tables de partitions GPT. Ces outils garantissent que le disque est correctement configuré afin que GRUB puisse être installé.GRUB 2 prend en charge MBR et GPT, mais a des exigences spécifiques pour chaque format. Sur les disques GPT sans UEFI, une partition BIOS Boot est requise. Ces outils créent cette partition et gèrent la table de partitions.
GRUB fonctionne également avec d’autres composants système. Le fichier /proc/cmdline contient les arguments de démarrage du noyau transmis par GRUB. Ces arguments déterminent, entre autres, la quantité de mémoire utilisée par le système et quelle partition racine est active.
GRUB sur du matériel spécifique
GRUB ne prend pas uniquement en charge les PC x86 standard. Il existe également une prise en charge pour du matériel spécifique. grub-render-label génère par exemple un fichier `.disk_label` pour les systèmes Apple Mac. Ce fichier est utilisé par macOS pour donner un nom et une apparence personnalisés à un disque dans l’Explorateur.Cette prise en charge démontre que GRUB tient compte des différentes exigences matérielles et des systèmes d’exploitation. Cela rend GRUB utilisable sur une large gamme de systèmes, des serveurs aux ordinateurs de bureau.
GRUB et la sécurité
GRUB joue un rôle dans la sécurité du processus de démarrage. Il prend en charge le secure boot et peut transmettre des arguments de démarrage du noyau qui activent des fonctions de sécurité. Les arguments de démarrage du noyau dans `/proc/cmdline` peuvent indiquer si le secure boot est activé.GRUB est régulièrement mis à jour pour des correctifs de sécurité. Il est donc important de maintenir GRUB à jour. Sur les systèmes Debian/Ubuntu, cela se fait avec :
sudo apt update && sudo apt upgrade grub-pc
Sur les systèmes Fedora/RHEL :
sudo dnf update grub2
GRUB et la virtualisation
GRUB fonctionne également dans des environnements virtualisés. Dans les machines virtuelles, GRUB est installé sur le disque virtuel et fonctionne de la même manière que sur du matériel physique. Cela permet d’utiliser les mêmes outils et commandes pour gérer GRUB dans les machines virtuelles.L’architecture modulaire de GRUB 2 facilite l’ajout de la prise en charge de nouveaux matériels. C’est important dans les environnements de virtualisation où le matériel change constamment.
GRUB et le démarrage réseau
GRUB prend en charge le démarrage réseau via PXE. Cela permet de démarrer un ordinateur depuis un serveur réseau plutôt que depuis un disque local. C’est utile dans les environnements où de nombreux ordinateurs doivent être installés ou configurés en même temps.La variante PXELINUX de SYSLINUX peut être convertie au format GRUB avec `grub-syslinux2cfg`. Cela facilite le transfert de configurations PXE existantes vers GRUB.
GRUB et les systèmes de fichiers
GRUB 2 prend en charge une large gamme de systèmes de fichiers, notamment ext4, Btrfs, XFS et ZFS. Cela signifie que GRUB peut charger des noyaux depuis pratiquement n’importe quel système de fichiers moderne. La prise en charge est constamment étendue avec de nouveaux systèmes de fichiers.Le fichier de configuration `grub.cfg` est stocké dans la partition `/boot`. Cette partition doit être accessible à GRUB. Il est donc important que la partition `/boot` utilise un système de fichiers pris en charge par GRUB.
GRUB et le firmware
GRUB 2 prend en charge les firmwares BIOS et UEFI. Sur les systèmes UEFI, GRUB est installé comme un exécutable EFI. Cela nécessite une partition système EFI (ESP) avec un système de fichiers FAT.L’installation sur les systèmes UEFI diffère de celle sur les systèmes BIOS. La commande `grub-install` détecte automatiquement le type de firmware et installe la version appropriée.
GRUB et les systèmes d’exploitation multiples
Une des fonctions les plus importantes de GRUB est la prise en charge de plusieurs systèmes d’exploitation. GRUB affiche un menu avec tous les systèmes d’exploitation disponibles et permet à l’utilisateur de choisir lequel démarrer.Le fichier de configuration `grub.cfg` contient les éléments de menu pour chaque système d’exploitation. Ceux-ci sont générés automatiquement par `update-grub` sur la base des systèmes d’exploitation détectés.
GRUB et la gestion des noyaux
GRUB joue un rôle central dans la gestion des noyaux. Lorsqu’un nouveau noyau est installé, `update-grub` doit être exécuté pour ajouter le nouveau noyau au menu de démarrage. Cela garantit que le noyau peut être choisi lors du démarrage.La commande `grub-reboot` permet de sélectionner temporairement un autre noyau. C’est pratique pour tester de nouveaux noyaux sans modifier définitivement le paramètre par défaut.
GRUB et la récupération du système
GRUB peut également être utilisé pour la récupération du système. Si le système ne démarre plus, GRUB peut être utilisé pour charger un noyau alternatif ou un mode de récupération. C’est essentiel pour les administrateurs système.Les arguments de démarrage du noyau dans `/proc/cmdline` peuvent être modifiés pour démarrer le système en mode de récupération. Cela peut par exemple être nécessaire si le système de fichiers est endommagé.
GRUB et l’automatisation
GRUB peut être automatisé à l’aide de scripts. Le fichier de configuration `grub.cfg` peut être généré à l’aide de `grub-mkconfig` et de scripts personnalisés. Cela permet d’adapter le menu de démarrage à des exigences spécifiques.Les administrateurs système peuvent créer des scripts qui exécutent automatiquement `update-grub` après l’installation d’un nouveau noyau. Cela garantit que le menu de démarrage est toujours à jour.
GRUB et la documentation
GRUB est largement documenté. La documentation officielle contient des informations détaillées sur toutes les options et commandes. En outre, de nombreux tutoriels et manuels sont disponibles pour des cas d’utilisation spécifiques.La Wikipédia néerlandophone contient un article détaillé sur GRUB avec des informations sur l’histoire, les versions et les fonctionnalités. Cet article constitue un bon point de départ pour une étude plus approfondie.
Le développement de GRUB reste actif, avec des mises à jour régulières pour les correctifs de sécurité et la prise en charge de nouveau matériel. Son architecture modulaire facilite l’ajout de nouvelles fonctionnalités et l’amélioration de celles qui existent déjà, ce qui maintient GRUB pertinent dans un paysage technologique en constante évolution.