如何讓 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 將該磁碟識別為最有可能的磁碟,因為我的 USB 記憶棒(hd1,gpt3)仍處於插入狀態。(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

相關內容