Initramfs + Luks - только одна подсказка пароля
Чего я хочу добиться:
- Запрашивается пароль, только один раз во время загрузки;
- Другие (некорневые) разделы для использования ключевого файла внутри
/root/
каталог.
Чего я добился до сих пор:
- (A) Система загружается, но запрашивает пароль дважды (один раз для
/
и один раз для/usr
). - Или: (B) система не загружается, запрашивает пароль один раз, но затем отказывается от монтирования
/usr
говоря, что не может найти группу / том LVM. Меня бросают в раковину, и я вижу, что/root/.keyfile
недоступен./
еще не был установлен
конфигурация
Файл: /etc/crypttab
Случай А
sdc3_crypt /dev/sdc3 none luks
md0_crypt /dev/md0 none luks
Дело Б
sdc3_crypt /dev/sdc3 none luks
md0_crypt /dev/md0 /root/.keyfile luks
Что полностью не сработало
- Создание файлов скриптов для luks вручную Откройте нужный диск: те, что в
/etc/initramfs-tools/scripts/local-premount
называются раньше/
доступно, но те в/etc/initramfs-tools/scripts/local-bottom
называются после того, как он хочет открыть/usr
(и поэтому уже поздно).
1 ответ
На этой вики-странице (на немецком языке, к сожалению, я не нашел аналога на английском) предлагается использовать скрипт /lib/cryptsetup/scripts/decrypt_derived
сгенерировать ключ из открытого корневого устройства. Я постараюсь перевести важные части, но я НЕ пробовал эту процедуру.
Чтобы добавить ключ, вам нужно выполнить (как root)
mkdir /mnt/ram && mount -t ramfs -o size=1m ramfs /mnt/ram && chmod 600 /mnt/ram
/lib/cryptsetup/scripts/decrypt_derived <root_dev> > /mnt/ram/tmp.key && cryptsetup luksAddKey <usr_dev> /mnt/ram/tmp.key && rm /mnt/ram/tmp.key
umount /mnt/ram && rmdir /mnt/ram
где <root_name>
имя вашего корневого устройства, отображаемое в /dev/mapper
(наверное sdc3_crypt
), а также <usr_dev>
устройство где /usr
включен (возможно /dev/md0
).
Строка для crypttab
<usr_name> UUID=<UUID> <root_name> luks,keyscript=/lib/cryptsetup/scripts/decrypt_derived
не забудьте бежать
update-initramfs -u -k all
после изменения crypttab.
Вам следует сохранить "нормальный" пароль для вашего устройства usr, иначе вы не сможете открыть его в случае повреждения корневого устройства.