Equivalente di update-grub per i sistemi RHEL / Fedora / CentOS?

In Ubuntu (e immagino anche in Debian) cè uno script di sistema chiamato update-grub che viene eseguito automaticamente grub-mkconfig -o con il percorso corretto per il file di configurazione di grub.

Esiste un comando simile per le distribuzioni basate su Red Hat?

In caso contrario, come il sistema sa dove si trova il file di configurazione di grub da aggiornare quando viene installata una nuova versione del kernel?

Risposta

Azioni specifiche che devono verificarsi quando un pacchetto RPM viene installato o rimosso sono inclusi allinterno del pacchetto RPM stesso nella pre-installazione, post-installazione, pre-disinstallazione e post-disinstallazione sezioni.

Per ogni pacchetto RPM installato è possibile interrogare il database RPM per gli script esatti inclusi con il comando rpm:

rpm -q --scripts <package-name> 

Lesecuzione di quel comando su un pacchetto del kernel per CentOS 6 restituisce tra gli altri:

postinstall scriptlet (using /bin/sh): <snip> /sbin/new-kernel-pkg --package kernel --install 2.6.32-431.17.1.el6.x86_64 || exit $? 

Dal manuale:

new-kernel-package – strumento per eseguire lo script dellinstallazione del kernel

Commenti

  • eseguendo lo stesso comando su Fedora 20 restituisce invece /bin/kernel-install. Modifica la tua risposta per includere queste informazioni per riferimento futuro
  • Questo è esattamente il motivo per cui ho iniziato la mia risposta con i passaggi necessari per scoprirlo. Penso che interrogare gli script di installazione sia probabilmente abbastanza universale nel mondo RPM per aiutarti a capire come viene effettuato laggiornamento del kernel. In questo modo la mia risposta resisterà alla prova del tempo molto meglio del solo nominare uno strumento / comando / script di supporto che hai già dimostrato dipende molto dal rilascio e dalla distribuzione.
  • Sì @HBruijn ‘ ha ragione. ‘ è troppa variabilità tra Fedora, RHEL e CentOS per fornire ununica risposta, meglio mostrare come trovarla.

Risposta

Dopo aver analizzato gli script in Fedora, mi rendo conto che il percorso del file di configurazione viene letto dal link simbolico /etc/grub2.conf . La riga grub2-mkconfig corretta è quindi:

grub2-mkconfig -o "$(readlink -e /etc/grub2.conf)" 

Come indicato nei commenti, potrebbe essere /etc/grub2.cfg o /etc/grub2-efi.cfg su un sistema UEFI. In realtà, entrambi i collegamenti potrebbero essere presenti contemporaneamente e puntano a posizioni diverse . Il -e flag a readlink verrà visualizzato in errore se il file di destinazione non esiste, ma sul mio sistema esistevano entrambi … Controlla i tuoi comandi , Immagino.

Commenti

  • Su CentOS 7 i collegamenti sembrano essere /etc/grub2.cfg
  • grub2-mkconfig –output = / boot / grub2 / grub.cfg sembra essere il modo approvato nel manuale fedora
  • Per ulteriori passaggi di grub specifici per CentOS 7, controlla il wiki ufficiale: wiki.centos.org/HowTos/Grub2
  • Se disponi di un sistema UEFI, ‘ voglio sudo grub2-mkconfig -o "$(readlink /etc/grub2-efi.cfg)"
  • Non vedo alcun motivo per fare readlink

Risposta

Su Fedora utilizzo:

grub2-mkconfig -o "$(readlink -e /etc/grub2.cfg)" 

perché in esecuzione senza opzioni per readlink restituisce un percorso relativo e grub2-mkconfig restituisce un errore:

$ ls -l /etc/grub2.cfg lrwxrwxrwx. 1 root root 22 Dec 10 2015 /etc/grub2.cfg -> ../boot/grub2/grub.cfg $ readlink /etc/grub2.cfg ../boot/grub2/grub.cfg $ sudo grub2-mkconfig -o "$(readlink /etc/grub2.cfg)" /usr/sbin/grub2-mkconfig: line 244: ../boot/grub2/grub.cfg.new: No such file or directory 

Uso -e opzione così che se il link simbolico non si risolve in un file esistente, loutput viene visualizzato su stdout, quindi so che qualcosa è andato storto.

Dalla pagina man di readlink:

 -e, --canonicalize-existing canonicalize by following every symlink in every component of the given name recursively, all components must exist 

Risposta

In Fedora, il collegamento simbolico /etc/grub2.cfg punta alla versione del BIOS. Su un sistema UEFI, utilizza:

$ sudo grub2-mkconfig -o /boot/efi/EFI/fedora/grub.cfg 

In CentOS:

$ sudo grub2-mkconfig -o /boot/efi/EFI/centos/grub.cfg 

In generale, potresti utilizzare invece:

$ sudo grub2-mkconfig -o $(readlink -f /etc/grub2-efi.cfg) 

Vedi https://docs.fedoraproject.org/en-US/fedora/f27/system-administrators-guide/kernel-module-driver-configuration/Working_with_the_GRUB_2_Boot_Loader/index.html#sec-Editing_a_Menu_Entry

Risposta

modifica file grub con vi o vim, salva le modifiche e chiudi leditor con: wq!

Questo è ciò di cui hai bisogno per aggiornare grub in RedHat o CentOS:

grub2-mkconfig -o /boot/grub2/grub.cfg 

Risposta

Secondo la documentazione di RedHat :

Le modifiche a /etc/default/grub richiedono la ricostruzione del file grub.cfg come segue:

  • Su BIOS- macchine basate su, emettere il seguente comando come root:

    ~]# grub2-mkconfig -o /boot/grub2/grub.cfg

  • Su macchine basate su UEFI, problema il seguente comando come root:

    ~]# grub2-mkconfig -o /boot/efi/EFI/redhat/grub.cfg

Risposta

Lo script update-grub in Ubuntu è in realtà solo un stub per grub-mkconfig e può essere adattato ad altre distribuzioni senza troppi problemi. Eccolo nella sua interezza:

#!/bin/sh set -e exec grub-mkconfig -o /boot/grub/grub.cfg "$@" 

Questo fa efficacemente ciò che è raccomandato nel wiki CentOS , e in altre risposte qui – lunica differenza è che devi cambiare grub in grub2 nel comando e nel percorso di output .

Risposta

Su Fedora 32:

 sudo grub2-mkconfig -o /boot/efi/EFI/fedora/grub.cfg  

Risposta

Ha lavorato su CentOS Linux 8 –

sudo grub2-mkconfig --output=/boot/grub2/grub.cfg 

My Demo

Answer

Nelle linee guida di Fedora 33 fornisce quanto segue dopo aver cambiato Grub

$ sudo grub2-mkconfig --output=/boot/grub2/grub.cfg

E sì, so che questo post ha 6 anni

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *