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

  1. En tant qu'utilisateur root, répertoriez le contenu du répertoire /boot et trouvez le noyau (vmlinuz-kernel_version) et initramfs-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_64
    • 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 noyau initramfs-3.10.0-78.el7.x86_64kdump.img existe également.

    Important

    Dans le répertoire /boot, vous trouverez plusieurs fichiers initramfs-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 sur kdump, veuillez consulter le Guide de vidage sur incident de noyau Red Hat Enterprise Linux 7.
  2. 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 fichier initramfs avec l'utilitaire Dracut, veuillez simplement invoquer dracut en tant qu'utilisateur root sans lui faire générer de fichier initramfs 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 que dracut remplace le fichier initramfs existant (par exemple, si initramfs a été corrompu). Sinon, dracut refusera de remplacer le fichier initramfs existant :
    ~]# dracut
    Ne remplacera pas le fichier initramfs existant (/boot/initramfs-3.10.0-78.el7.x86_64.img) sans --force
    You can create an initramfs in the current directory by calling dracut 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 the add_dracutmodules+="module [more_modules]" directive of the /etc/dracut.conf configuration file. You can list the file contents of an initramfs image file created by dracut by using the lsinitrd 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 consulter man dracut et man dracut.conf pour obtenir davantage d'informations sur les options et l'utilisation.
  3. Examinez le fichier de configuration /boot/grub2/grub.cfg pour vous assurer qu'un fichier initramfs-kernel_version.img existe bien pour la version du noyau que vous démarrez. Par exemple :
    ~]# grep initramfs /boot/grub2/grub.cfg
    	initrd16 /initramfs-3.10.0-123.el7.x86_64.img
    	initrd16 /initramfs-0-rescue-6d547dbfd01c46f6a4c1baa8c4743f57.img
    Veuillez 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

  1. Redémarrez le système en sélectionnant le noyau de secours dans le menu GRUB.
  2. Changez le paramètre de configuration qui a amené initramfs à mal-fonctionner.
  3. 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