OpenRC.
На флешке незашифрованный /efi (/dev/sda1) и зашифрованный /boot (/dev/sda2). На SSD зашифрованный корневой раздел (/dev/nvme0n1p1).
/etc/default/grub:
GRUB_ENABLE_CRYPTODISK=y
...
GRUB_CMDLINE_LINUX="cryptdevice=UUID=<ююид /dev/nvme0n1p1>:cryptroot root=/dev/mapper/cryptroot"
/etc/dracut.conf.d/luks.conf:
add_dracutmodules+=" crypt dm rootfs-block "
kernel_cmdline+=" rd.luks.name=<ююид /dev/sda2>=cryptboot rd.luks.name=<ююид /dev/nvme0n1p1>=cryptroot root=/dev/mapper/cryptroot "
/etc/fstab:
UUID=<ююид /dev/sda1> /efi vfat nosuid,nodev,noexec,noauto,noatime,umask=0077 0 2
UUID=<ююид /dev/mapper/cryptboot> /boot ext4 nosuid,nodev,noexec,noauto,noatime 0 2
UUID=<ююид /dev/mapper/cryptroot> / ext4 lazytime,errors=remount-ro 0 1
Ядро gentoo-kernel-bin. Initramfs, как вы поняли, сгенерирована dracut.
- Включаю ПК
- GRUB просит пароль от /dev/sda2
- Ввожу пароль
- Вижу GRUB меню
- Нажимаю Return
- Вижу dracut
dracut: luksOpen /dev/nvme0n1p1 cryptroot
- Ввожу пароль
- Ничего не предвещает беды
- Внезапно!
dracut: luksOpen /dev/sda2 luks-<ююид /dev/sda2>
- Думаю. Жду
- Попадаю в debug меню с ошибкой
"бла-бла-бла Could not boot бла-бла-бла device /dev/mapper/cryptboot does not exist"
- Ввожу
cryptsetup close /dev/mapper/luks-<ююид /dev/sda2>
- Потом
cryptsetup open /dev/sda2 cryptboot
- Потом
exit
- Загрузка успешно продолжается
- Ввожу имя пользователя и пароль
- Успешно вхожу в систему
Вопросы:
- Почему dracut требует снова расшифровать /dev/sda2, если GRUB уже должен был его расшифровать? Предполагаю, потому что в /etc/fstab есть строка
UUID=<ююид /dev/mapper/cryptboot /boot ...
, но не уверен. - Где нужно указать, под каким именем откроется /dev/sda2 (/dev/mapper/cryptboot)? Как видно выше, я попробовал добавить строку
rd.luks.name=<ююид /dev/sda2>=cryptboot
в /etc/dracut.conf.d/luks.conf, но это не помогло. - А вообще, откуда взялось имя /dev/mapper/cryptboot? Да, при установке системы я вводил команду
cryptsetup open /dev/sda2 cryptboot
, но ни в каких файлах это имя не указано(?). Или GRUB и dracut автоматически находят, под какими именами открыты LUKS разделы и используют эти имена при установке(?)? - Вроде всё?
- Заранее спасибо