Esta é uma pergunta de acompanhamento após
Como fazer uma unidade flash BIOS/UEFI com criptografia de disco completo
Eu segui as respostas nesta pergunta e criei uma instalação completa criptografada do Ubuntu 20.04 em uma unidade flash USB que inicializou a partir do BIOS ou de computadores configurados com UEFI.
Com o tempo, usei esta unidade flash USB instalada no Ubuntu em um computador apenas com BIOS e o mantive atualizado com segurança e outras atualizações. Agora, o computador UEFI não inicializa a partir desta unidade USB. Quando seleciono o Ubuntu no GRUB, ele me mostra o erro:
error file '/vmlinuz-5.8.0-48-generic' not found.
you need to load the kernel first.
Este kernel específico não é instalado, pois foi substituído por kernels mais recentes durante a segurança e outras atualizações.
Como recupero a funcionalidade de inicialização UEFI para esta instalação do Ubuntu baseada em USB?
O conto de dois
grub.cfg
Esta instalação de unidade flash USB tem dois separados
grub.cfg
em dois locais. Um é usado para inicializar computadores somente com BIOS e o outro é usado para inicializar computadores UEFI. Quando novos kernels são instalados e os antigos são removidos, o processo de instalação atualiza apenas o arquivo grub.cfg que foi usado para a inicialização atual. Como resultado, os doisgrub.cfg
arquivos ficam fora de sincronia.O arquivo necessário para a inicialização do BIOS está em:
O arquivo necessário para a inicialização UEFI está em:
Observe que, como esta é uma instalação criptografada, a partição de inicialização tem o ponto de montagem
/boot
e a partição ESP tem o ponto de montagem/boot/efi
.Solução
Substitua o grub.cfg mais antigo pela versão mais recente. No meu caso, o BIOS era mais recente. Então usei o comando:
Isso resolveu o problema por enquanto.
Um roteiro
Eu escrevi um pequeno script chamado
grubsync.sh
para copiar e substituir o mais antigogrub.cfg
pelo mais novo, se eles forem diferentes com base em qual modo (BIOS ou UEFI) o USB inicializou.O nome do host da minha instalação completa USB é
USB123
. Altere-o antes de executar o script. Você precisará executar este script comsudo
prefixo.A partir de agora, tenho que executar esse script toda vez que houver uma atualização do kernel. Com alguns ajustes, talvez eu consiga executá-lo a cada inicialização usando o crontab.
Espero que isto ajude