it-swarm.com.de

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 ausführt.

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

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

42
pqnet

Spezifische Aktionen, die ausgeführt werden müssen, wenn ein RPM-Paket installiert oder entfernt wird, sind innerhalb des RPM-Pakets 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 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 zur Skript-Kernel-Installation

14
HBruijn

Nach der Analyse der Skripte in Fedora stelle ich fest, dass der Pfad der Konfigurationsdatei über den Symlink /etc/grub2.conf Gelesen wird. Die richtige grub2-mkconfig Zeile lautet also:

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

Wie in den Kommentaren erwähnt, kann es sich bei einem UEFI-System um /etc/grub2.cfg Oder /etc/grub2-efi.cfg Handeln. Tatsächlich können beide Links gleichzeitig vorhanden sein und zeigt auf verschiedene Orte. 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, denke ich.

28
pqnet

Auf Fedora benutze ich:

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

da die Ausführung ohne Option für readlink einen relativen Pfad zurückgibt 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 das -e Option, 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
11
Setaa

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

7
theJPster

bearbeiten Sie die Grub-Datei mit vi oder vim, speichern Sie die Änderungen und schließen Sie 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
2
EugeneVM

Das update-grub - Skript 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 "[email protected]"

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

0
mwfearnley

Arbeitete unter CentOS Linux 8 -

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

My Demo

0
ShubhamDubey