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.efi
ESP パーティション内の単一ファイルの形式をとることができます。GRUB アーキテクチャ識別子は、BIOS 用i386-pc
と、64 ビット x86 ハードウェア上の UEFI 用ですx86_64-efi
。
UEFI は何も知りません。通常は、見つかったブートローダのメニューを表示するだけです。見つかったブートローダが 1 つだけの場合はメニューは表示されず、質問せずにそのブートローダを起動します。
あなたの場合、明らかに Grub は唯一のブートローダなので、起動時にすぐに実行されます。
EFI ファームウェアによってブート用に Grub が選択される方法は 2 つあります。
UEFI ブート変数はシステム NVRAM に保存されます。Linux では、 を使用して編集できます
efibootmgr
。Windows では、bcdedit /enum FIRMWARE
それらを一覧表示して編集できます。UEFI ブート変数が定義されていない場合、UEFI ファームウェアは ESP パーティション内でブートローダーを検索します。この場合、
\EFI\boot\bootx64.efi
64 ビット ハードウェアが見つかる可能性があります。