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)以外のテクノロジを使用する場合があります。