25.5. Vérifier l'image de disque RAM initial
Le but de l'image de disque RAM initial consiste à précharger les modules de périphériques blocs, comme pour IDE, SCSI ou RAID, afin que le système de fichiers racine, sur lequel ces modules résident normalement, puissent ensuite être accédés et montés. Sur les systèmes Red Hat Enterprise Linux 7, lorsqu'un nouveau noyau est installé en utilisant le gestionnaire de paquets Yum, PackageKit, ou RPM, l'utilitaire Dracut est toujours appelé par les scripts d'installation pour créer une image de disque RAM initial initramfs.
Sur toutes les architectures autres que IBM eServer System i (veuillez consulter la section intitulée « Vérifier l'image de disque RAM initial et le noyau sur IBM eServer System i »), il est possible de créer une image
initramfs
en exécutant la commande dracut
. Cependant, il n'est habituellement pas nécessaire de créer une image initramfs
manuellement : cette étape est automatiquement effectuée si le noyau et ses paquets associés sont installés ou mis à niveau à partir des paquets RPM distribués par Red Hat.
Vous pouvez vérifier qu'une image
initramfs
correspondant à votre version du noyau actuel existe et qu'elle est correctement spécifiée dans le fichier de configuration grub.cfg
en suivant la procédure ci-dessous :
Procédure 25.1. Vérifier l'image de disque RAM initial
- En tant qu'utilisateur
root
, répertoriez le contenu du répertoire/boot
et trouvez le noyau (vmlinuz-kernel_version
) etinitramfs-kernel_version
avec le numéro de version le plus récent :Exemple 25.1. Assurez-vous que les versions du noyau et d'initramfs correspondent bien
~]#
ls /boot
config-3.10.0-67.el7.x86_64 config-3.10.0-78.el7.x86_64 efi grub grub2 initramfs-0-rescue-07f43f20a54c4ce8ada8b70d33fd001c.img initramfs-3.10.0-67.el7.x86_64.img initramfs-3.10.0-67.el7.x86_64kdump.img initramfs-3.10.0-78.el7.x86_64.img initramfs-3.10.0-78.el7.x86_64kdump.img initrd-plymouth.img symvers-3.10.0-67.el7.x86_64.gz symvers-3.10.0-78.el7.x86_64.gz System.map-3.10.0-67.el7.x86_64 System.map-3.10.0-78.el7.x86_64 vmlinuz-0-rescue-07f43f20a54c4ce8ada8b70d33fd001c vmlinuz-3.10.0-67.el7.x86_64 vmlinuz-3.10.0-78.el7.x86_64L'Exemple 25.1, « Assurez-vous que les versions du noyau et d'initramfs correspondent bien » montre que :- trois noyaux sont installés (ou plutôt, trois fichiers noyau sont présents dans le répertoire
/boot/
), - le dernier noyau est nommé
vmlinuz-3.10.0-78.el7.x86_64
, et - un fichier
initramfs
correspondant à la version du noyauinitramfs-3.10.0-78.el7.x86_64kdump.img
existe également.
Important
Dans le répertoire/boot
, vous trouverez plusieurs fichiersinitramfs-kernel_versionkdump.img
. Ces fichiers sont des fichiers spéciaux créés par le mécanisme Kdump à des fins de débogage de noyau, ils ne sont pas utilisés pour démarrer le système, et peuvent être ignorés en toute sécurité. Pour obtenir davantage d'informations surkdump
, veuillez consulter le Guide de vidage sur incident de noyau Red Hat Enterprise Linux 7. - Si le fichier
initramfs-kernel_version
ne correspond pas à la version du noyau le plus récent du fichier/boot
, ou dans d'autres situations, si vous deviez générer un fichierinitramfs
avec l'utilitaire Dracut, veuillez simplement invoquerdracut
en tant qu'utilisateurroot
sans lui faire générer de fichierinitramfs
dans le répertoire/boot/
pour obtenir le noyau le plus récent présent dans ce répertoire :~]#
dracut
Vous devez utiliser l'option-f
,--force
si vous souhaitez quedracut
remplace le fichierinitramfs
existant (par exemple, siinitramfs
a été corrompu). Sinon,dracut
refusera de remplacer le fichierinitramfs
existant :~]#
dracut
Ne remplacera pas le fichier initramfs existant (/boot/initramfs-3.10.0-78.el7.x86_64.img) sans --forceYou can create an initramfs in the current directory by callingdracut initramfs_name kernel_version
:~]#
dracut "initramfs-$(uname -r).img" $(uname -r)
If you need to specify specific kernel modules to be preloaded, add the names of those modules (minus any file name suffixes such as.ko
) inside the parentheses of theadd_dracutmodules+="module [more_modules]"
directive of the/etc/dracut.conf
configuration file. You can list the file contents of aninitramfs
image file created by dracut by using thelsinitrd initramfs_file
command:~]#
lsinitrd /boot/initramfs-3.10.0-78.el7.x86_64.img
Image: /boot/initramfs-3.10.0-78.el7.x86_64.img: 11M ======================================================================== dracut-033-68.el7 ======================================================================== drwxr-xr-x 12 root root 0 Feb 5 06:35 . drwxr-xr-x 2 root root 0 Feb 5 06:35 proc lrwxrwxrwx 1 root root 24 Feb 5 06:35 init -> /usr/lib/systemd/systemd drwxr-xr-x 10 root root 0 Feb 5 06:35 etc drwxr-xr-x 2 root root 0 Feb 5 06:35 usr/lib/modprobe.d[sortie tronquée]Veuillez consulterman dracut
etman dracut.conf
pour obtenir davantage d'informations sur les options et l'utilisation. - Examinez le fichier de configuration
/boot/grub2/grub.cfg
pour vous assurer qu'un fichier
existe bien pour la version du noyau que vous démarrez. Par exemple :initramfs-kernel_version.img
~]#
grep initramfs /boot/grub2/grub.cfg
initrd16 /initramfs-3.10.0-123.el7.x86_64.img initrd16 /initramfs-0-rescue-6d547dbfd01c46f6a4c1baa8c4743f57.imgVeuillez consulter Section 25.6, « Vérifier le chargeur de démarrage » pour obtenir davantage d'informations.
Vérifier l'image de disque RAM initial et le noyau sur IBM eServer System i
Sur les machines IBM eServer System i, les fichiers de l'image de disque RAM initial et du noyau sont combinés en un fichier unique, qui est créé par la commande
addRamDisk
. Cela est effectué automatiquement si le noyau et ses paquets associés sont installés ou mis à niveau à partir des paquets RPM distribués par Red Hat ; ainsi, il n'est pas nécessaire de l'exécuter manuellement. Pour vérifier qu'il a bien été créé, veuillez exécuter la commande suivante en tant qu'utilisateur root
pour vous assurer que le fichier /boot/vmlinitrd-kernel_version
existe au préalable :
ls -l /boot/
kernel_version doit correspondre à la version du noyau qui vient d'être installée.
Annuler les changements faits à l'image de disque RAM initial
Dans certains cas, comme par exemple, quand vous faîtes une erreur de configuration du système, et qu'il ne démarre plus, vous devrez sans doute annuler les changements faits à l'image de disque RAM initiale, en suivant la procédure suivante :
Procédure 25.2. Annuler des changements faits à l'image de disque RAM initial
- Redémarrez le système en sélectionnant le noyau de secours dans le menu GRUB.
- Changez le paramètre de configuration qui a amené
initramfs
à mal-fonctionner. - Recréer
initramfs
avec les paramètres qui conviennent en exécutant la commande suivante en tant qu'utilisateur root :~]#
dracut --kver kernel_version --force
La procédure ci-dessus peut vous être utile si, par exemple, vous définissez les
vm.nr_hugepages
dans le fichier sysctl.conf
. Comme le fichier sysctl.conf
est inclus dans initramfs
, la nouvelle configuration de vm.nr_hugepages
sera appliquée à initramfs
et initramfs
sera reconstruit. Cependant, comme la configuration est erronée, le nouvel initramfs
est endommagé et le nouveau noyau ne démarre pas, ce qui nécessite une correction par la procédure ci-dessus.
Répertorier le contenu de l'image de disque RAM initial
Pour répertorier les fichiers inclus dans
initramfs
, exécutez la commande suivante en tant qu'utilisateur root :
~]# lsinitrd
Pour ne répertorier que les fichiers qui se trouvent dans le répertoire
/etc
, utilisez la commande suivante :
~]# lsinitrd | grep etc/
Pour obtenir la sortie de contenu d'un fichier spécifique qui se situe dans
initramfs
pour le noyau actuel, utiliser l'option -f
:
~]# lsinitrd -f filename
Par exemple, pour obtenir une sortie de contenu de
sysctl.conf
, utilisez la commande suivante :
~]# lsinitrd -f /etc/sysctl.conf
Pour spécifier une version de noyau quelconque, utilisez l'option
--kver
:
~]# lsinitrd --kver kernel_version -f /etc/sysctl.conf
Par exemple, pour répertorier les informations sur une version de noyau 3.10.0-327.10.1.el7.x86_64, utilisez la commande suivante :
~]# lsinitrd --kver 3.10.0-327.10.1.el7.x86_64 -f /etc/sysctl.conf