Utiliser grubby pour gérer les noyaux

L'outil grubby peut être utilisé pour lire des informations et apporter des modifications persistantes au fichier grub.cfg qui définit la configuration GRUB d'une instance Oracle Linux. À l'aide de la commande grubby, vous pouvez voir la configuration du noyau, spécifier le noyau de démarrage par défaut, configurer des paramètres de démarrage de ligne de commande de noyau supplémentaires et modifier le menu de démarrage du noyau (GRUB). Pour plus d'informations, voir la page de manuel grubby(8).

Lister les noyaux installés et le noyau par défaut

Utilisez la commande grubby pour voir tous les noyaux installés sur une instance Oracle Linux, les informations de configuration sur les noyaux, le noyau par défaut et le noyau actif.

  1. À partir d'une ligne de commande, à l'aide des privilèges d'administration, connectez-vous à l'instance à l'aide de SSH.
  2. Répertoriez les noyaux installés à l'aide de l'une des options suivantes. La liste des noyaux installés peut être différente selon la version d'Oracle Linux.
    • Listez les noyaux à l'aide de grubby et de l'option de commande --info=ALL pour voir la configuration de démarrage associée à chaque noyau installé.
      sudo grubby --info=ALL
      index=0 <--Each boot entry is assigned an index, which is a number that indicates its position in the GRUB menu
      kernel="/boot/vmlinuz-6.12.0-102.36.5.2.el10uek.x86_64" <--Full path to the kernel image
      args="ro $tuned_params LANG=en_US.UTF-8 console=tty0 console=ttyS0,115200 rd.luks=0 <--Command-line arguments passed to the kernel when it boots
           rd.md=0 rd.dm=0 rd.lvm.vg=ocivolume rd.lvm.lv=ocivolume/root rd.net.timeout.dhcp=10 rd.net.timeout.carrier=5
           rd.iscsi.param=node.session.timeo.replacement_timeout=6000 net.ifnames=1
           nvme_core.shutdown_timeout=10 ipmi_si.tryacpi=0 ipmi_si.trydmi=0 libiscsi.debug_libiscsi_eh=1
           loglevel=4 crash_kexec_post_notifiers crashkernel=1G-64G:448M,64G-:512M
           netroot=iscsi rd.iscsi.firmware=1"
      root="/dev/mapper/ocivolume-root" <--Root partition device
      initrd="/boot/initramfs-6.12.0-102.36.5.2.el10uek.x86_64.img $tuned_initrd" <--Path to the initial RAM disk (initrd) image
      title="Oracle Linux Server (6.12.0-102.36.5.2.el10uek.x86_64 with Unbreakable Enterprise Kernel) 10.0" <--Title displayed in the GRUB menu at startup
      id="3d18a447860027858b15c8276ccc1ab3-6.12.0-102.36.5.2.el10uek.x86_64" <--Unique identifier for the boot entry
      
      index=1
      kernel="/boot/vmlinuz-6.12.0-55.27.1.0.1.el10_0.x86_64"
      ...
      title="Oracle Linux Server (6.12.0-55.27.1.0.1.el10_0.x86_64) 10.0"
      ...
      
      index=2
      kernel="/boot/vmlinuz-0-rescue-3d18a447860027858b15c8276ccc1ab3"
      ...
      title="Oracle Linux Server (0-rescue-3d18a447860027858b15c8276ccc1ab3 with Unbreakable Enterprise Kernel) 10.0"
      ...

      La sortie de sudo grubby --info=ALL prédit ce qui s'affiche dans le menu de démarrage du noyau au démarrage. Par exemple, en utilisant les numéros d'index et les titres de la sortie précédente, le menu de démarrage du noyau afficherait les éléments suivants :

      Oracle Linux Server (6.12.0-102.36.5.2.el10uek.x86_64 with Unbreakable Enterprise Kernel) 10.0
      Oracle Linux Server (6.12.0-55.27.1.0.1.el10_0.x86_64) 10.0
      Oracle Linux Server (0-rescue-3d18a447860027858b15c8276ccc1ab3 with Unbreakable Enterprise Kernel) 10.0
    • Listez les noyaux installés dans le répertoire /boot.
      sudo ls -l /boot/vmlinuz*
      -rwxr-xr-x. 1 root root 17048272 Aug 19 20:35 /boot/vmlinuz-0-rescue-3d18a447860027858b15c8276ccc1ab3
      -rwxr-xr-x. 1 root root 17048272 Aug 13 00:00 /boot/vmlinuz-6.12.0-102.36.5.2.el10uek.x86_64
      -rwxr-xr-x. 1 root root 15852240 Aug 14 00:00 /boot/vmlinuz-6.12.0-55.27.1.0.1.el10_0.x86_64
  3. Afficher le noyau configuré en tant que noyau par défaut à utiliser au démarrage, ainsi que son titre et sa position dans le menu de démarrage du noyau. Le noyau par défaut dépend de la version d'Oracle Linux.
    • Afficher le noyau par défaut.
      sudo grubby --default-kernel
      /boot/vmlinuz-6.12.0-102.36.5.2.el10uek.x86_64
      
    • Afficher le titre du noyau par défaut.
      sudo grubby --default-title

      La sortie correspond à la valeur affichée dans le menu de démarrage du noyau lorsque l'instance Oracle Linux démarre.

      Oracle Linux Server (6.12.0-102.36.5.2.el10uek.x86_64 with Unbreakable Enterprise Kernel) 10.0
    • Affichez la position d'index du noyau par défaut dans la liste de démarrage du noyau.
      sudo grubby --default-index
      0
  4. Vérifiez quel noyau est exécuté sur l'instance.
    uname -r
    6.12.0-102.36.5.2.el10uek.x86_64

    Le noyau par défaut et le noyau en cours d'exécution peuvent ne pas être identiques car :

    • Vous avez installé un noyau plus récent, mais vous n'avez pas redémarré le système.
    • Lors d'un redémarrage du système, vous avez sélectionné manuellement un autre noyau en tant que noyau actif.
    • Vous avez mis à jour manuellement le noyau par défaut, mais vous n'avez pas encore redémarré le système.

Modifier le noyau par défaut

Utilisez la commande grubby pour définir le noyau de démarrage par défaut dans la configuration GRUB 2.

  1. À partir d'une ligne de commande, à l'aide des privilèges d'administration, connectez-vous à l'instance à l'aide de SSH.
  2. Afficher le noyau par défaut.
    sudo grubby --default-kernel

    Par exemple :

    /boot/vmlinuz-6.12.0-102.36.5.2.el10uek.x86_64
  3. Utilisez la commande grubby --set-default pour modifier le noyau par défaut en veillant à spécifier le chemin d'accès complet au noyau. Vous pouvez obtenir le chemin du noyau à l'aide de l'une des options de l'étape 2 de la liste des noyaux installés et du noyau par défaut.

    Par exemple :

    sudo grubby --set-default /boot/vmlinuz-6.12.0-55.27.1.0.1.el10_0.x86_64

    La modification prend effet immédiatement et persiste entre les redémarrages du système.

  4. Vérifiez la modification du noyau par défaut.
    sudo grubby --default-kernel

    Par exemple :

    /boot/vmlinuz-6.12.0-55.27.1.0.1.el10_0.x86_64
  5. (Facultatif) Réglez le nouveau noyau par défaut à la première position dans le menu de démarrage du noyau à l'aide de la commande grubby --set-default-index.
    sudo grubby --set-default-index=0
    Le nouveau noyau par défaut est affiché en premier dans le menu de démarrage du noyau, par exemple :
    Oracle Linux Server (6.12.0-55.27.1.0.1.el10_0.x86_64) 10.0
    Oracle Linux Server (6.12.0-102.36.5.2.el10uek.x86_64 with Unbreakable Enterprise Kernel) 10.0
    Oracle Linux Server (0-rescue-3d18a447860027858b15c8276ccc1ab3 with Unbreakable Enterprise Kernel) 10.0
  6. Redémarrez l'instance pour démarrer avec le nouveau noyau par défaut.

Modifier les paramètres de démarrage du noyau

Utilisez la commande grubby --update-kernel pour ajouter de nouveaux arguments, modifier les valeurs d'argument existantes ou supprimer des arguments pour un noyau spécifique ou tous les noyaux. Plusieurs arguments peuvent être spécifiés pour chaque option d'une liste entre guillemets, chaque argument étant séparé par des espaces. Vous pouvez ajouter et supprimer des arguments dans la même opération. Lorsque vous utilisez l'option --args, si un argument existe déjà, la nouvelle valeur remplace les anciennes valeurs.

  1. À partir d'une ligne de commande, à l'aide des privilèges d'administration, connectez-vous à l'instance à l'aide de SSH.
  2. Utilisez la commande grubby --update-kernel pour modifier ou ajouter un argument de démarrage de noyau spécifique. Par exemple, mettez à jour les paramètres du noyau pour modifier l'argument LANG pour :
    • tous les noyaux
      sudo grubby --update-kernel=ALL --args LANG=en_GB.UTF-8
    • un noyau
       sudo grubby --update-kernel /boot/vmlinuz-6.12.0-102.36.5.2.el10uek.x86_64 --args LANG=en_GB.UTF-8
      
  3. Vérifiez que les modifications ont pris effet.
    sudo grubby --info=ALL
    • tous les noyaux
      index=0
      kernel="/boot/vmlinuz-6.12.0-102.36.5.2.el10uek.x86_64"
      args="ro $tuned_params console=tty0 console=ttyS0,115200 rd.luks=0 rd.md=0 
           rd.dm=0 rd.lvm.vg=ocivolume rd.lvm.lv=ocivolume/root rd.net.timeout.dhcp=10 
           rd.net.timeout.carrier=5 rd.iscsi.param=node.session.timeo.replacement_timeout=6000 
           net.ifnames=1 nvme_core.shutdown_timeout=10 ipmi_si.tryacpi=0 ipmi_si.trydmi=0 
           libiscsi.debug_libiscsi_eh=1 loglevel=4 crash_kexec_post_notifiers 
           crashkernel=1G-64G:448M,64G-:512M netroot=iscsi rd.iscsi.firmware=1 LANG=en_GB.UTF-8"
      ...
      index=1
      kernel="/boot/vmlinuz-6.12.0-55.27.1.0.1.el10_0.x86_64"
      args="ro $tuned_params console=tty0 console=ttyS0,115200 rd.luks=0 rd.md=0 
           rd.dm=0 rd.lvm.vg=ocivolume rd.lvm.lv=ocivolume/root rd.net.timeout.dhcp=10
           rd.net.timeout.carrier=5 rd.iscsi.param=node.session.timeo.replacement_timeout=6000 
           net.ifnames=1 nvme_core.shutdown_timeout=10 ipmi_si.tryacpi=0 ipmi_si.trydmi=0 
           libiscsi.debug_libiscsi_eh=1 loglevel=4 crash_kexec_post_notifiers 
           crashkernel=1G-64G:448M,64G-:512M netroot=iscsi rd.iscsi.firmware=1 LANG=en_GB.UTF-8"
      ...
    • un noyau
      index=0
      kernel="/boot/vmlinuz-6.12.0-102.36.5.2.el10uek.x86_64"
      args="ro $tuned_params console=tty0 console=ttyS0,115200 rd.luks=0 rd.md=0 
           rd.dm=0 rd.lvm.vg=ocivolume rd.lvm.lv=ocivolume/root rd.net.timeout.dhcp=10 
           rd.net.timeout.carrier=5 rd.iscsi.param=node.session.timeo.replacement_timeout=6000 
           net.ifnames=1 nvme_core.shutdown_timeout=10 ipmi_si.tryacpi=0 ipmi_si.trydmi=0 
           libiscsi.debug_libiscsi_eh=1 loglevel=4 crash_kexec_post_notifiers 
           crashkernel=1G-64G:448M,64G-:512M netroot=iscsi rd.iscsi.firmware=1 LANG=en_GB.UTF-8"
      ...
      index=1
      kernel="/boot/vmlinuz-6.12.0-55.27.1.0.1.el10_0.x86_64"
      args="ro $tuned_params LANG=en_US.UTF-8 console=tty0 console=ttyS0,115200 rd.luks=0 rd.md=0 
           rd.dm=0 rd.lvm.vg=ocivolume rd.lvm.lv=ocivolume/root rd.net.timeout.dhcp=10 
           rd.net.timeout.carrier=5 rd.iscsi.param=node.session.timeo.replacement_timeout=6000 
           net.ifnames=1 nvme_core.shutdown_timeout=10 ipmi_si.tryacpi=0 ipmi_si.trydmi=0 
           libiscsi.debug_libiscsi_eh=1 loglevel=4 crash_kexec_post_notifiers 
           crashkernel=1G-64G:448M,64G-:512M netroot=iscsi rd.iscsi.firmware=1"
      ...
  4. Redémarrez l'instance pour démarrer avec la nouvelle configuration du noyau.
Conseil

Pour modifier les paramètres de démarrage du noyau sans grubby, modifiez le fichier /etc/default/grub directement et modifiez les paramètres de démarrage dans la définition GRUB_CMDLINE_LINUX. Par exemple, remplacez LANG=en_US.UTF-8 par LANG=en_GB.UTF-8 :
GRUB_CMDLINE_LINUX="crashkernel=auto LANG=en_GB.UTF-8 console=tty0 console=ttyS0
,115200 rd.luks=0 rd.md=0 rd.dm=0 rd.lvm.vg=ocivolume rd.lvm.lv=ocivolume/root r
d.net.timeout.carrier=5 netroot=iscsi:169.254.0.2:::1:iqn.2015-02.oracle.boot:ue
fi rd.iscsi.param=node.session.timeo.replacement_timeout=6000 net.ifnames=1 nvme
_core.shutdown_timeout=10 ipmi_si.tryacpi=0 ipmi_si.trydmi=0 libiscsi.debug_libi
scsi_eh=1 loglevel=4 ip=dhcp,dhcp6 rd.net.timeout.dhcp=10 crash_kexec_post_notif
iers"
Pour que les modifications prennent effet au prochain redémarrage du système, recréez la configuration GRUB 2 :
sudo grub2-mkconfig -o /boot/grub2/grub.cfg