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


36

In Ubuntu (und ich denke auch in Debian) gibt es ein System-Skript mit dem Namen, update-grubdas automatisch grub-mkconfig -omit dem richtigen Pfad für die Grub-Konfigurationsdatei ausgeführt wird.

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

Wenn nicht, woher weiß das System, wo sich die zu aktualisierende Grub-Konfigurationsdatei befindet, wenn eine neue Kernelversion installiert wird?

Antworten:


14

Bestimmte Aktionen, die beim Installieren oder Entfernen eines RPM-Pakets ausgeführt werden müssen, sind im RPM-Paket selbst in den Abschnitten vor der Installation, nach der Installation, vor der Deinstallation und nach der Deinstallation enthalten.

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

rpm -q --scripts <package-name>

Das Ausführen dieses Befehls auf einem Kernel-Paket 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 zur Skript-Kernel-Installation


2
Wenn Sie den gleichen Befehl auf Fedora 20 ausführen, erhalten Sie /bin/kernel-installstattdessen. Bitte bearbeiten Sie Ihre Antwort, um diese Informationen als zukünftige Referenz aufzunehmen
— pqnet

3
Genau deshalb habe ich meine Antwort mit den Schritten begonnen, die nötig sind, um es herauszufinden. Ich denke, dass das Abfragen der Installationsskripte in der RPM-Welt ziemlich universell ist, um zu verstehen, wie das Kernel-Update ausgeführt wird. Auf diese Weise übersteht meine Antwort den Test der Zeit viel besser, als nur ein Tool / Befehl / Support-Skript zu benennen, das Sie bereits demonstriert haben und das sehr von der Veröffentlichung und Distribution abhängig ist.
— HBruijn

3
Yeah @ HBruijn hat recht. Die Unterschiede zwischen Fedora, RHEL und CentOS sind zu groß, um eine einzige Antwort zu liefern, um besser zu zeigen, wie man sie findet.
— slm

24

Nach der Analyse der Skripte in Fedora stelle ich fest, dass der Pfad der Konfigurationsdatei aus dem Symlink gelesen wird /etc/grub2.conf. Die richtige grub2-mkconfigZeile lautet also:

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

Wie in den Kommentaren erwähnt, könnte es sein /etc/grub2.cfg, oder /etc/grub2-efi.cfgauf einem UEFI - System. Tatsächlich können beide Links gleichzeitig vorhanden sein und auf unterschiedliche Stellen verweisen . Das -eFlag to readlinkwird fehlschlagen, wenn die Zieldatei nicht vorhanden ist, aber auf meinem System beide vorhanden sind ... Überprüfen Sie Ihre Befehle, denke ich.


5
Auf CentOS 7 scheinen die Links zu sein/etc/grub2.cfg
— Anthon

6
grub2-mkconfig --output = / boot / grub2 / grub.cfg scheint der genehmigte Weg im Fedora-Handbuch zu sein
— Kendrick

1
Weitere CentOS 7-spezifische Grub-Schritte finden Sie im offiziellen Wiki: wiki.centos.org/HowTos/Grub2
— sshow

2
Wenn Sie ein UEFI-System haben, wollen Siesudo grub2-mkconfig -o "$(readlink /etc/grub2-efi.cfg)"
— Craig Ringer

10

Auf Fedora verwende ich:

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

da die Ausführung ohne Option readlinkeinen relativen Pfad zurückgibt und grub2-mkconfigeinen Fehler ausgibt:

$ 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 -eOption, damit die Ausgabe auf stdout angezeigt wird, wenn der Symlink nicht in eine vorhandene Datei aufgelöst wird, damit ich weiß, dass ein Fehler aufgetreten ist.

Von 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

6

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

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

In CentOS:

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

Im Allgemeinen können Sie stattdessen Folgendes verwenden:

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

Siehe https://docs.fedoraproject.org/f27/system-administrators-guide/kernel-module-driver-configuration/Working_with_the_GRUB_2_Boot_Loader.html#sec-Editing_a_Menu_Entry


2

editiere die grub Datei mit vioder vim, speichere die Änderungen und schließe den Editor mit: wq!

Folgendes müssen Sie ausführen, um grub in RedHat oder CentOS zu aktualisieren:

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

0

Das update-grubSkript in Ubuntu ist eigentlich nur ein Stummelgrub-mkconfig und kann ohne allzu 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 "$@"

Diese effektiv tut , was in dem empfohlene CentOS Wiki , und in anderen Antworten hier - der einzige Unterschied ist , dass Sie ändern müssen , grubum grub2in dem Befehl und der Ausgangspfad.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.