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
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)
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 fichiergrub.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
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
/bin/kernel-install
à la place. Veuillez modifier votre réponse pour inclure ces informations pour référence future