Utilizzo di grubby per gestire i kernel
Utilizzare il comando grubby
per gestire la configurazione di GRUB 2 sul sistema, inclusa la selezione del kernel di boot predefinito o la configurazione di parametri di boot dalla riga di comando aggiuntivi del kernel da utilizzare al boot. Per ulteriori informazioni, vedere la pagina del manuale grubby(8)
. Lo strumento grubby può essere utilizzato per leggere le informazioni e apportare modifiche persistenti al file grub.cfg
. Consente, ad esempio, di modificare le voci di menu GRUB2 per specificare gli argomenti da passare a un kernel all'avvio e alla modifica del kernel predefinito.
Elenca i kernel installati e il kernel predefinito
È possibile utilizzare il comando grubby per visualizzare tutti i kernel installati in un'istanza di Oracle Linux, le informazioni di configurazione sui kernel, il kernel predefinito e il kernel attualmente in esecuzione.
- Da una riga di comando, utilizzando i privilegi amministrativi, connettersi all'istanza utilizzando SSH.
- Elencare i kernel installati utilizzando una delle seguenti opzioni. L'elenco dei kernel installati potrebbe essere diverso a seconda della versione di Oracle Linux.
- 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
grubby
e l'opzione di 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 la visualizzazione nel menu di GRUB all'avvio. Ad esempio, utilizzando il numero e il titolo dell'indice nell'output precedente, il menu GRUB avrà il seguente aspetto:
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
- Elencare il kernel già configurato come kernel predefinito corrente da utilizzare al boot e il titolo e la posizione, come mostrato nel menu di GRUB. 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 GRUB2 all'avvio di 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
Se il kernel predefinito e il kernel attualmente in esecuzione non sono identici, i motivi sottostanti potrebbero essere i seguenti:
- È stato installato un kernel più recente, ma non è stato eseguito il reboot del sistema
- Durante un reboot del sistema, è stato selezionato manualmente un kernel alternativo come kernel operativo
- Il kernel predefinito è stato aggiornato manualmente ma il sistema non è stato riavviato dopo l'aggiornamento
Modifica kernel predefinito
È possibile seguire una delle due opzioni per impostare il kernel predefinito in GRUB 2, utilizzando il comando grubby, scegliere una delle seguenti opzioni:
- Da una riga di comando, utilizzando i privilegi amministrativi, connettersi all'istanza utilizzando SSH.
- Elenca il kernel predefinito.
sudo grubby --default-kernel
/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 kernel del percorso completo. È possibile ottenere il percorso del kernel utilizzando una delle opzioni del passo 2 dell'elenco dei kernel installati e del kernel predefinito.
sudo grubby --set-default /boot/vmlinuz-4.18.0-553.40.1.el8_10.x86_64
La modifica ha effetto immediato e persiste durante il reboot del sistema.
- Verificare la modifica del kernel predefinito.
sudo grubby --default-kernel
/boot/vmlinuz-4.18.0-553.40.1.el8_10.x86_64
- (Opzionale) Impostare il kernel predefinito sulla prima posizione nell'elenco di boot del kernel utilizzando il comando grubby --set-default-index.Il menu di GRUB avrà il seguente aspetto:
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
È possibile aggiornare la configurazione di avvio di GRUB 2 per un kernel specifico o tra tutti i kernel installati nell'istanza di Oracle Linux.
Utilizzare il comando grubby --update-kernel
per aggiungere nuovi argomenti, modificare i valori degli argomenti esistenti o rimuovere gli argomenti per un kernel specifico o per tutti i kernel. È possibile specificare più argomenti per ciascuna opzione in una lista separata da spazi racchiusa 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 amministrativi, connettersi all'istanza utilizzando SSH.
- Per aggiornare tutte le voci del kernel in modo che utilizzino un argomento di boot specifico del kernel, utilizzare
grubby --update-kernel=ALL
. Ad esempio, modificare l'argomento LANG:sudo grubby --update-kernel=ALL --args LANG=en_GB.UTF-8
- Verificare che le modifiche siano diventate effettive
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" ...
- Riavviare l'istanza per eseguire il boot con la nuova configurazione del kernel.