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)
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 Dateigrub.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
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