Echivalent cu update-grub pentru sistemele RHEL / Fedora / CentOS?

Î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

  • executând aceeași comandă pe Fedora 20 produce în schimb /bin/kernel-install. Vă rugăm să modificați răspunsul pentru a include aceste informații pentru referințe viitoare
  • De aceea am început răspunsul meu cu pașii necesari pentru a afla. Cred că interogarea scripturilor de instalare este probabil să fie destul de universală în lumea RPM, pentru a vă ajuta să înțelegeți cum este efectuată actualizarea kernel-ului. În acest fel, răspunsul meu va rezista testului de timp mult mai bine decât numirea unui instrument / comandă / suport-script, pe care l-ați demonstrat deja că depinde foarte mult de versiune și distribuție.
  • Da @HBruijn ‘ are dreptate. Există ‘ prea mare variabilitate între Fedora, RHEL și CentOS pentru a oferi un singur răspuns, mai bine pentru a arăta cum să îl găsiți.

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) 

Vezi 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

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șierului grub.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 

Demo-ul meu

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

Lasă un răspuns

Adresa ta de email nu va fi publicată. Câmpurile obligatorii sunt marcate cu *