Entspricht Update-Grub für RHEL / Fedora / CentOS-Systeme?

In Ubuntu (und ich denke auch in Debian) gibt es ein Systemskript namens update-grub, das automatisch grub-mkconfig -o mit dem richtigen Pfad für die Grub-Konfigurationsdatei.

Gibt es einen ähnlichen Befehl für Red Hat-basierte Distributionen?

Wenn nicht, wie Weiß das System, wo die Grub-Konfigurationsdatei aktualisiert werden muss, wenn eine neue Kernelversion installiert wird?

Antwort

Spezifische Aktionen, die Wenn ein RPM-Paket installiert oder entfernt wird, muss im RPM-Paket selbst vor der Installation, nach der Installation, vor der Deinstallation und nach der Deinstallation enthalten sein Abschnitte.

Für jedes installierte RPM-Paket können Sie die RPM-Datenbank nach den genauen Skripten abfragen, die im Befehl rpm enthalten sind:

rpm -q --scripts <package-name> 

Das Ausführen dieses Befehls auf einem Kernelpaket für CentOS 6 gibt unter anderem Folgendes zurück:

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

Aus dem Handbuch:

new-kernel-package – Tool zum Skripten der Kernelinstallation

Kommentare

  • Ausführen des gleichen Befehls unter Fedora 20 ergibt stattdessen /bin/kernel-install. Bitte bearbeiten Sie Ihre Antwort, um diese Informationen zur späteren Bezugnahme einzuschließen.
  • Genau deshalb habe ich meine Antwort mit den Schritten begonnen, die erforderlich sind, um dies herauszufinden. Ich denke, das Abfragen der Installationsskripte ist in der RPM-Welt wahrscheinlich ziemlich universell, um Ihnen zu helfen, zu verstehen, wie das Kernel-Update erfolgt. Auf diese Weise hält meine Antwort dem Test der Zeit viel besser stand, als nur die Benennung eines Tools / Befehls / Support-Skripts, das Sie bereits demonstriert haben, ist sehr release- und verteilungsabhängig.
  • Yeah @HBruijn ‚ ist richtig. Es gibt ‚ eine zu große Variabilität zwischen Fedora, RHEL und CentOS, um eine einzige Antwort zu liefern, und besser zu zeigen, wie man sie findet.

Antwort

Nach der Analyse der Skripte in Fedora stelle ich fest, dass der Pfad der Konfigurationsdatei aus dem Symlink /etc/grub2.conf gelesen wird . Die korrekte grub2-mkconfig Zeile lautet daher:

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

Wie in den Kommentaren angegeben, kann es sich um oder /etc/grub2-efi.cfg auf einem UEFI-System. Tatsächlich können beide Links gleichzeitig vorhanden sein und auf verschiedene Positionen verweisen . Das Flag -e für readlink wird ausgegeben, wenn die Zieldatei nicht vorhanden ist, aber auf meinem System beide vorhanden sind … Überprüfen Sie Ihre Befehle Ich denke.

Kommentare

  • Unter CentOS 7 scheinen die Links /etc/grub2.cfg
  • grub2-mkconfig –output = / boot / grub2 / grub.cfg scheint der im Fedora-Handbuch genehmigte Weg zu sein.
  • Weitere CentOS 7-spezifische Grub-Schritte finden Sie im offiziellen Wiki: wiki.centos.org/HowTos/Grub2
  • Wenn Sie ein UEFI-System haben, ‚ Ich möchte sudo grub2-mkconfig -o "$(readlink /etc/grub2-efi.cfg)"
  • Ich sehe keinen Sinn darin, Readlink zu machen

Antwort

Unter Fedora verwende ich:

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

, da die Ausführung ohne Option für readlink gibt einen relativen Pfad zurück und grub2-mkconfig gibt einen Fehler aus:

$ 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 

Ich verwende die -e Option also Wenn der Symlink nicht in eine vorhandene Datei aufgelöst wird, wird die Ausgabe auf stdout angezeigt, sodass ich weiß, dass ein Fehler aufgetreten ist.

Auf der Manpage für readlink:

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

Antwort

In Fedora verweist der Symlink /etc/grub2.cfg auf die BIOS-Version. Verwenden Sie auf einem UEFI-System Folgendes:

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

In CentOS:

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

Im Allgemeinen Sie können stattdessen Folgendes verwenden:

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

Siehe 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

Antwort

Bearbeiten Sie die Grub-Datei mit vi oder vim, speichere Änderungen und schließe den Editor mit: wq!

Dies ist das, was Sie ausführen müssen, um grub in RedHat oder CentOS zu aktualisieren:

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

Antwort

Gemäß der RedHat-Dokumentation :

Änderungen an /etc/default/grub erfordern die Neuerstellung der Datei grub.cfg wie folgt:

  • Im BIOS- Geben Sie den folgenden Befehl als root aus:

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

  • Geben Sie auf UEFI-basierten Computern ein Problem aus den folgenden Befehl als root:

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

Antwort

Das Skript update-grub in Ubuntu ist eigentlich nur ein stub für grub-mkconfig und kann ohne große Schmerzen an andere Distributionen angepasst werden. Hier ist es in seiner Gesamtheit:

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

Dies macht effektiv das, was im CentOS-Wiki und in anderen Antworten hier – der einzige Unterschied besteht darin, dass Sie grub in grub2 im Befehl und im Ausgabepfad ändern müssen .

Antwort

Auf Fedora 32:

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

Antwort

Arbeitete unter CentOS Linux 8 –

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

Meine Demo

Antwort

In den Fedora 33-Richtlinien wird nach dem Ändern von Grub

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

Und ja, ich weiß, dass dieser Beitrag 6 Jahre alt ist

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.