În Ubuntu (și cred că și în Debian) există un script de sistem numit update-grub
care execută automat grub-mkconfig -o
cu calea corectă pentru fișierul de configurare grub.
Există vreo comandă similară pentru distribuțiile bazate pe Red Hat?
Dacă nu, cum știe sistemul unde este fișierul de configurare grub de actualizat atunci când este instalată o nouă versiune de nucleu?
Răspuns
Acțiuni specifice care trebuie să se întâmple când un pachet RPM este instalat sau eliminat sunt incluse în pachetul RPM în pre-instalare, post-instalare, pre-dezinstalare și post-dezinstalare secțiuni.
Pentru fiecare pachet RPM instalat puteți interoga baza de date RPM pentru scripturile exacte care sunt incluse cu comanda rpm
:
rpm -q --scripts <package-name>
Rularea acelei comenzi pe un pachet de nucleu pentru CentOS 6 revine printre altele:
postinstall scriptlet (using /bin/sh): <snip> /sbin/new-kernel-pkg --package kernel --install 2.6.32-431.17.1.el6.x86_64 || exit $?
Din manual:
new-kernel-package
– instrument pentru instalarea scriptului kernel
Comentarii
Răspuns
După ce am analizat scripturile din Fedora, îmi dau seama că calea fișierului de configurare este citită din link-ul simbolic /etc/grub2.conf
. Linia corectă grub2-mkconfig
este astfel:
grub2-mkconfig -o "$(readlink -e /etc/grub2.conf)"
După cum sa menționat în comentarii, ar putea fi /etc/grub2.cfg
, sau /etc/grub2-efi.cfg
pe un sistem UEFI. De fapt, ambele linkuri ar putea fi prezente în același timp și arătând către locații diferite . Semnalizatorul -e
către readlink
va fi eronat dacă fișierul țintă nu există, dar pe sistemul meu au existat ambele … Verificați comenzile , Cred.
Comentarii
- Pe CentOS 7, legăturile par a fi
/etc/grub2.cfg
- grub2-mkconfig –output = / boot / grub2 / grub.cfg pare a fi modul aprobat în manualul fedora
- Pentru mai mulți pași de grub CentOS 7, verificați wiki-ul oficial: wiki.centos.org/HowTos/Grub2
- Dacă aveți un sistem UEFI, ‘ Vreau să
sudo grub2-mkconfig -o "$(readlink /etc/grub2-efi.cfg)"
- Nu văd rost să fac readlink
Răspunde
Pe Fedora folosesc:
grub2-mkconfig -o "$(readlink -e /etc/grub2.cfg)"
deoarece executarea fără opțiune la readlink
returnează o cale relativă și grub2-mkconfig
dă o eroare:
$ 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
Folosesc -e
opțiune deci că, dacă linkul simbolic nu se rezolvă la un fișier care există, ieșirea se afișează pe stdout, așa că știu că a mers ceva greșit.
Din pagina de manual pentru readlink:
-e, --canonicalize-existing canonicalize by following every symlink in every component of the given name recursively, all components must exist
Răspuns
În Fedora, linkul simbolic /etc/grub2.cfg indică versiunea BIOS. Pe un sistem UEFI, utilizați:
$ sudo grub2-mkconfig -o /boot/efi/EFI/fedora/grub.cfg
În CentOS:
$ sudo grub2-mkconfig -o /boot/efi/EFI/centos/grub.cfg
În general, ai putea folosi în schimb:
$ sudo grub2-mkconfig -o $(readlink -f /etc/grub2-efi.cfg)
Răspunde
editează fișierul grub cu vi
sau vim
, salvați modificările și închideți editorul cu: wq!
Iată ce trebuie să executați pentru a actualiza grub în RedHat sau CentOS:
grub2-mkconfig -o /boot/grub2/grub.cfg
Răspuns
Pe documentația RedHat :
Modificările aduse
/etc/default/grub
necesită reconstruirea fișieruluigrub.cfg
după cum urmează:
Pe BIOS- mașini bazate, lansați următoarea comandă ca root:
~]# grub2-mkconfig -o /boot/grub2/grub.cfg
Pe mașinile bazate pe UEFI, emiteți următoarea comandă ca root:
~]# grub2-mkconfig -o /boot/efi/EFI/redhat/grub.cfg
Răspuns
Scriptul update-grub
din Ubuntu este de fapt doar un stub pentru grub-mkconfig
și poate fi adaptat la alte distribuții fără prea multă durere. Aici este în întregime:
#!/bin/sh set -e exec grub-mkconfig -o /boot/grub/grub.cfg "$@"
Acest lucru face efectiv ceea ce este recomandat în wiki CentOS , și în alte răspunsuri aici – singura diferență este că trebuie să schimbați grub
la grub2
în comandă și calea de ieșire .
Răspuns
Pe Fedora 32:
sudo grub2-mkconfig -o /boot/efi/EFI/fedora/grub.cfg
Răspuns
A funcționat pe CentOS Linux 8 –
sudo grub2-mkconfig --output=/boot/grub2/grub.cfg
Răspuns
În Ghidurile Fedora 33 oferă următoarele după schimbarea Grub
$ sudo grub2-mkconfig --output=/boot/grub2/grub.cfg
Și da, știu că această postare are 6 ani
/bin/kernel-install
. Vă rugăm să modificați răspunsul pentru a include aceste informații pentru referințe viitoare