24.5. Personnalisation du fichier de configuration GRUB 2
Les scripts GRUB 2 effectuent des recherches dans l'ordinateur de l'utilisateur et créent un menu de démarrage basé sur les systèmes d'exploitation trouvés par les scripts. Pour refléter les options de démarrage système les plus récentes, le menu de démarrage est automatiquement régénéré lorsque le noyau est mis à jour ou lorsqu'un nouveau noyau est ajouté.
Cependant, les utilisateurs pourraient souhaiter générer un menu contenant des entrées spécifiques ou pour que les entrées se trouvent dans un ordre particulier. GRUB 2 permet d'effectuer une personnalisation de base du menu de démarrage afin de donner aux utilisateurs contrôle de ce qui s'affiche à l'écran.
GRUB 2 utilise une série de scripts pour générer le menu ; ces scripts se trouvent dans le répertoire
/etc/grub.d/. Les fichiers suivants sont inclus :
00_header, qui charge les paramètres GRUB 2 du fichier/etc/default/grub.01_users, qui lit le mot de passe du superutilisateur dans le fichieruser.cfg. Dans Red Hat Enterprise Linux 7.0 et 7.1, ce fichier n'a été créé que lorsque le mot de passe boot a été défini dans le fichier kickstart au moment de l'installation, et il inclut le mot de passe défini en texte brut.10_linux, qui localise les noyaux dans la partition par défaut de Red Hat Enterprise Linux.30_os-prober, qui génère des entrées pour les systèmes d'exploitations trouvés sur d'autres partitions.40_custom, un modèle pouvant être utilisé pour créer des entrées de menu supplémentaires.
Les scripts du répertoire
/etc/grub.d/ sont lus en ordre alphabétique et peuvent ainsi être renommés pour modifier l'ordre de démarrage d'entrées spécifiques du menu.
Important
Avec la clé
GRUB_TIMEOUT définie sur 0 dans le fichier /etc/default/grub, GRUB 2 n'affiche pas la liste des noyaux démarrables lorsque le système est démarré. Pour afficher cette liste pendant le démarrage, appuyez continuellement sur n'importe quelle touche alphanumérique lorsque les informations BIOS sont affichées, GRUB 2 vous présentera le menu GRUB.
24.5.1. Changer l'entrée de démarrage par défaut Copier lienLien copié sur presse-papiers!
Copier lienLien copié sur presse-papiers!
Par défaut, la clé de la directive
GRUB_DEFAULT dans le fichier /etc/default/grub est le mot « saved ». Cela ordonne à GRUB 2 de charger le noyau spécifié par la directive « saved_entry » dans le fichier d'environnement GRUB 2, qui se trouve dans /boot/grub2/grubenv. Vous pouvez également définir un autre enregistrement GRUB par défaut en utilisant la commande grub2-set-default, qui met à jour le fichier d'environnement GRUB 2.
Par défaut, la valeur
Copy to Clipboard
Copied!
Toggle word wrap
Toggle overflow
La directive
saved_entry est définie avec le nom du noyau installé le plus récent du type de paquet kernel. Ceci est défini dans /etc/sysconfig/kernel par les directives UPDATEDEFAULT et DEFAULTKERNEL. Le fichier peut être affiché par l'utilisateur root comme suit :
DEFAULTKERNEL spécifie quel type de paquet sera utilisé par défaut. Installer un paquet de type kernel-debug ne changera pas le noyau par défaut tant que DEFAULTKERNEL est défini sur les paquets de type kernel.
GRUB 2 prend en charge une valeur numérique comme clé pour que la directive
saved_entry change l'ordre par défaut dans lequel les systèmes d'exploitation sont chargés. Pour spécifier quel système d'exploitation doit être chargé en premier, veuillez inclure son numéro dans la commande grub2-set-default. Exemple :
grub2-set-default 2
~]# grub2-set-default 2
Remarquez que la position d'une entrée de menu dans la liste est dénotée par un nombre commençant par zéro. Ainsi, dans l'exemple ci-dessus, la troisième entrée sera chargée. Cette valeur sera remplacée par le nom du prochain noyau devant être installé.
Pour forcer un système à toujours utiliser une entrée de menu particulière, veuillez utiliser le nom de l'entrée du menu comme clé de la directive
Copy to Clipboard
Copied!
Toggle word wrap
Toggle overflow
Le nom de fichier
GRUB_DEFAULT dans le fichier /etc/default/grub. Pour répertorier les entrées du menu disponibles, veuillez exécuter la commande suivante en tant qu'utilisateur root :
awk -F\' '$1=="menuentry " {print $2}' /etc/grub2.cfg
~]# awk -F\' '$1=="menuentry " {print $2}' /etc/grub2.cfg
/etc/grub2.cfg est un lien symbolic qui mène au fichier grub.cfg, dont l'emplacement dépendra de l'architecture. Pour des raisons de fiabilité, le lien symbolic n'est pas utilisé dans d'autres exemples dans ce chapitre. Il vaut mieux utiliser des chemins absolus quand on écrit dans un fichier, surtout quand on le répare.
Les changements apportés à
/etc/default/grub requièrent de régénérer le fichier grub.cfg comme suit :
- Sur les machines basées BIOS, exécutez la commande suivante en tant qu'utilisateur
root:grub2-mkconfig -o /boot/grub2/grub.cfg
~]# grub2-mkconfig -o /boot/grub2/grub.cfgCopy to Clipboard Copied! Toggle word wrap Toggle overflow - Sur les machines basées UEFI, veuillez exécuter la commande suivante en tant qu'utilisateur
root:grub2-mkconfig -o /boot/efi/EFI/redhat/grub.cfg
~]# grub2-mkconfig -o /boot/efi/EFI/redhat/grub.cfgCopy to Clipboard Copied! Toggle word wrap Toggle overflow
24.5.2. Modifier une entrée de menu Copier lienLien copié sur presse-papiers!
Copier lienLien copié sur presse-papiers!
Si vous devez préparer un nouveau fichier GRUB 2 avec des paramètres différents, modifier les valeurs de la clé
Copy to Clipboard
Copied!
Toggle word wrap
Toggle overflow
, où
GRUB_CMDLINE_LINUX dans le fichier /etc/default/grub. Remarquez que vous pouvez spécifier plusieurs paramètres pour la clé GRUB_CMDLINE_LINUX, similairement à l'ajout de paramètres dans le menu de démarrage GRUB 2. Exemple : GRUB_CMDLINE_LINUX="console=tty0 console=ttyS0,9600n8"
GRUB_CMDLINE_LINUX="console=tty0 console=ttyS0,9600n8"
console=tty0 est le premier terminal virtuel et console=ttyS0 est le terminal série à utiliser.
Les changements apportés à
/etc/default/grub requièrent de régénérer le fichier grub.cfg comme suit :
- Sur les machines basées BIOS, exécutez la commande suivante en tant qu'utilisateur
root:grub2-mkconfig -o /boot/grub2/grub.cfg
~]# grub2-mkconfig -o /boot/grub2/grub.cfgCopy to Clipboard Copied! Toggle word wrap Toggle overflow - Sur les machines basées UEFI, veuillez exécuter la commande suivante en tant qu'utilisateur
root:grub2-mkconfig -o /boot/efi/EFI/redhat/grub.cfg
~]# grub2-mkconfig -o /boot/efi/EFI/redhat/grub.cfgCopy to Clipboard Copied! Toggle word wrap Toggle overflow
24.5.3. Ajouter une nouvelle entrée Copier lienLien copié sur presse-papiers!
Copier lienLien copié sur presse-papiers!
Lors de l'exécution de la commande
grub2-mkconfig, GRUB 2 recherche des noyaux Linux et d'autres systèmes d'exploitation basés sur les fichiers situés dans le répertoire /etc/grub.d/. Le script /etc/grub.d/10_linux recherche les noyaux Linux installés sur la même partition. Le script /etc/grub.d/30_os-prober recherche d'autres systèmes d'exploitation. Des entrées du menu sont également automatiquement ajoutées au menu de démarrage lors de la mise à jour du noyau.
Le fichier
40_custom situé dans le répertoire /etc/grub.d/ est un modèle pour les entrées personnalisées et ressemble à ce qui suit :
This file provides an easy way to add custom menu entries. Simply type the menu entries you want to add after this comment. Be careful not to change the 'exec tail' line above.
#!/bin/sh
exec tail -n +3 $0
# This file provides an easy way to add custom menu entries. Simply type the
# menu entries you want to add after this comment. Be careful not to change
# the 'exec tail' line above.
Ce fichier peut être modifié ou copié. Remarquez qu'une entrée du menu valide doit inclure au minimum :
menuentry "<Title>"{
<Data>
}
menuentry "<Title>"{
<Data>
}
24.5.4. Créer un menu personnalisé Copier lienLien copié sur presse-papiers!
Copier lienLien copié sur presse-papiers!
Si vous ne souhaitez pas que les entrées du menu soient mises à jour automatiquement, vous pouvez créer un menu personnalisé.
Important
Avant de continuer, effectuez une copie de sauvegarde du contenu du répertoire
/etc/grub.d/ au cas où vous devriez annuler les changement ultérieurement.
Note
Remarquez que la modification du fichier
/etc/default/grub n'a aucun effet sur la création de menus personnalisés.
- Sur les machines basées BIOS, copiez le contenu de
/boot/grub2/grub.cfg, ou le contenu de/boot/efi/EFI/redhat/grub.cfgsur les machines UEFI. Ajoutez le contenu degrub.cfgdans le fichier/etc/grub.d/40_customsous les lignes d'en-tête. La partie exécutable du script40_customdoit être préservée. - Dans le contenu intégré au fichier
/etc/grub.d/40_custom, seuls les blocsmenuentrysont nécessaires à la création d'un menu personnalisé. Les fichiers/boot/grub2/grub.cfget/boot/efi/EFI/redhat/grub.cfgpeuvent contenir des spécifications de fonctions ainsi que d'autres contenus au-dessus et au-dessous des blocsmenuentry. Si vous avez inclus ces lignes non nécessaires dans le fichier40_customdans l'étape précédente, veuillez les supprimer.Voici un exemple de script40_custompersonnalisé :Copy to Clipboard Copied! Toggle word wrap Toggle overflow - Supprimez tous les fichier du répertoire
/etc/grub.d/sauf les fichiers suivants :00_header,40_custom,01_users(s'il existe),- et
README.
Alternativement, si vous souhaitez conserver les fichiers dans le répertoire/etc/grub2.d/, rendez-les non exécutables par la commandechmod.a-x<file_name> - Modifiez, ajoutez, ou supprimez des entrées de menu dans le fichier
40_customcomme vous le souhaitez. - Créez à nouveau le fichier
grub.cfgen exécutant la commandegrub2-mkconfig:-o- Sur les machines basées BIOS, exécutez la commande suivante en tant qu'utilisateur
root:grub2-mkconfig -o /boot/grub2/grub.cfg
~]# grub2-mkconfig -o /boot/grub2/grub.cfgCopy to Clipboard Copied! Toggle word wrap Toggle overflow - Sur les machines basées UEFI, veuillez exécuter la commande suivante en tant qu'utilisateur
root:grub2-mkconfig -o /boot/efi/EFI/redhat/grub.cfg
~]# grub2-mkconfig -o /boot/efi/EFI/redhat/grub.cfgCopy to Clipboard Copied! Toggle word wrap Toggle overflow