Grub-EFIは「署名付き」Linuxカーネルのみを起動するようです。使用できるコマンドはありますか?尋ねるどの署名があるかを調べるためにカーネルイメージが提供されたら、どの署名があるかを確認しますか?
ベストアンサー1
話す署名の種類によって異なります。 EFIシステムがある場合は、EFI実行可能ファイル(*.efi
)に署名し、EFIファームウェアが既知の署名を持つファイルのみを実行するように強制できます。これは…セキュアブート。 EFIバイナリの署名を確認するには、次のツールを使用できますsbverify
。
$ sbverify --no-verify signed-binary.efi
Signature verification OK
$ sbverify --no-verify unsigned-binary.efi
No signature table present
Unable to read signature data from unsigned-binary.efi
Signature verification failed
残念ながら、EFI署名を抽出して表示する簡単な方法が見つかりませんでした。 :(
さらに必要なのは、GRUB自体で起動中のモジュールとカーネルに有効な署名があることを確認する機能です(セキュアブートはGRUBバイナリ自体にのみ影響し、GRUBがロードするすべての項目は必ずしもEFI署名を必要としません)。これは(私の知る限り)普通で古い分離GPG署名です(たとえば、カーネルという名前の場合はvmlinuz-1.2.3
署名を含むファイルがあります)。vmlinuz-1.2.3.sig
簡単に表示して確認できます。
$ gpg --verify vmlinuz-1.2.3.sig vmlinuz-1.2.3
gpg: Signature made Tue Apr 1 12:34:56 2014 CEST using RSA key ID d3adb33f
gpg: Good signature from "John Doe <[email protected]>"
*.sig
カーネルにファイルがない場合は、明らかに署名されていません。
set check_signature=no
GRUBコマンドプロンプトに入力して、GRUBで署名検証を無効にできます。このトピックに関する詳細情報を入手できますここ(この機能は比較的新機能です。GRUB公式ウェブサイトには、この機能がないバージョン2.00オンラインマニュアルのみがあります。)また、独自のキーでモジュールとカーネルに署名し、GRUBに通知する方法も説明します。