Voici ma solution de contournement sur Debian, étant donné le bogue référencé ci-dessus par @sebasth.
Ma configuration est légèrement différente. J'ai une partition racine chiffrée et un tas de disques de raid. Pour moi, j'ai dû ajouter une option initramfs à la 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
Cela indique à update-initramfs que je veux que ces entrées crypttab soient montées dans les initramfs. J'ai vérifié mon crypttab en exécutant
cryptdisks_start part1_crypt
cryptdisks_start part2_crypt
Notez que mes disques de raid sont des dm-crypt simples. Cela signifiait que je ne pouvais pas utiliser la méthode luks keyfile qui contourne le bogue keycript de systemd. Pour dm-crypt simple, je devrais stocker la phrase secrète en texte clair.
Les disques chiffrés doivent être montés avant d' update-initramfs
être exécutés; sinon, cela générera des erreurs. J'ai dû chercher les lignes suivantes lors de la construction de mes initramfs:
update-initramfs -k -u -v | grep 'keyctl'
qui montrait les deux fichiers suivants:
/bin/keyctl
cryptkeyctl
étant ajouté aux initramfs.
Enfin, j'ai dû désactiver systemd pour gérer mon crypttab, afin de faire face au bogue référencé ci-dessus: systemd ne prend pas en charge l'option keyscript dans crypttab. Pour cela, j'ai ajouté l'option noyau
GRUB_CMDLINE_LINUX_DEFAULT="quiet luks.crypttab=no"
dans / etc / default / grub et a couru update-grub
. systemd ignore maintenant crypttab, et toutes les partitions chiffrées sont chargées dans les initramfs.
Parce que j'ai une partition racine chiffrée, cryptroot ne semble pas mettre en cache ma clé. Cela signifie que je dois saisir mon mot de passe deux fois; un pour la partition racine et une fois pour ma baie de raid.
expect
script ou similaire qui sera appelé pour monter les disques au lieu de le faire par le système. Au lieu de cela, le système appelle le script qui demande le mot de passe, le stocke et le fournit à chacune des opérations de montage.