Red Hat Training
A Red Hat training course is available for Red Hat Enterprise Linux
Chapitre 24. Utiliser le chargeur de démarrage GRUB 2
Red Hat Enterprise Linux 7 est distribué avec la version 2 du chargeur de démarrage GNU GRUB (« GRand Unified Boot loader »), qui permet à l'utilisateur de sélectionner un système d'exploitation ou un noyau à charger pendant le démarrage système. GRUB 2 permet également à l'utilisateur de passer des arguments au noyau.
24.1. Introduction à GRUB 2
GRUB 2 lit sa configuration dans le fichier
/boot/grub2/grub.cfg
pour les machines traditionnelles basées BIOS et dans le fichier /boot/efi/EFI/redhat/grub.cfg
pour les machines UEFI. Ce fichier contient des informations de menu.
Le fichier de configuration GRUB 2,
grub.cfg
, est généré en cours d'installation, ou bien, en invoquant l'utilitaire /usr/sbin/grub2-mkconfig, et est mis à jour par grubby
automatiquement à chaque fois qu'un nouveau noyau est installé. Quand il est regénéré manuellement par grub2-mkconfig, le fichier est regénéré selon les fichiers de modèle qui se trouvent dans /etc/grub.d/
, et les paramètres de configuration personnalisés du fichier /etc/default/grub
. Les changements apportées à grub.cfg
seront perdues à chaque fois que grub2-mkconfig est utilisé pour regénérer le fichier, donc il faut faire refléter les changements manuels dans le fichier /etc/default/grub
également.
Les opérations normales de
grub.cfg
, comme la suppression ou le rajout de nouveaux noyaux, doivent être effectuées par l'outil grubby
et pour les scripts, par l'outil new-kernel-pkg
. Si vous utilisez grubby
pour changer le noyau par défaut, les changements seront hérités quand vous installerez des nouveaux noyaux. Pour plus d'informations sur grubby
, voir Section 24.4, « Effectuer des Changements persistnats à un menu GRUB 2 par l'outil grubby ».
Le fichier
/etc/default/grub
est utilisé par l'outil grub2-mkconfig
, utilisé lui-même par anaconda
quand on crée grub.cfg
au cours du processus d'installation, et il peut être utilisé en cas d'échec du système, comme par exemple, au cas où les configurations du chargeur de démarrage ont besoin d'être créées à nouveau. En général, il n'est pas conseillé de remplacer le fichier grub.cfg
en exécutant grub2-mkconfig
manuellement, sauf en cas de dernier recours. Notez que tout changement manuel à /etc/default/grub
entraîne la création à nouveau du fichier grub.cfg
.
Entrées de menu dans grub.cfg
Parmi les divers snippets et directives, le fichier de configuration
grub.cfg
contient un ou plusieurs bloc(s) menuentry
, qui représentent chacun une entrée unique du menu de démarrage GRUB 2. Ces blocs commencent toujours par le mot-clé menuentry
suivi d'un titre, d'une liste d'options, et d'une accolade d'ouverture, et se terminant avec une accolade de fermeture. Tout ce qui se trouve entre l'accolade d'ouverture et l'accolade de fermeture doit être indenté. Par exemple, ci-dessous figure un exemple de bloc menuentry
pour Red Hat Enterprise Linux 7 avec le noyau Linux 3.8.0-0.40.el7.x86_64 :
menuentry 'Red Hat Enterprise Linux Server' --class red --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-simple-c60731dc-9046-4000-9182-64bdcce08616' { load_video set gfxpayload=keep insmod gzio insmod part_msdos insmod xfs set root='hd0,msdos1' if [ x$feature_platform_search_hint = xy ]; then search --no-floppy --fs-uuid --set=root --hint-bios=hd0,msdos1 --hint-efi=hd0,msdos1 --hint-baremetal=ahci0,msdos1 --hint='hd0,msdos1' 19d9e294-65f8-4e37-8e73-d41d6daa6e58 else search --no-floppy --fs-uuid --set=root 19d9e294-65f8-4e37-8e73-d41d6daa6e58 fi echo 'Loading Linux 3.8.0-0.40.el7.x86_64 ...' linux16 /vmlinuz-3.8.0-0.40.el7.x86_64 root=/dev/mapper/rhel-root ro rd.md=0 rd.dm=0 rd.lvm.lv=rhel/swap crashkernel=auto rd.luks=0 vconsole.keymap=us rd.lvm.lv=rhel/root rhgb quiet echo 'Loading initial ramdisk ...' initrd /initramfs-3.8.0-0.40.el7.x86_64.img }
Chaque bloc
menuentry
qui représente un noyau Linux installé contient linux
sur 64 bits IBM POWER Series, linux16
sur systèmes basés BIOS x86_64, et linuxefi
sur systèmes basés UEFI. Puis les directives initrd
suivies par le chemin vers le noyau et l'image initramfs
, respectivement. Si une autre partition /boot
a été créée, les chemins vers le noyau et l'image initramfs
sont relatifs à /boot
. Dans l'exemple ci-dessus, la ligne initrd /initramfs-3.8.0-0.40.el7.x86_64.img
signifie que l'image initramfs
est en fait située sur /boot/initramfs-3.8.0-0.40.el7.x86_64.img
lorsque le système de fichiers root
est monté, et de même pour le chemin du noyau.
Le numéro de version du noyau donné sur la ligne
linux16 /vmlinuz-kernel_version
doit correspondre au numéro de version de l'image initramfs
donnée sur la ligne initrd /initramfs-kernel_version.img
de chaque bloc menuentry
. Pour obtenir des informations supplémentaires sur la manière de vérifier l'image du disque RAM initial, veuillez consulter la Section 25.5, « Vérifier l'image de disque RAM initial ».
Note
Dans les blocs
menuentry
, la directive initrd
doit indiquer l'emplacement (relatif au répertoire /boot
s'il se trouve sur une autre partition) du fichier initramfs
correspondant à la même version du noyau. Cette directive est appellée initrd
car l'outil précédant, qui avait créé les images de disque RAM initial, mkinitrd
, créait des fichiers nommés des fichiers initrd
. La directive grub.cfg
reste initrd
afin de rester compatible avec d'autres outils. La convention de dénomination de fichiers des systèmes utilisant l'utilitaire dracut
pour créer l'image du disque RAM initial est comme suit : initramfs-kernel_version.img
.
Pour obtenir des informations sur l'utilisation de Dracut, veuillez consulter la Section 25.5, « Vérifier l'image de disque RAM initial ».