Aqui está minha solução alternativa no debian, dado o bug mencionado acima por @sebasth.
Minha configuração é um pouco diferente. Eu tenho uma partição raiz criptografada e um monte de discos RAID. Para mim, tive que adicionar uma opção initramfs ao crypttab:
<target> <source> <keyfile> <options>
part1_crypt /dev/disk/... crypt_disks plain,cipher=aes-xts-plain64,keyscript=decrypt_keyctl,initramfs
part2_crypt /dev/disk/... crypt_disks plain,cipher=aes-xts-plain64,keyscript=decrypt_keyctl,initramfs
Isso informa ao update-initramfs que eu quero que essas entradas do crypttab sejam montadas no initramfs. Eu verifiquei meu crypttab executando
cryptdisks_start part1_crypt
cryptdisks_start part2_crypt
Note que meus discos RAID são simples dm-crypt. Isso significava que eu não poderia usar o método luks keyfile que funciona em torno do bug systemd keyscript. Para dm-crypt simples, eu teria que armazenar a senha em texto sem formatação.
Os discos criptografados precisam ser montados antes da update-initramfs
execução; caso contrário, lançará erros. Eu tive que procurar as seguintes linhas quando meu initramfs foi construído:
update-initramfs -k -u -v | grep 'keyctl'
que mostrou os dois arquivos a seguir:
/bin/keyctl
cryptkeyctl
sendo adicionado ao initramfs.
Finalmente, tive que desativar o systemd que manipula meu crypttab, para lidar com o bug mencionado acima: systemd não suporta a opção keyscript no crypttab. Para isso, adicionei a opção do kernel
GRUB_CMDLINE_LINUX_DEFAULT="quiet luks.crypttab=no"
para / etc / default / grub e executei update-grub
. O systemd agora ignora o crypttab e todas as partições criptografadas são carregadas no initramfs.
Como tenho uma partição raiz criptografada, o cryptroot não parece armazenar em cache minha chave. Isso significa que eu tenho que digitar minha senha duas vezes; um para a partição raiz e uma vez para minha matriz de ataque.
expect
script ou similar que seja chamado para montar os discos em vez de fazer com que o sistema o faça. Em vez disso, o sistema chamaria o script que solicitaria a senha, armazenaria e forneceria a cada uma das operações de montagem.