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
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)
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 filegrub.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
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
/bin/kernel-install
. Modifica la tua risposta per includere queste informazioni per riferimento futuro