Gerenciando Kernels para Instâncias do Oracle Linux

Saiba como gerenciar parâmetros de inicialização do kernel antes da inicialização e no runtime e como usar grubby para gerenciar kernels para instâncias do Oracle Linux no Oracle Cloud Infrastructure.

Consulte também: Gerenciando Kernels e Inicialização do Sistema.

Usando o grubby para Gerenciar Kernels

Use o comando grubby para gerenciar a configuração do GRUB 2 no sistema, incluindo a seleção do kernel de inicialização padrão ou a configuração de parâmetros de inicialização da linha de comando extra do kernel a serem usados na inicialização. Consulte a página do manual grubby(8) para obter mais informações. A ferramenta grubby pode ser usada para ler informações e fazer alterações persistentes no arquivo grub.cfg. Ele permite, por exemplo, alterar as entradas de menu GRUB2 para especificar quais argumentos passar para um kernel na inicialização do sistema e alterar o kernel padrão.

Listar Kernels Instalados e Kernel Padrão

Você pode usar o comando grubby para ver todos os kernels instalados em uma instância do Oracle Linux, informações de configuração sobre os kernels, qual kernel é o padrão e qual kernel está em execução no momento.

  1. Em uma linha de comando, usando privilégios administrativos, estabeleça conexão com a instância usando SSH.
  2. Liste os kernel instalados usando uma das opções a seguir. A lista de kernels instalados pode ser diferente dependendo da versão do Oracle Linux.
    • Liste os kernels instalados no diretório /boot.
      sudo ls -l /boot/vmlinuz*
      -rwxr-xr-x. 1 root root 13701352 Feb 12 19:33 /boot/vmlinuz-0-rescue-7063910fe2979258f8fd66f2fb8b8567
      -rwxr-xr-x. 1 root root 10889384 Feb 11 12:19 /boot/vmlinuz-4.18.0-553.40.1.el8_10.x86_64
      -rwxr-xr-x. 1 root root 13701352 Jan 29 04:13 /boot/vmlinuz-5.15.0-305.176.4.el8uek.x86_64
    • Liste os kernels que usam grubby e a opção de comando --info=ALL para ver a configuração de inicialização associada a cada kernel instalado.
      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-5.15.0-305.176.4.el8uek.x86_64" <<Full path to the kernel image
      args="ro crashkernel=auto 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.carrier=5 /
            netroot=iscsi:169.254.0.2:::1:iqn.2015-02.oracle.boot:uefi /
            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 ip=dhcp,dhcp6 rd.net.timeout.dhcp=10 crash_kexec_post_notifiers /
            fips=1 boot=UUID=5097b6ba-ed0e-418a-9c2c-fb25d577991f $tuned_params"
      root="/dev/mapper/ocivolume-root" <<Root partition device
      initrd="/boot/initramfs-5.15.0-305.176.4.el8uek.x86_64.img $tuned_initrd" <<Path to the initial RAM disk (initrd) image
      title="Oracle Linux Server (5.15.0-305.176.4.el8uek.x86_64 with Unbreakable Enterprise Kernel) 8.10" <<Title displayed in the GRUB menu at startup
      id="7063910fe2979258f8fd66f2fb8b8567-5.15.0-305.176.4.el8uek.x86_64" <<Unique identifier for the boot entry
      
      index=1
      kernel="/boot/vmlinuz-4.18.0-553.40.1.el8_10.x86_64"
      ...
      title="Oracle Linux Server (4.18.0-553.40.1.el8_10.x86_64) 8.10"
      ...
      
      index=2
      kernel="/boot/vmlinuz-0-rescue-7063910fe2979258f8fd66f2fb8b8567"
      ...
      title="Oracle Linux Server (0-rescue-7063910fe2979258f8fd66f2fb8b8567 with Unbreakable Enterprise Kernel) 8.10"
      ...

      A partir da saída de sudo grubby --info=ALL, é possível determinar o que você vê no menu GRUB ao iniciar. Por exemplo, usando o número do índice e o título na saída acima, o menu GRUB teria esta aparência:

      Oracle Linux Server (5.15.0-305.176.4.el8uek.x86_64 with Unbreakable Enterprise Kernel) 8.10
      Oracle Linux Server (4.18.0-553.40.1.el8_10.x86_64) 8.10
      Oracle Linux Server (0-rescue-7063910fe2979258f8fd66f2fb8b8567 with Unbreakable Enterprise Kernel) 8.10
  3. Liste qual kernel já está configurado como o kernel padrão atual a ser usado na inicialização e seu título e posição, como visto no menu GRUB. O kernel padrão pode ser diferente dependendo da versão do Oracle Linux.
    • Liste o kernel padrão.
      sudo grubby --default-kernel
      /boot/vmlinuz-5.15.0-305.176.4.el8uek.x86_64
      
    • Verifique o título do kernel padrão.
      sudo grubby --default-title

      A saída corresponde ao valor visto no menu GRUB2 ao iniciar o Oracle Linux

      Oracle Linux Server (5.15.0-305.176.4.el8uek.x86_64 with Unbreakable Enterprise Kernel) 8.10
      
    • Localize a posição do kernel padrão na lista de inicialização do kernel.
      sudo grubby --default-index
      0
  4. Verifique qual kernel está sendo executado no momento na instância.
    uname -r
    5.15.0-305.176.4.el8uek.x86_64

    Se o kernel padrão e o kernel atualmente em execução não forem idênticos, os motivos subjacentes poderão ser um dos seguintes:

    • Você instalou um kernel mais recente, mas não reinicializou o sistema
    • Durante uma reinicialização do sistema, você selecionou manualmente um kernel alternativo para ser o kernel operativo
    • Você atualizou manualmente o kernel padrão, mas não reinicializou o sistema após a atualização

Alterar Kernel Padrão

Você pode seguir uma das duas opções para definir o kernel padrão no GRUB 2, usando o comando grubby, escolha uma das seguintes opções:

  1. Em uma linha de comando, usando privilégios administrativos, estabeleça conexão com a instância usando SSH.
  2. Liste o kernel padrão.
    sudo grubby --default-kernel
    /boot/vmlinuz-5.15.0-305.176.4.el8uek.x86_64
    
  3. Use o comando grubby --set-default para alterar o kernel padrão, certificando-se de especificar o kernel de caminho completo. Você pode obter o caminho do kernel usando uma das opções da etapa 2 de Listar Kernels Instalados e Kernel Padrão.
    sudo grubby --set-default /boot/vmlinuz-4.18.0-553.40.1.el8_10.x86_64

    A alteração entra em vigor imediatamente e persiste nas reinicializações do sistema.

  4. Verifique a alteração do kernel padrão.
    sudo grubby --default-kernel
    /boot/vmlinuz-4.18.0-553.40.1.el8_10.x86_64
    
  5. (Opcional) Defina o kernel padrão para a primeira posição na lista de inicialização do kernel usando o comando grubby --set-default-index.
    sudo grubby --set-default-index=0
    O menu GRUB ficaria assim:
    Oracle Linux Server (4.18.0-553.40.1.el8_10.x86_64) 8.10
    Oracle Linux Server (5.15.0-305.176.4.el8uek.x86_64 with Unbreakable Enterprise Kernel) 8.10
    Oracle Linux Server (0-rescue-7063910fe2979258f8fd66f2fb8b8567 with Unbreakable Enterprise Kernel) 8.10
  6. Reinicialize a instância para inicializar com o novo kernel padrão.

Alterar Parâmetros de Inicialização do Kernel

Você pode atualizar a configuração de inicialização do GRUB 2 para um kernel específico ou em todos os kernels instalados na instância do Oracle Linux.

Use o comando grubby --update-kernel para adicionar novos argumentos, alterar valores de argumentos existentes ou remover argumentos para um kernel específico ou todos os kernels. Vários argumentos podem ser especificados para cada opção em uma lista separada por espaços entre aspas. Você pode adicionar e remover argumentos na mesma operação. Ao usar a opção --args, se já existir um argumento, o novo valor substituirá os valores antigos.

  1. Em uma linha de comando, usando privilégios administrativos, estabeleça conexão com a instância usando SSH.
  2. Para atualizar todas as entradas do kernel para usar um argumento de inicialização do kernel específico, use grubby --update-kernel=ALL. Por exemplo, altere o argumento LANG:
    sudo grubby --update-kernel=ALL --args LANG=en_GB.UTF-8
  3. Verifique se as alterações entraram em vigor
    sudo grubby --info=ALL
    index=0
    kernel="/boot/vmlinuz-5.15.0-305.176.4.el8uek.x86_64"
    args="ro crashkernel=auto 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.carrier=5 
       netroot=iscsi:169.254.0.2:::1:iqn.2015-02.oracle.boot:uefi 
       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 ip=dhcp,dhcp6 rd.net.timeout.dhcp=10   
       crash_kexec_post_notifiers fips=1 boot=UUID=5097b6ba-ed0e-418a-9c2c-fb25d577991f 
       LANG=en_GB.UTF-8 $tuned_params"
    ...
    index=1
    kernel="/boot/vmlinuz-4.18.0-553.40.1.el8_10.x86_64"
    args="ro crashkernel=auto 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.carrier=5 
       netroot=iscsi:169.254.0.2:::1:iqn.2015-02.oracle.boot:uefi 
       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 ip=dhcp,dhcp6 rd.net.timeout.dhcp=10 crash_kexec_post_notifiers 
       fips=1 boot=UUID=5097b6ba-ed0e-418a-9c2c-fb25d577991f 
       LANG=en_GB.UTF-8 $tuned_params"
    ...
    index=2
    kernel="/boot/vmlinuz-0-rescue-7063910fe2979258f8fd66f2fb8b8567"
    args="ro crashkernel=auto 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.carrier=5 
       netroot=iscsi:169.254.0.2:::1:iqn.2015-02.oracle.boot:uefi  
       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 ip=dhcp,dhcp6 rd.net.timeout.dhcp=10   
       crash_kexec_post_notifiers fips=1 boot=UUID=5097b6ba-ed0e-418a-9c2c-fb25d577991f 
       LANG=en_GB.UTF-8 $tuned_params"
    ...
  4. Reinicialize a instância para inicializar com a nova configuração do kernel.