
GRUBブートローダを含むUSBスティックがあることをLinuxのコマンドラインで確認する方法
- UEFIですか?
- 安全な起動と検証は行われますか?
研究では、これらのローダーを作成する方法に関するガイドがありますが、既存のローダーを判断する方法が見つかりません。
答え1
EFI
ルートディレクトリに、またはefi
(UEFIはファイル名から大文字と小文字を区別する必要があります)というサブディレクトリを含むUSBスティックにパーティションがある場合は、UEFI起動が可能です。理想的には、パーティションにFAT32ファイルシステムが必要ですが、一部のUEFIファームウェアはISO9660、NTFS、またはHFS +などの他の種類のファイルシステムもサポートしています。
リムーバブルメディアでは、64ビットx86ハードウェア用の実際のUEFIブートローダはパス上のファイルになります<partition root>/efi/boot/bootx64.efi
。これは実際にリムーバブルメディアブートローダの完全修飾パス名です。永続オペレーティングシステムのインストールでは、ブートローダパス名がに変わります<partition root>/efi/<OS vendor or Linux distribution name>/<something>.efi
。オペレーティングシステムのインストーラは、このパス名をUEFI NVRAMブート変数に保存します。これはBIOS設定と似ていますが、実際にはオペレーティングシステムが実行時にそれを照会して操作します。
Linuxでは、efibootmgr -v
このコマンドはUEFI NVRAMブート変数を表示する方法です。 bootloaderコマンドは、いくつかの起動変数情報bootctl
も表示します。systemd-boot
リムーバブルメディアは、BIOS起動とUEFI起動の両方をサポートできます。この場合、2つのブートローダが含まれます。 MBRに組み込まれているBIOS互換ブートローダ(おそらくSYSLINUX)と上記のUEFI互換ブートローダ。
このfile
コマンドを使用してファイルタイプを識別すると、.efi
次のように表示されます。
# file bootx64.efi
bootx64.efi: PE32+ executable (EFI application) x86-64 (stripped to external PDB), for MS Windows
つまり、UEFI ブートローダは Microsoft Windows と同じ実行可能ファイル形式を使用します。 PE32+は64ビット実行可能形式です。 32ビットUEFI実装を見ると、おそらく32ビットPE32形式(unsigned +
)を使用しています。
注:UEFIは複数のハードウェアアーキテクチャをサポートしています。一部のARMシステムでは、UEFIも使用できます。
セキュアブートはUEFIのサブセットです。非 UEFI ブートローダはセキュアブートと互換性がありません。.efi
ファイルにSecure Boot署名が含まれていることを確認するには、を使用できますpesign -S -i filename.efi
。
# pesign -S -i bootx64.efi
---------------------------------------------
certificate address is 0x7fb0f0f8dd80
Content was not encrypted.
Content is detached; signature cannot be verified.
The signer's common name is Microsoft Windows UEFI Driver Publisher
No signer email address.
No signing time included.
There were certs or crls included.
---------------------------------------------
セキュアブート署名がない場合、出力は次のようになります。
# pesign -S -i ipxe.efi
No signatures found.
市販されているほとんどのUEFI PCには、セキュアブートファームウェアにMicrosoftの署名証明書が含まれており、MicrosoftはUEFIブートローダ署名サービスも他の人に提供するため、セキュアブート互換Linuxブートローダで最も一般的な署名はMicrosoftの署名です。 。
GRUBを含むリムーバブルメディアがセキュアブートと互換性がある場合、実際の<partition root>/efi/boot/bootx64.efi
ファイルは次のようになります。スペーサープリローダー。セキュアブートシステムにLinuxを永久にインストールすると、shimプリローダを見つけることができますshimx64.efi
。 Deployment Managerの自己署名証明書とオプションで、システム所有者の自己証明書(MOK =マシン所有者キーと呼ばれる)のセキュリティブートサポートを追加できます。残念ながら、すべてのUEFIファームウェアの実装がファームウェアに含まれているセキュアブートキーを簡単にカスタマイズする方法を許可するわけではないため、これは必要です。
証明書を追加すると、shimプリローダはgrubx64.efi
同じディレクトリに名前が付けられた実際のブートローダをロードします。 (技術的には実際にはGRUBである必要はありません。シムフリーローダーにプログラムされたデフォルトのファイル名にすぎません。)ファイルも署名する必要がありますが、署名するときにMicrosoft証明書ではなくDeployment Managerの独自の証明書を使用する可能性があります。
この目的は、ディストリビューション管理者が必要に応じてGRUBの更新されたバージョンを簡単にパッケージ化してリリースできるようにすることです。これは、ディストリビューションマネージャの独自のキーを使用してGRUBに署名できるためです。 shim プリローダを更新する必要がある場合は、デプロイメンテナンス担当者はマイクロソフトに連絡し、更新された shim に再署名する必要があります。