Uau. Isso me levou quase dois dias para descobrir como tudo isso funciona no Debian / stretch (embora eu tenha feito isso antes). Eu tropecei na sua pergunta e mantive-a aberta para responder isso, caso eu encontre a resposta.
E sim, há uma crypttab(5)
opção initramfs
, que faz exatamente o que você está pedindo:
initramfs
The initramfs hook processes the root device, any resume devices and any devices with the “initramfs” option set. These devices are processed within the initramfs stage of boot. As an example, that allows the use of remote unlocking using dropbear.
(Acredite ou não, achei essa opção apenas por acaso, lendo um TODO -File na fonte cryptsetup.)
Portanto, a sua linha crypttab
deve ser assim:
picrypt /dev/mmcblk0p2 /boot/diskkey.gpg luks,keyscript=/lib/cryptsetup/scripts/decrypt_gnupg,initramfs
Mais uma coisa: os módulos cryptsetup são adicionados somente à imagem initramfs "quando há um dispositivo que precisa ser desbloqueado no estágio initramfs (como dispositivos raiz ou currículo)" (Consulte: conf-hook
). Mas isso atualmente só funciona (de forma confiável) se o dispositivo raiz não estiver em um LVM. Para forçar os módulos cryptsetup à imagem initramfs, tive que definir CRYPTSETUP=y
em /etc/cryptsetup-initramfs/conf-hook
.
Em qualquer caso, você precisa executar update-initramfs -k all -u
depois de alterar qualquer um dos arquivos mencionados.