Oto moje obejście dotyczące Debiana, biorąc pod uwagę błąd wymieniony powyżej przez @sebasth.
Moja konfiguracja jest nieco inna. Mam zaszyfrowaną partycję root i kilka dysków RAID. Dla mnie musiałem dodać opcję initramfs do 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
Mówi to update-initramfs, że chcę mieć te wpisy crypttab zamontowane w initramfs. Sprawdziłem moją kryptografię, uruchamiając
cryptdisks_start part1_crypt
cryptdisks_start part2_crypt
Zauważ, że moje dyski rajdowe są zwykłymi kryptami dm-crypt. Oznaczało to, że nie mogłem użyć metody pliku kluczy Luks, która działa wokół błędu skryptu systemd. W przypadku zwykłej krypty dm musiałbym przechowywać hasło w postaci zwykłego tekstu.
Zaszyfrowane dyski muszą zostać zamontowane przed update-initramfs
uruchomieniem; w przeciwnym razie spowoduje to błędy. Musiałem poszukać następujących linii, kiedy moje initramfs zostało zbudowane:
update-initramfs -k -u -v | grep 'keyctl'
który pokazał następujące dwa pliki:
/bin/keyctl
cryptkeyctl
dodawane do initramfs.
Wreszcie musiałem wyłączyć systemd obsługujący moją kryptografię, aby poradzić sobie z błędem, o którym mowa powyżej: systemd nie obsługuje opcji skryptu w crypttabie. W tym celu dodałem opcję jądra
GRUB_CMDLINE_LINUX_DEFAULT="quiet luks.crypttab=no"
do / etc / default / grub i uruchomiłem update-grub
. systemd teraz ignoruje crypttab, a wszystkie zaszyfrowane partycje są ładowane do initramfs.
Ponieważ mam zaszyfrowaną partycję root, cryptroot nie wydaje się buforować mojego klucza. Oznacza to, że muszę dwukrotnie wpisać hasło; jeden dla partycji root i raz dla mojej tablicy RAID.
expect
skrypt lub podobny skrypt, który zostanie wywołany w celu zamontowania dysków zamiast tego, że system to zrobi. Zamiast tego system wywoła skrypt, który poprosi o hasło, zapisze je i dostarczy do każdej operacji montowania.