djs*_*dog 5 grub grub2 luks disk-encryption
所以我试图获得一个完全加密的启动分区。我正在运行 Funtoo,但主要是从 Arch wiki 中获取帮助。
所以我决定做一些疯狂/有争议的事情:不是单独的引导/根分区。我的设置看起来像这样:
/dev/nvme0n1p1 - EFI parition
/dev/nvme0n1p2 - Swap
/dev/nvme0n1p3 - Encrypted /
Run Code Online (Sandbox Code Playgroud)
在我的/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"
Run Code Online (Sandbox Code Playgroud)
所有的 linux 参数都是为了Better-initramfs。我在 ramdisk 中包含了文件系统的密钥,因此它不会提示我两次输入密码。
我使用以下方法安装了 Grub:
grub-install --target=x86_64-efi --efi-directory=/boot/efi --bootloader-id="Funtoo Linux [GRUB]" --recheck --boot-directory=/boot/efi/EFI
Run Code Online (Sandbox Code Playgroud)
因此,在当前状态下,我收到 Grub 救援提示。它找不到它的配置文件(它在加密的引导/根磁盘上)。所以我运行以下命令:
insmod luks
cryptomount (hd1,gpt3)
set root=(crypto0)
configfile (crypto)/boot/grub/grub.cfg
Run Code Online (Sandbox Code Playgroud)
..我有一个完全启动/工作的系统!:)
所以我的问题是:如何配置 Grub EFI 加载程序以尝试自动将加密分区加载到(crypt0)
并读取其配置文件?
注意:Grub 将磁盘识别为(hd1,gpt3)
最有可能的原因是我的 USB 记忆棒仍然插入。(hd0,gpt3)
如果我拔下它并重新启动,它应该更改为。
事实证明,在 Gentoo/Funtoo 上,grub 的设备映射器默认情况下并未启用。我添加了以下内容/etc/portage/package.use
:
sys-boot/grub device-mapper
Run Code Online (Sandbox Code Playgroud)
然后我重新出现 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
归档时间: |
|
查看次数: |
10572 次 |
最近记录: |