EFI \ boot \ bootx64.efi vs EFI \ ubuntu \ grubx64.efi vs /boot/grub/x86_64-efi/grub.efi vs C:\ Windows \ Boot \ EFI \ *

Windows 1064bitと一緒にUbuntu19 64bitをインストールしましたが、異なる場所に3つの異なるEFIファイルがあることがわかりました:

EFI\boot\bootx64.efi EFI\ubuntu\grubx64.efi /boot/grub/x86_64-efi/grub.efi 

これら3つの違いは何ですか?

コメント

  • 通常、両方のWindows & grub2 installbootx64。フォールバックまたはハードドライブUEFIブートエントリとしてのefi。これは、すべての外部デバイスの標準パス&ファイルでもあります。 /EFI/ubuntu/grubx64.efiと/EFI/ubuntu/shimx64.efiの両方が必要です。シムはセキュアブート用ですが、セキュアブートをオフにして起動します。なぜまだグラブがあるのかわからないのですか? grub.efiがどこから来たのかわからない。ある時点で、デフォルトのgrubエントリを使用する別のディストリビューションをインストールする必要があります。
  • EFIを備えたマルチLinuxディストリビューションドライブを入手するために調査しています(MBR用に作成済みですが' EFIのみをサポートするBIOSを搭載した最近のコンピューターでは動作しません)、質問に答え、EFIを非常に詳細に説明するこのページを見つけました。答えは大きいので、'すべてがどのように機能するかを理解したい場合に備えて、リンクを配置します: rodsbooks。 com / efi-bootloaders

回答

EFI\boot\bootx64.efi:フォールバックブートローダーパス

これは、64ビットX86システム上のUEFIファームウェアが既存のNVRAMブート設定なしで検索する唯一のブートローダーパス名であるため、これを使用する必要があります。リムーバブルメディア。

Windowsは、ブートローダーのコピーをこのパスに自動的にインストールします。 GRUBをインストールするとき、grub-install(またはLinuxディストリビューションによってはgrub2-install)コマンドは、それぞれのブートローダーのコピーをここに配置する場合もあります。まだ存在していません。必要に応じて、grub-install --removableを使用してフォールバックブートパスにインストールするように指示するか、grub-install --force-extra-removableを使用して既存のブートローダーを上書きすることができます。フォールバックパスをGRUBに置き換えます。

UEFI用のセキュアブート互換USBスティックを作成する場合は、シムのコピーをEFI\boot\bootx64.efiおよびGRUBのコピーをEFI\boot\grubx64.efiとして、shimブートローダーがshimブートローダーと同じディレクトリでgrubx64.efi を検索するためin。

永続的にインストールされたOSのブートローダーパス

オペレーティングシステムがUEFIシステムに永続的にインストールされた場合、絶対に存在しなかった新しいステップが1つあります。クラシックBIOS。ブートローダーをインストールすると、ファームウェア設定を保持するNVRAMメモリに次の4つが書き込まれます。

  • ブートローダーを保持するEFIシステムパーティション(ESP)のブートローダーパス名
  • ESPパーティションのGUID
  • この特定のブートローダーインスタンスの説明的な(人間にわかりやすい)名前
  • オプションで、ブートローダーの一部のデータ

Windowsの場合、Windowsブートプロセスの標準UEFIパス名は\EFI\Microsoft\Boot\bootmgfw.efiになり、説明的な名前は" Windowsになります。ブートマネージャー"。オプションのデータには、WindowsブートローダーのBCD構成ファイル内の何かへのGUID参照が含まれているようです。

Ubuntuの場合、パス名は\EFI\Ubuntu\grubx64.efiにする必要があります。 「セキュアブートのサポートは必要ありません。セキュアブートシムが使用されている場合は\EFI\Ubuntu\shimx64.efiです。わかりやすい名前は単に" ubuntu "であり、オプションのデータは使用されません。

Ubuntuでは、これらのUEFI NVRAMのブート設定は、sudo efibootmgr -vコマンドを使用して表示できます。 Windowsでは、管理者としてコマンドプロンプトを開始し、bcdedit /enum firmwareコマンドを使用して設定を表示できます。

UEFI仕様各ベンダーは、ESPのパス\EFI\<vendor name>内に永続的にインストールされたOSのブートローダーを配置する必要があるという標準的な規則があるため、同じESPに複数のUEFIブートローダーを共存させることが実際にサポートされていますまた、ディスクごとに1つのマスターブートレコードを持つ従来のBIOSよりも簡単になります。

/boot/grub/x86_64-efi/grub.efi

grub-installを使用すると、最初にgrub-mkimageユーティリティを使用して GRUBコアイメージ:UEFIシステムでは、このファイルは/boot/grub/x86_64-efi/grub.efiまたは.../core.efiに保存されます。 EFIシステムパーティションにコピーされ、grub-installによってUEFINVRAMブート設定に追加されます。/boot/grub/x86_64-efi/*.efiのコピーは、ブートプロセスではまったく使用されませんが、何らかの理由でESPが破損した場合に役立つ可能性があります。

注: Debian / Ubuntuでは、生成されたGRUBコアイメージには、/bootディレクトリなので、/boot/grub/x86_64-efi/grub.efiまたはgrubx64.efiのいずれかのコピーをから作成することはできません。 ESPをリムーバブルメディアに移植します。/bootファイルシステムの一意のUUIDを見つけようとするだけで、見つからない場合はレスキューモードになります。正しく思い出せば、RedHat / CentOS / FedoraのGRUBはリムーバブルメディアへの移植に適しているはずです。

セキュアブート:shimx64.efiとその理由

セキュアブートでは、システムのセキュアブートNVRAM変数dbまたはブートローダーのSHA256に含まれている証明書によってブートローダーに署名する必要があります。ハッシュは同じNVRAM変数にホワイトリストに登録する必要があります。 SHA256ハッシュは特定のブートローダーの特定のバージョンにのみ一致するため、ファームウェア変数も更新されない限り更新はできません。したがって、証明書を使用する方法があります。

残念ながら、多くのシステムベンダーが製品に含まれるセキュアブート証明書はごくわずかです。多くの場合、ベンダー独自の証明書(ファームウェアアップデートおよびハードウェアデバッグ/ OEM構成ツール用)とマイクロソフトのセキュアブート証明書のみが含まれます。一部のシステムでは、セキュアブートのリストを編集できます。ファームウェア設定(= " BIOS設定")による証明書ですが、他の人はそうしません。そのため、独立したソリューションが必要でした。

Microsoftは誰にでもUEFIブートローダー署名サービスを提供していますが、少なくとも最初は署名の所要時間が非常に長いため、GRUBのすべてのバージョンに直接署名する必要がありました。ブートローダーの更新における許容できない遅延。この問題を解決するために、shimブートローダーが開発されました。これは基本的に1つ以上の証明書をSecure Bootの承認済みリストに追加する最も単純で合理的なUEFIプログラムです。単純なため、shim自体を更新する必要が少なくなるため、オープンになります。 -ソースOSディストリビューション(Linuxなど)は、Microsoftによって署名されたシムのバージョンを一度だけ取得してから、独自の証明書を使用してGRUBの任意のバージョンに署名できます。そのパブリック部分はシムに埋め込まれており、セキュアブートがディストリビューションを受け入れることができます。」 sバージョンのGRUB。

コメント

  • 回答ありがとうございます。ところで、AFAIK bootmgfw.efiは' nt Windowsブートローダーであり、'のWindowsBoot Manager、これは、Windowsブートローダー\Windows\System32\winload.efiを呼び出します。また、NVRAMとはどういう意味ですか? CMOS?
  • 冗長になりすぎないようにしたので、" Windowsブートローダー"の問題に関して単純化しすぎたようです。 。はい、NVRAMとは、ファームウェア設定を含む不揮発性ストレージを意味します。これは、従来のPCではCMOSメモリとも呼ばれていましたが、最近のシステムでは、実際にはCMOS(Complementary Metal Oxide Semiconductor)以外のテクノロジを使用する場合があります。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です