update-grub
falhou com uma mensagem de erro
# update-grub
bash: update-grub: command not found
@GAD3R Saída de
# [ -d /sys/firmware/efi ] && echo EFI || echo legacy
legacy
Note1 Eu instalei a versão Debian 10 Buster Alpha 3 (Xfce) usando o instalador iso do CD amd64 usando uma instalação padrão (exceto que eu removi print server
e adicionei o ssh server
).
Note2 usei a conta root ( su root
).
Soluções (as melhores primeiro)
su - root
em vez desu root
- melhor solução (graças ao Rui)Descobertas
Isso aconteceu porque o PATH funciona de uma maneira muito estranha (na verdade funciona como projetado).
regular user login
-> ambiente PATH não contém /usr/sbin => opinião: funciona como projetado, bastante lógicosu root
-> direitos de administrador, mas o ambiente está faltando /usr/sbin:/sbin => opinião: funciona como projetado, mas ilógico, porque uma conta com nível de acesso root deve ser capaz de executar comandos do sbin sem adicionar o caminho ao arquivo binários manualmentesu - root
-> direitos de administrador, /usr/sbin no caminho => opinião: funciona como projetado, bastante lógicoUm pouco mais de fundo
Existem dois PATH definidos em /etc/login.defs, mas a menos que eu inicie
su -
ousu - root
, vou obter o ENV_PATH. Eu sei que isso foi projetado dessa maneira, para manter o ambiente do usuário real, mas neste caso único, realmente me confunde, por que não adicionar automaticamente/usr/sbin
e/sbin
ao caminho de um "usuário comum" após um sucessosu root
Solução de problemas
Descobri que existe um
update-grub
comando em/usr/sbin
.Executei, apenas para obter a próxima mensagem de erro.
Procurei
grub-mkconfig
e encontrei em/usr/sbin/grub-mkconfig
. Então me ocorreu, vamos ver como é oupdate-grub
roteiro?Modificado /usr/sbin/update-grub para chamar
grub-mkconfig
por seu caminho explícito ...... então chamado
update-grub
com seu caminho explícito e tada, funcionou!Conclusão
Isso deve ser algo sobre o PATH
Primeiro atualize sua lista de pacotes local:
Encontre o modo de inicialização correto:
então, a reinstalação forçada do pacote grub para o
grub-legacy
pacote herdado está lá e para o efigrub-efi
(suponho que o modo de inicialização seja EFI):Se o problema ainda não for resolvido, tente isso em:
update-grub
command é apenas um script que executa agrub-mkconfig
ferramenta para gerar um arquivo grub.cfg. Veja a documentação do Archlinux GRUBRef.:
Deste jeito:
A palavra "sudo" faz parte do comando.
Sim, é simples.
Você pode forçar a reinstalação de
grub
: