web-dev-qa-db-ja.com

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引数は better-initramfs 用です。 ramdisk内にファイルシステムのキーを含めて、パスワードを2回要求されないようにしました。

以下を使用して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

..そして私は完全に起動/動作するシステムを持っています! :)

だから私の質問は、暗号化されたパーティションを自動的に(crypt0)にロードしてその構成ファイルを読み取るようにGrub EFIローダーを構成するにはどうすればよいですか?

注:USBスティックがまだ差し込まれているため、Grubはディスクを(hd1,gpt3)として識別します。取り外して再起動すると、(hd0,gpt3)に変わるはずです。

3
djsumdog

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

1
djsumdog