GRUB est un gestionnaire de démarrage et de chargement de système très répandu. Grâce à lui, il est possible d’utiliser différents systèmes d’exploitation sur le même ordinateur. Nous pouvons également démarrer le même système de différentes manières, par exemple Linux en mode graphique, texte ou récupération.
Dans ce tutoriel, nous apprendrons à configurer le menu GRUB et à définir l’entrée par défaut.
Pour cela, je vous donne plusieurs exemples de syntaxes d’entrée GRUB.
Pré-requis – Avant de commencer
Voici ce que vous devez savoir :
- Le fichier à éditer est /etc/grub.d/40_custom. Il est important d’ajouter l’entrée à la fin du fichier
- Vous devez connaître le numéro du disque et l’UUID de votre partition principale, pour cela, utilisez la commande blkid
- Lors de chaque modification de la configuration, vous devez mettre à jour la configuration de GRUB avec la commande grub-update
Vous pouvez aussi consulter ce guide en parallèle pour mieux connaître les directives GRUB :
Ajouter une entrée Linux au démarrage GRUB
Pour pouvoir configurer un démarrage Linux, vous devez connaître le chemin fichier du noyau Linux sur lequel booter.
Il s’agit du fichier vmlinuz.
Si un disque RAM, sous la forme d’un fichier initrd est utilisé, vous devez aussi connaître.
menuentry 'Ubuntu demo' {
insmod part_gpt
set root=(hd1,1)
search --no-floppy --fs-uuid --set 9c41c63d-38ab-48d1-94b1-f61810b3c78d
linux /boot/vmlinuz-6.8.0-31-generic root=UUID=9c41c63d-38ab-48d1-94b1-f61810b3c78d ro quiet
initrd /boot/initrd.img-6.8.0-31-generic
}
Dans cet exemple :
- insmod part_gpt — charge le module pour reconnaître les partitions GPT (GUID Partition Table). Reportez-vous à la fin de cet article pour une liste des modules insmod
- set root=(hd1,1) — initialise la variable root, ici il s’agit de la première partition de disque du disque 2 (sdb). Notez que cette valeur peut être modifiée par la directive
search
. - search –no-floppy –fs-uuid –set=root <UUID> cherche la partition avec l’UUID spécifié et assigne le résultat à la variable root.
- linux /boot/vmlinuz-linux root=UUID=<UUID> ro quiet — utilisez l’UUID pour spécifier la partition racine pour le noyau Linux.
- initrd — Le chemin
Vous devez bien entendu remplacer les UUID de cet par les votre retourné par la commande blkid.
L’entrée search est facultative mais en utilisant des UUID ou des labels, la directive search
rend la configuration GRUB plus robuste face aux changements de matériel (comme l’ajout ou le retrait de disques).
Elle permet d’écrire des configurations GRUB qui fonctionnent indépendamment de l’ordre des disques, ce qui est utile dans les systèmes avec plusieurs disques ou partitions.
Mettez à jour la configuration de GRUB avec la commande suivante :
sudo update-grub
Enfin redémarrez votre PC, la nouvelle entrée doit apparaître dans GRUB :
Ajouter une entrée Ubuntu Terminal
Voici un autre exemple où cette fois-ci, nous ajoutons une entrée de démarrage pour ouvrir un Terminal Ubuntu.
menuentry 'Ubuntu text terminal' --class ubuntu --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux_text_terminal' {
insmod part_gpt
insmod ext2
if [ x$grub_platform = xxen ]; then insmod xzio; insmod lzopio; fi
set root=(hd1,1)
search --no-floppy --fs-uuid --set 9c41c63d-38ab-48d1-94b1-f61810b3c78d
linux /boot/vmlinuz-6.8.0-31-generic root=UUID=9c41c63d-38ab-48d1-94b1-f61810b3c78d systemd.unit=multi-user.target ro
initrd /boot/initrd.img-6.8.0-31-generic
}
Puis on met à jour la configuration de GRUB à l’aide de la commande update-grub.
Au prochain redémarrage, on constate que la nouvelle entrée est bien présente.
Ajouter une entrée Windows au démarrage GRUB
GRUB peut très bien être utilisé pour passer la main à un chargeur de démarrage Windows.
Pour cela, on utilise la directive chainloader pour donner la main à un chargeur de démarrage différent.
Par exemple pour ajouter une entrée Windows en mode UEFI :
menuentry 'Windows 10' --class windows --class os {
insmod ntfs
insmod search_fs_uuid
insmod chain
search --fs-uuid --no-floppy --set=root <UUID>
chainloader (${root})/EFI/Microsoft/Boot/bootmgfw.efi
}
Une autre façon de procéder est de demander à Grub de charger le
menuentry "Windows 10" {
insmod part_msdos
insmod ntfs
set root='(hd0,msdos1)'
chainloader +1
}
C’est la directive chainloader +1
qui fait le travail en passant le contrôle au chargeur de démarrage situé dans le premier secteur de la partition spécifiée par set root
.
Enfin en mode MBR, on peut aussi utiliser la direction ntldr pour charger le chargeur de démarrage bootmgr en indiquant son chemin.
menuentry "Windows 10" --class windows --class os {
insmod part_msdos
insmod ntfs
insmod ntldr
search --no-floppy --set=root --fs-uuid <UUID>
ntldr /bootmgr
}
Autres exemples avec Windows 10, toujours en MBR :
menuentry "Windows 10" {
insmod part_msdos
insmod ntldr
insmod ntfs
ntldr (hd0,msdos1)/bootmgr
}
Autres exemples de Chainloading avec GRUB
Pour charger en chaîne une ISO avec des arguments de ligne de commande du noyau personnalisés ou par défaut, une entrée similaire à la suivante :
menuentry "SYSRESCUECD" {
set iso=/systemrescuecd-x86-3.8.1.iso
loopback loop ${iso}
linux (loop)/isolinux/rescue64 nomodeset vga=791 docache setkmap=fr isoloop=${iso}
initrd (loop)/isolinux/initram.igz
}
Définir l’entrée par défaut de manière statique
Si vous désirez que le PC démarre automatiquement sur une entrée spécifique de GRUB.
Voici comment faire.
- Éditez le fichier /etc/default/grub :
sudo nano /etc/default/grub
- Ensuite, nous allons modifier GRUB_DEFAULT avec le nom de l’entrée par défaut :
GRUB_DEFAULT="gnulinux_text_terminal"
Enfin mettez à jour la configuration GRUB.
sudo update-grub
Afficher le menu GRUB en permanence à chaque démarrage
Vous souhaitez que le menu de grub s’affiche à chaque démarrage du PC ?
Cela est possible, éditez le fichier de configuration /etc/default/grub puis modifiez/ajouter les directives suivantes :
GRUB_TIMEOUT_STYLE=menu
Ensuite définissez le délai avant laquelle GRUB charge l’entrée de démarrage par défaut.
Il est important de ne pas laisser la valeur à 0 sinon le menu va s’afficher très brièvement pour charger l’entrée de démarrage par défaut.
GRUB_TIMEOUT=10
Ensuite, nous devons mettre à jour GRUB.
Pour cacher à nouveau le menu GRUB au démarrage du PC, repassez la valeur de l’option GRUB_TIMEOUT_STYLE en hidden.
Quels sont les modules insmod
La directive insmod
est utilisée pour charger des modules nécessaires au bon fonctionnement de GRUB. Ces modules ajoutent des fonctionnalités spécifiques, comme la prise en charge de systèmes de fichiers, de périphériques, ou d’autres capacités essentielles au processus de démarrage.
Module isnmod | Description |
insmod part_gpt | Charge le module pour reconnaître les partitions GPT (GUID Partition Table). |
insmod part_msdos | Charge le module pour reconnaître les partitions au format MBR (Master Boot Record). |
insmod ext2 | Charge le module pour prendre en charge les systèmes de fichiers ext2, ext3, et ext4 (les systèmes de fichiers couramment utilisés sous Linux). |
insmod fat | Charge le module pour la prise en charge des systèmes de fichiers FAT, FAT16, et FAT32. |
insmod ntfs | Charge le module pour la prise en charge des systèmes de fichiers NTFS (utilisés par Windows). |
insmod lvm | Charge le module pour la prise en charge de LVM (Logical Volume Management), utile si le système est installé sur des volumes logiques. |
insmod luks | Charge le module pour déverrouiller des partitions chiffrées avec LUKS (Linux Unified Key Setup). |
insmod gzio | Charge le module pour gérer la compression gzip, utile si le noyau ou d’autres fichiers sont compressés avec gzip. |
insmod normal | Charge le module qui fournit le mode normal de GRUB, ce qui est nécessaire pour le chargement standard du système d’exploitation. |
insmod chain | Charge le module permettant le chaînage vers d’autres chargeurs de démarrage, souvent utilisé pour démarrer Windows à partir de GRUB. |
insmod iso9660 | Charge le module pour la prise en charge des systèmes de fichiers ISO 9660, utilisés sur les CD/DVD. |
insmod linux | Charge le module pour démarrer un noyau Linux. |
insmod efi_gop | Charge le module pour prendre en charge les interfaces graphiques GOP (Graphics Output Protocol) dans un environnement EFI. |
insmod efi_uga | Charge le module pour prendre en charge l’interface UGA (Universal Graphics Adapter) dans un environnement EFI. |
insmod all_video | Charge tous les modules vidéo disponibles, ce qui permet de gérer plusieurs types de sortie vidéo pour GRUB. |
insmod font | Charge le module de gestion des polices, utilisé pour afficher des textes avec des polices spécifiques dans le menu GRUB. |
Liens
- Qu’est-ce qu’un chargeur de démarrage (Boot Loader)
- GRUB : la configuration grub.cfg, les commandes et le fonctionnement
- GRUB : ajouter une entrée manuellement
- GRUB : Utiliser le mode rescue shell pour corriger les erreurs de démarrage Linux
- Réparer Debian en mode rescue et récupération
- Dual-boot : Supprimer Grub pour rétablir Windows au démarrage
- os-prober et grub-mkconfig : configurer GRUB automatiquement
- Réparer/restaurer GRUB et le démarrage de Linux
- Réparer GRUB avec Rescatux pour corriger le démarrage Linux
- Grub : Réparer le Dual-boot Ubuntu et Windows 11/10
- Comment modifier le délai d’attente de GRUB sous Linux
- Thème GRUB : personnaliser GRUB
- Réparer Debian en mode rescue et récupération
- Comment réparer et réinstaller Ubuntu avec le mode rescue
- Réinitialiser le mot de passe root perdu ou oublié Ubuntu
- Réinitialiser le mot de passe root perdu ou oublié avec un Live USB de secours
- Comment réinitialiser le mot de passe root depuis GRUB
- 5 façons de démarrer Linux en mode récupération et dépannage (rescue)
- efibootmgr : ajouter, supprimer, changer le démarrage d’un PC UEFI
- Qu’est-ce qu’un chargeur de démarrage (Boot Loader)
L’article GRUB : ajouter une entrée manuellement est apparu en premier sur malekal.com.
0 Commentaires