secureboot uefi の grub 署名: Secureboot はモジュール (memdisk)/boot/grub/x86_64-efi/normal.mod のロードを禁止します。

secureboot uefi の grub 署名: Secureboot はモジュール (memdisk)/boot/grub/x86_64-efi/normal.mod のロードを禁止します。

カスタムDebianベースのシステムでセキュアブートを設定しようとしたときにSBがオンの場合、grubはロードされません。私は最初のステップブートローダーとしてshim(MSから署名)を使用しています。これで、MOKを使用してgrub2とカーネルに署名する予定です。したがって、ステップは次のようになります。

  1. 秘密鍵と公開鍵を作成します。公開鍵は .der 形式と .pem 形式で使用できます。

  2. 2.a.grub-mkstandalone --format x86_64-efi /boot/grub/grub.efi -o grub.efi.unsigned

    2.b sbsign --key ~/my.priv --cert ~/my.pem grub.efi.unsigned --output grub.efi

    2.cp grub.efi /boot/efi/EFI/mylinux/grubx64.efi

  3. mokutil --import my.der

  4. MOK管理キーを再起動して登録します。

  5. UEFI設定でセキュアブートを有効にして起動します。

そのため、shimがロードされていますが、grubが起動するとNormal.modモジュールのロードが拒否され、エラーが発生しますSecureboot forbids to load module (memdisk)/boot/grub/x86_64-efi/normal.mod。それはグラブ構造シェルに落ちるでしょう。

私の質問は、この問題はMOKキーが正しくロードされないことに関連していることです。だから私はシムが信頼するキーで署名されたDebianの署名グラブでテストしました。その後、grubは正常に起動しますが、ofcは停止し、設定ファイルが見つかりません。手動で追加して起動できます。 Grub 設定では署名確認は行われません。したがって、Debianキーが正しくロードされます。

次の質問は、グラブを生成するプロセスに問題があるということです。 SE、Debian、Arch Wikiなどの情報を読んだが、考えられる解決策が見つからなかった。

どんな洞察力でも深く感謝します。

ベストアンサー1

このgrub-mkstandaloneコマンドを使用するときは、モジュールを事前にロードする必要があります--modules=module_listsecurebootリストにあるモジュールのみを使用できます。

例:

MODULES="all_video archelp boot bufio configfile crypto echo efi_gop efi_uga ext2 extcmd  \
fat font fshelp gcry_dsa gcry_rsa gcry_sha1 gcry_sha512 gettext gfxterm linux linuxefi ls \
memdisk minicmd mmap mpi normal part_gpt part_msdos password_pbkdf2 pbkdf2 reboot relocator \
search search_fs_file search_fs_uuid search_label sleep tar terminal verify video_fb"

grub-mkstandalone -d /usr/lib/grub/x86_64-efi -O x86_64-efi --modules "$MODULES" --pubkey gpg.key --output grubx64.efi  boot/grub/grub.cfg=grub.init.cfg boot/grub/grub.cfg.sig=grub.init.cfg.sig -v

おすすめ記事