Tenho o Debian 12 com criptografia de disco completo. O Cryptsetup desbloqueia o volume com a versão 6.1.0-28 do kernel Linux, mas falha com qualquer versão posterior, como segue.
Please unlock disk sdXY_crypt: **********
No key available with this passphrase.
cryptsetup: ERROR: sdXY_crypt: cryptsetup failed, bad password or options?
No período exato entre os kernels 6.1.0-28 e 6.1.0-29, instalei o VeraCrypt para uso com contêineres. Nunca o usei para criptografar nenhum volume de disco. Até onde sei, o VeraCrypt não altera a configuração do kernel, mas mencionei isso como uma possível razão para o problema.
Qual é o problema? Como solucionar e consertar?
Quando você tiver um problema com um volume criptografado, é altamente recomendável começar clonando o disco para garantir que o problema não piore ainda mais durante a solução de problemas ou recuperação.
Contanto que você consiga abrir o volume com uma das configurações de boot/kernel, você pode ficar bem confiante de que o volume e seu cabeçalho/metadados não estão corrompidos e que o problema está em outro lugar. Considere os seguintes passos para isolar o problema (ou pule alguns deles com base em seu pressentimento):
initramfs
. Para fazer isso, entre no menu GRUB, selecione a entrada de inicialização desejada e pressionee
a tecla . No modo de edição do GRUB, localize a linha do kernel e anexebreak
ao final da linha que contém os parâmetros do kernel. Após fazer essa alteração, pressioneCtrl + x
ouF10
para inicializar com os parâmetros modificados.initramfs
, digite sua senha em um texto claro. Dessa forma, você garante quecryptsetup
receberá a senha correta quando digitá-la.Verifique se os metadados LUKS estão presentes:
"Simular" (
--test-passphrase
) a abertura do volume sem realmente desbloqueá-lo e gerar uma informação detalhada de depuração no processo:No meu caso, parece que a entrada do teclado gera códigos/caracteres incorretos para algumas teclas. Isso impediu
cryptsetup
que a senha válida fosse obtida.A causa raiz é que eu fiz uma personalização no meu layout de teclado adicionando caracteres de 3º nível com diacríticos (o chamado layout de teclado "programador") como uma nova variante de teclado e o configurei em
/etc/default/keyboard
. Porqueinitramfs
usa/etc/default/keyboard
muito, mas por algum motivo não interpreta corretamente nem mesmo caracteres de 1º e 2º nível não modificados dous
layout personalizado, o processo de inicialização foi interrompido após a próxima atualização do kernel quandoinitramfs
a configuração foi regenerada.Ironicamente,
/etc/default/keyboard
não afeta a configuração do teclado do meu sistema totalmente inicializado. Portanto, o problema foi totalmente resolvido atualizando/etc/default/keyboard
e regenerandoinitramfs
a configuração comsudo update-initramfs -u -k $(uname -r)