如何让 Grub 自动运行 cryptomount 来加载其配置文件(加密启动)

如何让 Grub 自动运行 cryptomount 来加载其配置文件(加密启动)

所以我试图让一个完全加密的启动分区运行。我正在运行 Funtoo,但主要是从 Arch wiki 中获取帮助。

所以我决定做一些疯狂/有争议的事情:不单独的启动/根分区。我的设置如下:

/dev/nvme0n1p1  - EFI parition
/dev/nvme0n1p2  - Swap
/dev/nvme0n1p3  - Encrypted /

在我的/etc/default/grub我有以下内容:

GRUB_ENABLE_CRYPTODISK=y
GRUB_PRELOAD_MODULES="luks cryptodisk"
GRUB_CMDLINE_LINUX="luks enc_root=/dev/nvme0n1p3 root=/dev/mapper/enc_root"

所有的linux参数都是为了更好的 initramfs。我在 ramdisk 中包含了文件系统的密钥,因此它不会两次提示我输入密码。

我使用以下命令安装了 Grub:

grub-install --target=x86_64-efi --efi-directory=/boot/efi --bootloader-id="Funtoo Linux [GRUB]" --recheck --boot-directory=/boot/efi/EFI

因此,在当前状态下,我收到了 Grub 救援提示。它找不到其配置文件(位于加密的启动/根磁盘上)。所以我运行以下命令:

insmod luks
cryptomount (hd1,gpt3)
set root=(crypto0)
configfile (crypto)/boot/grub/grub.cfg

..我有一个完全启动/工作的系统!:)

所以我的问题是:如何配置 Grub EFI 加载程序以尝试自动加载加密分区(crypt0)并读取其配置文件?

注意:Grub 将该磁盘识别为(hd1,gpt3)最有可能的磁盘,因为我的 USB 记忆棒仍处于插入状态。(hd0,gpt3)如果我拔下它并重新启动,情况应该会发生变化。

答案1

事实证明,在 Gentoo/Funtoo 上,grub 的设备映射器默认情况下并未启用。我添加了以下内容/etc/portage/package.use

sys-boot/grub device-mapper

然后我重新出现 grub,运行grub-install --target=x86_64-efi --efi-directory=/boot/efi --bootloader-id="Funtoo Linux [GRUB]" --recheck并重新启动以找到 luks 密码请求屏幕。输入后,一切都完美启动。

特别感谢Frostschutz 在该线程中提供了解决方案:

https://forums.gentoo.org/viewtopic.php?p=7972812#7972812

相关内容