Recentemente, adicionei um novo disco ao meu computador. Eu tinha um slot SATA livre, então nada mais mudou. Alguns dias após a inserção do disco, o computador parou de inicializar.
Eu uso Debian Bookworm. Eu tenho uma partição criptografada que contém um LVM com várias partições virtuais, incluindo a partição raiz.
Normalmente, após o Grub, sou solicitado a fornecer a senha sda2_crypt
. Agora o Grub passa, então o computador trava por um tempo e eu pouso em algo que acho que é o BusyBox me dizendo que algum comando expirou. Eu tentei correr, sudo grub-mkconfig
mas não ajudou.
Percebi que a inicialização falha apenas para um Kernel mais recente. Tentar inicializar o kernel antigo ainda funciona.
Descobriu-se que, ao adicionar um segundo disco, as letras da unidade mudaram. O disco que contém o sistema de arquivos raiz era
/dev/sda
anterior, mas se tornou/dev/sdb
. Isso tornou impossível para o sistema descriptografar a partição raiz.Observe que o Grub estava bom, ele carregou o Kernel corretamente. Assim, todas as tentativas de reparar o sistema direcionado ao Grub estavam fadadas ao fracasso.
O shell que apresentou o erro foi um
initramfs
, não um BusyBox. Ele permite corrigir erros para que o processo de inicialização possa continuar. Uma seção dedicada nesta resposta explica como fazer isso.Outra seção explica como corrigir permanentemente o problema.
Como corrigir temporariamente o problema em
initramfs
Na verdade é muito simples. Esta resposta tem mais alguns detalhes, mas as etapas relacionadas ao LVM não foram necessárias no meu caso.
O que impede o sistema de prosseguir com a inicialização é que o dispositivo que contém o sistema de arquivos raiz não pode ser encontrado. No meu caso foi isso
/dev/mapper/ssd-root
. Para que apareça, é necessário abrir manualmente a partição criptografada:Depois disso, deve-se sair
initramfs
:Obviamente, deve-se usar o dispositivo que contém o sistema de arquivos raiz. Como nome do mapa, qualquer coisa pode ser usada. Pode-se usar o genérico
sdb2_crypt
, mas pode-se optar por usar um nome autodescritivo comossd500-crypt
.Se alguém não usar o nome do mapa esperado, por exemplo
sda2_crypt
, será solicitado novamente uma senha algum tempo depois, novamente após um breve travamento. O nome do mapa esperado pode ser encontrado em/etc/crypttab
.Como corrigir permanentemente o problema
Para corrigir permanentemente o problema, o initramfs deve ser atualizado. A seguinte sequência de passos foi utilizada pelo autor:
initramfs
./etc/crypttab
para algo novo. Vale tudo, então pode-se usar um valor autodescritivo comossd500-crypt
.sudo update-initramfs -u
e reinicieinitramfs
. No entanto, desta vez, o nome do mapa deve ser o usado na etapa (2).sudo update-initramfs -u
e reiniciePossivelmente a etapa (1) pode ser omitida se o novo nome do mapa já tiver sido escolhido lá.