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
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)
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 arquivogrub.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
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
/bin/kernel-install
em vez disso. Edite sua resposta para incluir essas informações para referência futura.