Translation(s): English - Français

Introduction

GRUB2 est un chargeur de démarrage et celui utilisé par Debian. Un chargeur de démarrage peut être considéré comme un mini système d'exploitation utilisé pour lancer un noyau de système d'exploitation. GRUB2 peut également passer le contrôle à un autre chargeur de démarrage. C'est ce qu'on appelle le « chargement en chaine » et est souvent nécessaire pour les machines à double démarrage.

GRUB2 est généralement installé lors de l'installation de Debian elle-même. S'il est correctement installé, GRUB2 sera automatiquement détecté par l'UEFI de l'ordinateur lors du démarrage (ou par le BIOS, pour les ordinateurs plus anciens). Si plusieurs chargeurs de démarrage existent sur le même ordinateur, comme avec une machine à double démarrage, l'utilisateur devra entrer dans l'UEFI ou le BIOS de son ordinateur pour définir l'ordre de priorité des chargeurs de démarrage présents, car l'ordinateur n'exécutera qu'un seul chargeur de démarrage après une mise sous tension réussie lors de l'autotest (POST). (il faudra peut-être également désactiver l'option Secure Boot dans UEFI pour empêcher le lancement de GRUB2.)

REMARQUE : GRUB2 est souvent appelé simplement GRUB. GRUB2 est une réécriture d'une version antérieure de GRUB, toujours utilisée mais principalement sur des ordinateurs plus anciens, et désormais appelée GRUB Legacy. GRUB2 sera normalement recherché pour être utilisé pour une machine avec UEFI. Il peut également fonctionner avec des machines plus anciennes dotées du BIOS, mais GRUB Legacy peut aussi être trouvé sur celles-ci.

Aperçu des fonctionnalités

GRUB2 prend en charge plusieurs systèmes d'exploitation sur le même ordinateur et peut même être configuré pour présenter à l'utilisateur un menu de noyaux parmi lesquels choisir. D'autres fois, il est configuré pour simplement charger silencieusement un noyau particulier. GRUB2 propose de nombreuses options pour configurer l'apparence du menu et le comportement des entrées du menu lorsqu'elles sont choisies.

Configurer les couleurs du menu

Depuis Debian Wheezy, il n'y a plus de support pour modifier facilement les couleurs du menu graphique. /etc/default/grub n'a aucune variable qui puisse les configurer.

La façon la plus simple pour cela est de créer un nouveau fichier /boot/grub/custom.cfg et d'y ajouter votre configuration.

Exemple :

set color_normal=light-gray/black

Les variables contrôlant les couleurs du menu sont les suivantes :

Si vous configurez /boot/grub/custom.cfg, il n'est pas nécessaire de lancer la commande update-grub ; le fichier sera automatiquement chargé par /boot/grub/grub.conf au démarrage.

Configurer la splashimage

Depuis Bullseye, la splashimage est déterminé d'après l'ordre suivant :

Donc, mettre le fichier image de votre choix dans /boot/grub/ est la méthode la plus simple.

Si vous devez utiliser grub2-splashimages, faites ce qui suit.

aptitude install grub2-splashimages

Exemple :

GRUB_BACKGROUND="/usr/share/images/grub/Lake_mapourika_NZ.tga"

Voir aussi Grub/SplashImage (en anglais), GrubEFIReinstall (en anglais)

Configurer un répertoire /boot chiffré

Grub 2.02~beta2-29 prend en charge la lecture d'une partition /boot chiffrée.

En supposant que vous ayez déjà un système chiffré tel que configuré par l'installateur Debian :

  1. ajoutez GRUB_ENABLE_CRYPTODISK=y à /etc/default/grub

  2. faites une sauvegarde du contenu de votre partition /boot

  3. créez un container LUKS là où se trouve votre partition /boot et déverrouillez-là

  4. créez un système de fichier ext2 dans votre container LUKS et montez-le comme /boot

  5. restaurez la sauvegarde de votre partition /boot dans votre nouveau /boot chiffré

  6. exécutez les commandes grub-install et update-grub

Configuration / choix d’un noyau autre que celui par défaut ou plus ancien pour l’amorçage

Définissez GRUB_DEFAULT dans /etc/default/grub à une valeur autre que 0. Une bonne description se trouve dans les documents officiels Grub avec des exemples à l'adresse GRUB # Simple-configuration. Si SUBMENU n'est pas désactivé, utilisez le caractère '>' comme une touche d'entrée, par exemple, si vous voulez choisir la seconde entrée du menu (premier écran) et la troisième entrée du noyau dans le sous-menu (second écran), utilisez GRUB_DEFAULT="1>2". Rappelez-vous que les entrées dans grub2 commencent avec le compteur à 0.

Si vous avez modifié le fichier de configuration grub /etc/default/grub, assurez-vous d’exécuter update-grub pour mettre à jour sa configuration.

Démarrage UEFI vs BIOS

GRUB prend en charge le démarrage des systèmes x86 via la méthode BIOS traditionnelle (alias « Legacy » ou « CSM »), ou plus moderne UEFI (en anglais). La façon dont ils démarrent est assez différente, mais dans la plupart des cas, le résultat final devrait être pratiquement invisible pour l'utilisateur. Voici une comparaison de la façon dont chacun fonctionne.

Avec le BIOS

Le premier secteur est important - c'est ainsi que les PC démarrent. Le firmware est très stupide - il charge simplement le premier secteur et exécute directement le code à partir de celui-ci. Voir Master boot record pour plus d'informations sur la mise en page exacte.

Il n'y a pas beaucoup d'espace dans le premier secteur, juste assez pour la table de partition et un tout petit espace amorçable. Ce dernier en sait juste assez pour pouvoir localiser et charger le chargeur de deuxième niveau (alias GRUB core).

Le chargeur de deuxième niveau s'insère dans l'espace entre le premier secteur et la première partition. Sur la plupart des systèmes modernes, la première partition commencera à 1 Mio sur le disque, il y a donc un peu moins de 1 Mio d'espace pour le noyau GRUB. C'est beaucoup plus d'espace que le secteur de démarrage, mais c'est encore assez limité. Il intègre les principaux éléments du code GRUB : généralement des éléments clés comme le code pour lire différents stockages systèmes, partitionnements et systèmes de fichiers. Il dispose également d'un chargeur de module.

Les systèmes plus anciens qui ont un espace de partition plus petit ici deviennent de plus en plus difficiles à prendre en charge dans GRUB - l'espace devient de plus en plus restreint à mesure que le code de base se développe et que de nouvelles fonctionnalités sont ajoutées.

Le noyau localisera le répertoire /boot/grub comme indiqué par sa configuration, puis chargera potentiellement toutes sortes de fonctionnalités GRUB supplémentaires à partir des modules qu'il contient.

Finalement, GRUB chargera un noyau et initramfs et démarrera le noyau.

Avec UEFI

Dans UEFI, le firmware est beaucoup plus intelligent. Au lieu de simplement charger un secteur brut à partir du disque et d'exécuter du code directement à partir de celui-ci, le micrologiciel inclut une prise en charge (limitée) du stockage et des systèmes de fichiers. Cela permet de nombreuses autres options utiles au démarrage.

En définissant les variables de démarrage UEFI, le micrologiciel peut être configuré avec une liste de différents programmes UEFI pour tenter de charger et de démarrer. S'il ne trouve rien dans les emplacements de démarrage configurés, le micrologiciel reviendra à un emplacement codé en dur : le dénommé chemin de support amovible.

Pour plus de sécurité, le micrologiciel peut également être configuré pour autoriser uniquement l'exécution de programmes EFI signés avec des clés connues du micrologiciel (alias SecureBoot (en anglais)).

Pour GRUB, UEFI supprime bon nombre des anciennes limitations du BIOS. Il n'y a pas besoin de chargeurs comme GRUB. Au lieu de cela, le micrologiciel charge et exécute GRUB en tant que programme UEFI standard (généralement "grubx64.efi" sur une plateforme PC 64 bits).

La façon par défaut de configurer GRUB pour UEFI consiste à installer le noyau GRUB ici. Tout comme dans le cas de l'amorçage avec le BIOS, il peut alors trouver /boot/grub et charger des modules pour des fonctionnalités supplémentaires.

Dans le cas SecureBoot, cependant, le binaire GRUB EFI est différent. Comme GRUB n'inclut pas (encore !) de support pour les modules signés, il ne peut pas vérifier les modules qui pourraient être chargés ultérieurement. Donc, dans ce cas, le chargeur de module est désactivé. Tous les modules qui pourraient être nécessaires sont plutôt intégrés à un binaire monolithique plus grand qui peut être signé. Au moment de l'exécution, ce seul binaire est tout ce qui s'exécutera.

GRUB2 et RAID logiciel

Debian peut être installé sur un RAID logiciel (avec mdadm, ZFS ou Btrfs), généralement pour éviter la perte de données en cas de panne d'un disque. Dans un tel cas, GRUB2 doit déjà être présent sur le(s) disque(s) restant de la matrice RAID, y compris les éventuels disques de rechange, afin que l'ordinateur puisse toujours démarrer.

En mode BIOS

Le stub GRUB2 doit être installé sur tous les disques de la matrice RAID. Exécutez simplement dpkg-reconfigure grub-pc, puis validez les réponses par défaut à l'exception de la dernière question, où vous devez sélectionner chaque disque de la matrice RAID dans l'ordre.

En mode UEFI

L'ESP (EFI System Partition) et son contenu doivent être présents sur tous les disques de la matrice RAID. Cette fonctionnalité n'est pas offerte par les paquet Debian (voir bug 925591) mais par les GRUB2 hooks sont un moyen d’atteindre le même objectif.