GRUBによってロードされたすべてのファイルを確認するために、公開鍵ファイルを含む新しいGRUBイメージを作成しようとしています。そのため、 grub-mkimage コマンドを使用して新しいGRUBコアイメージを手動で作成しました。
grub-mkimage --config='./grub.cfg' --compression='auto' --pubkey='./grub.key' --output='./core_custom.efi' --format='x86_64-efi' --prefix='(hd0,gpt2)/grub' --verbose ext2 fshelp part_gpt pbkdf2 crypto password_pbkdf2 pbkdf2_test
grub.cfgには、設定操作を防止するためにpbkdf2パスワードを持つスーパーユーザー(pbkdf2モジュールを含めました)が含まれているため、パスワード保護はロードされません。また、変数ポケットベルを1に設定しました。
ただし、コンピュータを再起動し、新しく作成されたGRUBイメージから起動した後、GRUB環境変数check_signaturesが適用されるように設定されていません(公式で述べたように)。GRUB2 マニュアル)、GRUBシェルでlist_trustedコマンドを入力すると、grub-mkimageコマンドに渡したキーはリストされず、最後にverify_detachedコマンドは公開キーを見つけることができません。
ただし、grub-mkimageコマンドの詳細ログにはキーが読み込まれたことが明らかになり、GRUBシェルからキーを手動でロードするとすべてが正常に機能します。
私のインストールに関する情報:
-ArchLinux
-GRUB 2.04
-EFIプラットフォーム->GRUB x86_64-efi
ベストアンサー1
私は同じ問題を抱えて、数時間の試行錯誤の最後についに答えを見つけました。 GRUB側では正しく処理されず、静かに失敗しました。文書も役に立たないようです。この特定のエラーに関する有用な情報が見つかりません。
解決策はとても簡単です。いくつかのモジュールが必要です。事前ロード。私のためにグラップ2.04存在するAMD64、人々は:
- 検証者
- gcry_sha256
- gcry_sha512
- gcry_dsa
- gcry_rsa
私が得るコマンドは次のとおりです。
grub-mkstandalone --verbose --format=x86_64-efi --output=grubsax64.efi --pubkey=grub.pub --modules="verifiers gcry_sha256 gcry_sha512 gcry_dsa gcry_rsa" boot/grub/grub.cfg=grub.cfg
ここで重要な部分は--モジュール="..."。
私はまた、以下を使用して同じモジュールをロードしようとしました。モジュールの挿入存在するグラップ構成ファイル、しかしこれはうまくいきません、上記のように実行する必要があります。
生産された結果に基づいて判断grub-mkスタンドアロン、これは次にも適用する必要があります。グラップミラー(grub-mkスタンドアロンある瞬間電話してグラップミラー)、直接テストしませんでしたが、次のようになります。
grub-mkimage ... verifiers gcry_sha256 gcry_sha512 gcry_dsa gcry_rsa
GRUBイメージ/バイナリをビルドして再起動した後、コマンドラインを入力するとわかります。信頼できるリストこれで出力を生成します。追加のテストでは、署名確認が期待どおりに機能することがわかりました。
GRUB 2.06 4/23/21の編集:
GRUB 2.06では検証者モジュールからコアに移動しました(参照:今回提出してください)、つまりもはや別のモジュールではありません。したがって、上記のコマンドも変更する必要があります。
grub-mkstandalone --verbose --format=x86_64-efi --output=grubsax64.efi --pubkey=grub.pub --modules="gcry_sha256 gcry_sha512 gcry_dsa gcry_rsa" boot/grub/grub.cfg=grub.cfg
grub-mkimage ... gcry_sha256 gcry_sha512 gcry_dsa gcry_rsa