セキュアブートが有効なKali Linuxシステムを実行しようとすると、GRUBは「error: /boot/vmlinuz-6.6.9-amd64 has invalid signature.
セキュアブートをオフにしたくありません」を返します。私はここの指示に従いました。https://www.reddit.com/r/archlinux/comments/10pq74e/my_easy_method_for_setting_up_secure_boot_withgrub-install --target=x86_64-efi --efi-directory=/boot/efi --modules="tpm" --disable-shim-lock
コマンドを使用してgrubを再インストールしました。
私はWindows 11とKali Linuxをダブルブートしています。
私はHP Envy x360を使用しています。
答え1
説明あなたがリンクしたRedditの投稿grubx64.efi
インストールされたプログラムがMicrosoftによって署名されている場合にのみ機能しますgrub-install
。明らかに、Archはこれに時間とお金を費やしたかもしれません。
Debianは仕事を別々に行うことを選び、KaliはDebianに基づいているので、同じアプローチがKaliでも機能します。 Debian のセキュアブートソリューションの中には、shimx64.efi
Microsoft 署名のみがあります。
/boot/efi/EFI/debian# pesign -S -i shimx64.efi
---------------------------------------------
certificate address is 0x7f0756f2a498
Content was not encrypted.
Content is detached; signature cannot be verified.
The signer's common name is Microsoft Windows UEFI Driver Publisher <--- Microsoft!
No signer email address.
No signing time included.
There were certs or crls included.
---------------------------------------------
Debian は実際に次のようにシムを作ります。再現可能なバイナリ、別々のMicrosoft署名をshimソースコードと共に別々のファイルとして提供することができ、shimを監査したい場合は、直接ビルドして署名を追加できます。正しいコンパイラバージョンと正確なプロセスにより、結果のビルドはDebianと100%同じであるため、署名が添付されている場合は有効です。
これにより、DebianのSecure Boot証明書がホワイトリストに非永続的に追加され、システムはgrubx64.efi
Debian証明書で署名されたDebianを起動できます。
/boot/efi/EFI/debian# pesign -S -i grubx64.efi
---------------------------------------------
certificate address is 0x7f87b4b03008
Content was not encrypted.
Content is detached; signature cannot be verified.
The signer's common name is Debian Secure Boot Signer 2022 - grub2 <- no MS, just Debian
No signer email address.
Signing time: Wed Oct 04, 2023
There were certs or crls included.
---------------------------------------------
これは、Microsoftが新しいバージョンに署名するのを待つ必要がないため、GRUBアップデートを通じてDebianにさらに柔軟性を提供します。シムは非常にシンプルで徹底的に監査されたコードスニペットである必要があるため、更新が少なくて済みます。
Kaliディストリビューションは明らかにDebianの秘密鍵にアクセスできないため、Kaliはディストリビューションに自己署名する必要があります。
Redditの投稿のレシピはブートローダの一部でsbctl
あるように見え、基本的にのみこれに興味があります。これは明らかにRedditポスターが次のようにしなければならなかった理由です。systemd-boot
systemd-boot
セキュアブートが機能するには、どのファイルに署名する必要があるかを確認してください。
sudo sbctl verify
署名されていないすべての文書に署名します(署名する必要があるものは次のとおりです。必要に応じて調整してください)。
sudo sbctl sign -s /efi/EFI/GRUB/grubx64.efi
KaliがDebianのモデルに従う場合、Kaliのカーネルはすでに署名されていますが、使用されませんsbctl
。おそらくsbctl
カーネルが署名されたことを検出しただけなので、もう一度署名する必要があることを知らせないかもしれません。あなたのキー?
それとも、生成されたカーネルには複数の署名があります。これしなければならない可能ですが、おそらくSecure Boot仕様で十分にテストされていない領域なので、どこかにバグがある可能性があります。署名が誤って適用されて確認できないのではないでしょうか。それとも、UEFIファームウェア(GRUBのUEFIバージョンのようにファームウェアルーチンがディスクアクセスに使用される限り、セキュアブートシグネチャを検証する究極の責任)がマルチシグネチャブートファイルを処理するのにバグがありますか?