web-dev-qa-db-fra.com

Équivalent de update-grub pour les systèmes RHEL / Fedora / CentOS?

Dans Ubuntu (et je suppose aussi dans Debian) il y a un script système nommé update-grub qui exécute automatiquement grub-mkconfig -o avec le chemin correct pour le fichier de configuration grub.

Existe-t-il une commande similaire pour les distributions basées sur Red Hat?

Sinon, comment le système sait-il où se trouve le fichier de configuration grub à mettre à jour lorsqu'une nouvelle version du noyau est installée?

42
pqnet

Des actions spécifiques qui doivent se produire lorsqu'un package RPM est installé ou supprimé sont incluses dans le package RPM lui-même dans les sections pré-installation, post-installation, pré-désinstallation et post-désinstallation.

Pour chaque package RPM installé, vous pouvez interroger la base de données RPM pour les scripts exacts qui sont inclus avec la commande rpm:

rpm -q --scripts <package-name>

L'exécution de cette commande sur un package de noyau pour CentOS 6 renvoie entre autres:

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

Du manuel:

new-kernel-package - outil pour installer le script du noyau

14
HBruijn

Après avoir analysé les scripts dans Fedora, je me rends compte que le chemin du fichier de configuration est lu à partir du lien symbolique /etc/grub2.conf. La bonne grub2-mkconfig la ligne est donc:

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

Comme indiqué dans les commentaires, il pourrait être /etc/grub2.cfg, ou /etc/grub2-efi.cfg sur un système UEFI. En fait, les deux liens peuvent être présents en même temps et pointant vers des emplacements différents. Le -e flag to readlink affichera une erreur si le fichier cible n'existe pas, mais sur mon système les deux existaient ... Vérifiez vos commandes, je suppose.

28
pqnet

Sur Fedora j'utilise:

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

car l'exécution sans option de readlink renvoie un chemin relatif et grub2-mkconfig donne une erreur:

$ 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

Je utilise l -e option pour que si le lien symbolique ne se résout pas en un fichier qui existe, la sortie s'affiche sur stdout, donc je sais que quelque chose s'est mal passé.

Depuis la page de manuel de readlink:

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

Dans Fedora, le lien symbolique /etc/grub2.cfg pointe vers la version du BIOS. Sur un système UEFI, utilisez:

$ Sudo grub2-mkconfig -o /boot/efi/EFI/Fedora/grub.cfg

Dans CentOS:

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

En règle générale, vous pouvez utiliser à la place:

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

Voir 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

éditez le fichier grub avec vi ou vim, enregistrez les modifications et fermez l'éditeur avec: wq!

Voici ce que vous devez exécuter pour mettre à jour grub dans RedHat ou CentOS:

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

Le update-grub le script dans Ubuntu n'est en fait qu'un stub pour grub-mkconfig , et il peut être adapté à d'autres distributions sans trop de douleur. Le voici dans son intégralité:

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

Cela fait effectivement ce qui est recommandé dans le wiki CentOS , et dans d'autres réponses ici - la seule différence est que vous devez changer grub en grub2 dans la commande et le chemin de sortie.

0
mwfearnley

A travaillé sur CentOS Linux 8 -

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

My Demo

0
ShubhamDubey