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

Dans Ubuntu (et je suppose que dans Debian aussi), il existe 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 lorsquune nouvelle version du noyau est installée?

Réponse

Actions spécifiques qui doivent se produire lorsquun package RPM est installé ou supprimé sont inclus dans le package RPM lui-même en pré-installation, post-installation, pré-désinstallation et post-désinstallation sections.

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

rpm -q --scripts <package-name> 

Lexécution de cette commande sur un paquet 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 $? 

Extrait du manuel:

new-kernel-package – outil de script dinstallation du noyau

Commentaires

  • exécutant la même commande sur Fedora 20 renvoie /bin/kernel-install à la place. Veuillez modifier votre réponse pour inclure ces informations pour référence future
  • Cest exactement pourquoi jai commencé ma réponse par les étapes nécessaires pour le découvrir. Je pense que linterrogation des scripts dinstallation est susceptible dêtre assez universelle dans le monde RPM pour vous aider à comprendre comment la mise à jour du noyau est effectuée. De cette façon, ma réponse résistera bien mieux à lépreuve du temps que de nommer uniquement un outil / une commande / un script de support dont vous avez déjà démontré quil dépend beaucoup de la version et de la distribution.
  • Ouais @HBruijn ‘ a raison. Il y a ‘ trop de variabilité entre Fedora, RHEL et CentOS pour fournir une réponse unique, mieux vaut montrer comment la trouver.

Réponse

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 ligne grub2-mkconfig est donc:

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

Comme indiqué dans les commentaires, il peut sagir de /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 . Lindicateur -e à readlink affichera une erreur si le fichier cible nexiste pas, mais sur mon système les deux existaient … Vérifiez vos commandes , Je suppose.

Commentaires

  • Sur CentOS 7, les liens semblent être /etc/grub2.cfg
  • grub2-mkconfig –output = / boot / grub2 / grub.cfg semble être la méthode approuvée dans le manuel de fedora
  • Pour plus détapes grub spécifiques à CentOS 7, consultez le wiki officiel: wiki.centos.org/HowTos/Grub2
  • Si vous avez un système UEFI, ‘ Je veux sudo grub2-mkconfig -o "$(readlink /etc/grub2-efi.cfg)"
  • Je ne vois aucun intérêt à faire readlink

Réponse

Sur Fedora, jutilise:

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

car lexé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 

Jutilise le -e donc que si le lien symbolique ne se résout pas en un fichier existant, la sortie saffiche sur stdout pour que je sache que quelque chose sest mal passé.

De 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 

Réponse

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 général, vous pouvez utiliser à la place:

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

Voir 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

Réponse

modifier 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 

Réponse

Selon la documentation RedHat :

Les modifications apportées à /etc/default/grub nécessitent la reconstruction du fichier grub.cfg comme suit:

  • Sur le BIOS- machines basées sur les machines, exécutez la commande suivante en tant que root:

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

  • Sur les machines basées sur UEFI, problème la commande suivante en tant que root:

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

Réponse

Le script update-grub dans Ubuntu nest en fait quun stub pour grub-mkconfig , et il peut être adapté à dautres distributions sans trop de peine. 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 dautres réponses ici – la seule différence est que vous devez changer grub en grub2 dans la commande et le chemin de sortie .

Réponse

Sur Fedora 32:

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

Réponse

Travaillé sous CentOS Linux 8 –

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

Ma démo

Réponse

Dans les directives de Fedora 33, il donne ce qui suit après avoir changé Grub

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

Et oui je sais que ce post a 6 ans

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *