Equivalente de update-grub para sistemas RHEL / Fedora / CentOS?

30

No Ubuntu (e eu acho que também no Debian) existe um script de sistema chamado update-grub que automaticamente executa grub-mkconfig -o com o caminho correto para o arquivo de configuração do grub.

Existe algum comando similar para distribuições baseadas no Red Hat?

Se não, como o sistema sabe onde está o arquivo de configuração do grub para atualizar quando uma nova versão do kernel é instalada?

    
por pqnet 26.08.2014 / 12:08

6 respostas

14

Ações específicas que precisam acontecer quando um pacote RPM é instalado ou removido estão incluídas dentro do pacote RPM nas seções de pré-instalação, pós-instalação, pré-desinstalação e pós-desinstalação.

Para cada pacote RPM instalado, você pode consultar o banco de dados RPM para os scripts exatos incluídos com o comando rpm :

rpm -q --scripts <package-name>

A execução desse comando em um pacote do kernel para o CentOS 6 retorna entre outros:

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

Do manual:

new-kernel-package - tool to script kernel installation

    
por 26.08.2014 / 13:20
16

Após analisar os scripts no Fedora, percebo que o caminho do arquivo de configuração é lido no link simbólico /etc/grub2.conf . A linha correta grub2-mkconfig é assim:

grub2-mkconfig -o "$(readlink /etc/grub2.conf)"
    
por 26.08.2014 / 14:34
7

No Fedora eu uso:

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

porque a execução sem nenhuma opção para readlink retorna um caminho relativo e grub2-mkconfig dá um erro:

$ 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

Eu uso a opção -e para que, se o link simbólico não resolver um arquivo que exista, a saída seja exibida no stdout, então sei que algo deu errado.

A partir da página man do readlink:

      -e, --canonicalize-existing
          canonicalize  by  following  every symlink in every component of
          the given name recursively, all components must exist
    
por 11.01.2017 / 07:05
3

O link simbólico /etc/grub2.cfg aponta para a versão do BIOS. Em um sistema UEFI, use:

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

Você também pode usar:

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

Veja link

    
por 25.12.2017 / 20:19
0

edite o arquivo grub com vi ou vim , salve as alterações e feche o editor com: wq!

Isso é o que você precisa executar para atualizar o grub no RedHat ou no CentOS:

grub2-mkconfig -o /boot/grub2/grub.cfg
    
por 19.10.2016 / 20:20
0

O script update-grub no Ubuntu é na verdade apenas um esboço para grub-mkconfig / a>, e pode ser adaptado para outras distros sem muita dor. Aqui está na sua totalidade:

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

Isso efetivamente faz o que é recomendado no wiki do CentOS , e em outras respostas aqui - a única A diferença é que você precisa alterar grub para grub2 no comando e no caminho de saída.

    
por 14.05.2017 / 11:56