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

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

Existe algum comando semelhante 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?

Resposta

Ações específicas que precisam acontecer quando um pacote RPM é instalado ou removido estão incluídos no próprio pacote RPM na pré-instalação, pós-instalação, pré-desinstalação e pós-desinstalação Seções.

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

rpm -q --scripts <package-name> 

A execução desse comando em um pacote do kernel para 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 – ferramenta para criar script de instalação do kernel

Comentários

  • executando o mesmo comando no Fedora 20 produz /bin/kernel-install em vez disso. Edite sua resposta para incluir essas informações para referência futura.
  • É exatamente por isso que comecei minha resposta com as etapas necessárias para descobrir. Acho que consultar os scripts de instalação provavelmente será bastante universal no mundo RPM para ajudá-lo a entender como a atualização do kernel é efetuada. Dessa forma, minha resposta resistirá ao teste do tempo muito melhor do que apenas nomear uma ferramenta / comando / script de suporte que você já demonstrou ser muito dependente do lançamento e da distribuição.
  • Sim @HBruijn ‘ está certo. Há ‘ muita variabilidade no Fedora, RHEL e CentOS para fornecer uma única resposta, melhor mostrar como encontrá-la.

Resposta

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

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

Conforme observado nos comentários, pode ser /etc/grub2.cfg ou /etc/grub2-efi.cfg em um sistema UEFI. Na verdade, ambos os links podem estar presentes ao mesmo tempo e apontando para locais diferentes . O sinalizador -e para readlink apresentará um erro se o arquivo de destino não existir, mas em meu sistema ambos existiam … Verifique seus comandos , Eu acho.

Comentários

  • No CentOS 7, os links parecem ser /etc/grub2.cfg
  • grub2-mkconfig –output = / boot / grub2 / grub.cfg parece ser a forma aprovada no manual do fedora
  • Para mais etapas grub específicas do CentOS 7, verifique o wiki oficial: wiki.centos.org/HowTos/Grub2
  • Se você tem um sistema UEFI você ‘ ll want sudo grub2-mkconfig -o "$(readlink /etc/grub2-efi.cfg)"
  • Não vejo sentido em fazer readlink

Resposta

No Fedora eu uso:

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

porque executando sem opção para readlink retorna um caminho relativo e grub2-mkconfig fornece 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 o -e então que se o link simbólico não resolver para um arquivo existente, a saída será exibida em stdout, então eu sei que algo deu errado.

A partir da página do manual para readlink:

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

Resposta

No Fedora, 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 

No CentOS:

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

Geralmente, você pode usar em seu lugar:

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

Veja 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

Resposta

editar 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 CentOS:

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

Resposta

De acordo com a documentação do RedHat :

Mudanças em /etc/default/grub requerem a reconstrução do arquivo grub.cfg da seguinte forma:

  • No BIOS- máquinas baseadas, emita o seguinte comando como root:

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

  • Em máquinas baseadas em UEFI, problema o seguinte comando como root:

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

Resposta

O update-grub script no Ubuntu é na verdade apenas um stub para grub-mkconfig e pode ser adaptado a outras distros sem muita dor. Aqui está em 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 diferença é que você precisa alterar grub para grub2 no comando e no caminho de saída .

Resposta

No Fedora 32:

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

Resposta

Funcionou no CentOS Linux 8 –

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

Minha demonstração

Resposta

Nas Diretrizes do Fedora 33 fornece o seguinte após alterar o Grub

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

E sim, eu sei que esta postagem tem 6 anos

Deixe uma resposta

O seu endereço de email não será publicado. Campos obrigatórios marcados com *