UEFIはどのブートローダー構成を使用するかをどのように知るのか

UEFIはどのブートローダー構成を使用するかをどのように知るのか

UEFI について読んでからしばらく経ち、いくつかの部分がどのように接続されるかを忘れてしまいました。UEFI と Grub ブートローダーがどのように連携するかも忘れてしまいました。覚えていることを述べますが、間違っていたら訂正してください。

  • UEFI は OS に依存せず、ディスクの数に関係なく単一の ESP パーティションで動作します。
  • ESP パーティションは、新しいオペレーティング システムが、独自のフォルダーにブートローダーとパーティション参照を追加することで、UEFI プロセスに自分自身を「サブスクライブ」する場所です。基本的に、インストールされている OS ごとに、/boot/efi に 1 つのフォルダーがあります。
  • ブートローダはシーケンスとして NVRAM に保存されます。

現在、私は Ubuntu、Windows、Arch がインストールされているマシンを使用しています。すべての OS にはブートローダーがありますが、マシンに「ブート エントリ」が表示されるときは、実際には Ubuntu の Grub 構成が表示されています。マシン内のオペレーティング システムをロードするために Ubuntu の grub を使用しているようなものです。

そこで疑問になるのが、UEFI はどのようにして Ubuntu が「メイン」ブートローダーであることを認識するのかということです。マシンを起動するたびに、Windows または Arch ブートローダーが表示されないのはなぜでしょうか。

答え1

UEFI はシステム ファームウェアであり、GRUB はファームウェアに準拠するように構築されたブートローダーです。

BIOS を使用した GRUB は、MBR 内および最初のパーティションの前のブート コードの形式をとります。UEFI を使用した場合、GRUB はgrubx64.efiESP パーティション内の単一ファイルの形式をとることができます。GRUB アーキテクチャ識別子は、BIOS 用i386-pcと、64 ビット x86 ハードウェア上の UEFI 用ですx86_64-efi

UEFI は何も知りません。通常は、見つかったブートローダのメニューを表示するだけです。見つかったブートローダが 1 つだけの場合はメニューは表示されず、質問せずにそのブートローダを起動します。

あなたの場合、明らかに Grub は唯一のブートローダなので、起動時にすぐに実行されます。

EFI ファームウェアによってブート用に Grub が選択される方法は 2 つあります。

  1. UEFI ブート変数はシステム NVRAM に保存されます。Linux では、 を使用して編集できますefibootmgr。Windows では、bcdedit /enum FIRMWAREそれらを一覧表示して編集できます。

  2. UEFI ブート変数が定義されていない場合、UEFI ファームウェアは ESP パーティション内でブートローダーを検索します。この場合、\EFI\boot\bootx64.efi64 ビット ハードウェアが見つかる可能性があります。

関連情報