Вот мой обходной путь к Debian, учитывая ошибку, упомянутую выше @sebasth.
Моя настройка немного отличается. У меня есть зашифрованный корневой раздел и куча raid-дисков. Для меня мне пришлось добавить опцию initramfs в 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
Это сообщает update-initramfs, что я хочу, чтобы эти записи crypttab были смонтированы в initramfs. Я проверил свою криптабу, запустив
cryptdisks_start part1_crypt
cryptdisks_start part2_crypt
Обратите внимание, что мои raid-диски являются обычными dm-crypt. Это означало, что я не мог использовать метод luks keyfile, который работает вокруг ошибки systemd keyscript. Для простого dm-crypt мне пришлось бы хранить парольную фразу в незашифрованном виде.
Зашифрованные диски должны быть смонтированы перед update-initramfs
запуском; в противном случае это приведет к ошибкам. Мне пришлось искать следующие строки при сборке моих initramfs:
update-initramfs -k -u -v | grep 'keyctl'
который показал следующие два файла:
/bin/keyctl
cryptkeyctl
будучи добавленным в initramfs.
Наконец, мне пришлось отключить systemd, обрабатывающую мою crypttab, чтобы справиться с ошибкой, указанной выше: systemd не поддерживает опцию keyscript в crypttab. Для этого я добавил опцию ядра
GRUB_CMDLINE_LINUX_DEFAULT="quiet luks.crypttab=no"
в / etc / default / grub и запустил update-grub
. systemd теперь игнорирует crypttab, и все зашифрованные разделы загружаются в initramfs.
Поскольку у меня есть зашифрованный корневой раздел, cryptroot не может кэшировать мой ключ. Это означает, что я должен ввести свой пароль дважды; один для корневого раздела и один раз для моего raid-массива.
expect
скрипт или аналогичный файл, который вызывается для монтирования дисков вместо того, чтобы система делала это. Вместо этого система будет вызывать скрипт, который будет запрашивать пароль, сохранять его и предоставлять для каждой из операций монтирования.