Usare grubby per gestire i kernel
Lo strumento grubby può essere utilizzato per leggere le informazioni e apportare modifiche persistenti al file grub.cfg
che definisce la configurazione di GRUB per un'istanza di Oracle Linux. Utilizzando il comando grubby
, è possibile visualizzare la configurazione del kernel, specificare il kernel di boot predefinito, configurare ulteriori parametri di boot dalla riga di comando del kernel e modificare il menu di boot del kernel (GRUB). Per ulteriori informazioni, consultare la pagina del manuale grubby(8)
.
Elenca kernel installati e kernel predefinito
Utilizzare il comando grubby per visualizzare tutti i kernel installati su un'istanza di Oracle Linux, le informazioni di configurazione relative ai kernel, il kernel predefinito e il kernel attualmente in esecuzione.
- Da una riga di comando, utilizzando i privilegi di amministrazione connettersi all'istanza utilizzando SSH.
- Visualizzare i kernel installati utilizzando una delle opzioni riportate di seguito. L'elenco dei kernel installati potrebbe essere diverso a seconda della versione di Oracle Linux.
- Elencare i kernel utilizzando
grubby
e l'opzione del comando--info=ALL
per visualizzare la configurazione di boot associata a ciascun kernel installato.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" ...
Dall'output di sudo grubby --info=ALL, è possibile determinare gli elementi visualizzati nel menu di avvio del kernel all'avvio. Ad esempio, utilizzando il numero di indice e il titolo nell'output precedente, il menu di avvio del kernel viene visualizzato come indicato di seguito.
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
- Elencare i kernel installati nella directory
/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
- Elencare i kernel utilizzando
- Elencare il kernel configurato come kernel predefinito da utilizzare all'avvio e il titolo e la posizione visualizzati nel menu di avvio del kernel. Il kernel predefinito potrebbe essere diverso a seconda della versione di Oracle Linux.
- Elenca il kernel predefinito.
sudo grubby --default-kernel
/boot/vmlinuz-5.15.0-305.176.4.el8uek.x86_64
- Controllare il titolo del kernel predefinito.
sudo grubby --default-title
L'output corrisponde al valore visualizzato nel menu di avvio del kernel quando si avvia Oracle Linux
Oracle Linux Server (5.15.0-305.176.4.el8uek.x86_64 with Unbreakable Enterprise Kernel) 8.10
- Individuare la posizione del kernel predefinito nell'elenco di boot del kernel.
sudo grubby --default-index
0
- Elenca il kernel predefinito.
- Controllare il kernel attualmente in esecuzione nell'istanza.
uname -r
5.15.0-305.176.4.el8uek.x86_64
Il kernel predefinito e il kernel attualmente in esecuzione potrebbero non essere identici perché
- È stato installato un kernel più recente, ma non è stato eseguito il reboot del sistema
- Durante il reboot del sistema, è stato selezionato manualmente un kernel alternativo per essere il kernel operativo
- Il kernel predefinito è stato aggiornato manualmente ma il sistema non è stato riavviato dopo l'aggiornamento
Modifica kernel predefinito
Utilizzare il comando grubby per impostare il kernel di boot predefinito nella configurazione di GRUB 2.
- Da una riga di comando, utilizzando i privilegi di amministrazione connettersi all'istanza utilizzando SSH.
- Elenca il kernel predefinito.
sudo grubby --default-kernel
Ad esempio:
/boot/vmlinuz-5.15.0-305.176.4.el8uek.x86_64
- Utilizzare il comando grubby --set-default per modificare il kernel predefinito e assicurarsi di specificare il percorso completo del kernel. È possibile ottenere il percorso del kernel utilizzando una delle opzioni descritte nel Passo 2 dell'elenco dei kernel installati e del kernel predefinito.
Ad esempio:
sudo grubby --set-default /boot/vmlinuz-4.18.0-553.40.1.el8_10.x86_64
La modifica viene applicata immediatamente e persiste durante il reboot del sistema.
- Verificare la modifica del kernel predefinito.
sudo grubby --default-kernel
Ad esempio:
/boot/vmlinuz-4.18.0-553.40.1.el8_10.x86_64
- (Opzionale) Impostare il nuovo kernel predefinito sulla prima posizione nel menu di boot del kernel utilizzando il comando grubby --set-default-index.Il nuovo kernel predefinito viene visualizzato per primo nel menu di avvio del kernel, ad esempio:
sudo grubby --set-default-index=0
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
- Riavviare l'istanza per eseguire il boot con il nuovo kernel predefinito.
Modificare i parametri di boot del kernel
Utilizzare il comando grubby --update-kernel
per aggiungere nuovi argomenti, modificare i valori degli argomenti esistenti o rimuovere argomenti per un kernel specifico o per tutti i kernel. È possibile specificare più argomenti per ogni opzione in un elenco separato da spazi tra virgolette. È possibile aggiungere e rimuovere argomenti nella stessa operazione. Quando si utilizza l'opzione --args
, se un argomento esiste già, il nuovo valore sostituisce i vecchi valori.
- Da una riga di comando, utilizzando i privilegi di amministrazione connettersi all'istanza utilizzando SSH.
- Usare il comando
grubby --update-kernel
per modificare o aggiungere uno specifico argomento di boot del kernel. Ad esempio, aggiornare i parametri del kernel per modificare l'argomento LANG per:- tutti i kernel
sudo grubby --update-kernel=ALL --args LANG=en_GB.UTF-8
- un kernel
sudo grubby --update-kernel /boot/vmlinuz-5.4.17-2136.337.5.1.el7uek.x86_64 --args LANG=en_GB.UTF-8
- tutti i kernel
- Verificare che le modifiche siano state applicate.
sudo grubby --info=ALL
- tutti i kernel
index=0 kernel="/boot/vmlinuz-5.4.17-2136.337.5.1.el7uek.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" ...
- un kernel
index=0 kernel="/boot/vmlinuz-5.4.17-2136.337.5.1.el7uek.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_US.UTF-8 $tuned_params" ...
- tutti i kernel
- Riavviare l'istanza per eseguire il boot con la nuova configurazione del kernel.
Per modificare i parametri di boot del kernel senza grubby, modificare direttamente il file
/etc/default/grub
e modificare le impostazioni dei parametri di boot nella definizione GRUB_CMDLINE_LINUX
. Ad esempio, modificare LANG=en_US.UTF-8
in 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"
Per rendere effettive le modifiche al successivo reboot del sistema, ricreare la configurazione di GRUB 2: sudo grub2-mkconfig -o /boot/grub2/grub.cfg
Per ulteriori informazioni sui parametri kernel, vedere la documentazione Managing Kernels and System Boot relativa alla release Oracle Linux dell'istanza in uso.