EFI System Partition(ESPとも呼ばれている)は、UEFIファームウェア が起動時に最初に読みに行くパーティション。ファームウェアはFAT32しか読めないため、ESPはFAT32でフォーマットされている必要がある。
ESPのファイル構造
ESPにはUEFIが実行できるブートローダーのバイナリファイルが置かれる。以下はその典型的な構造。
EFI/
├── BOOT/
│ └── BOOTX86.EFI
└── grub/
├── grubx64.efi
└── grub.cfg
起動の流れ
- PCの電源を入れる。
- UEFIファームウェアがESPを探す。
- ESP内のEFIバイナリ(上記のファイル構造だと
grubx64.efi)を実行する。 - GRUBが
grub.cfgを読み、カーネルイメージと initramfs のパスを知る。 - GRUBがカーネルをメモリにロードし、制御を渡す。
- Linuxカーネルが起動する。
GRUBとの関係
GRUBはUEFI環境では「EFIアプリケーション(.efi ファイルのこと)」として ESP に配置されている。上記のファイル構造だと EFI/grub/grubx64.efi。
つまり、ESP は GRUB を配置するためのファイルシステムと捉えられる。 (Claude によると、UEFI が直接カーネルを起動する方法(EFISTUB)というのもあるらしい)
BOOTX86.EFI は使わないのか?
「起動の流れ」にて、BOOTX86.EFI というファイルが使用されていなかった為、何に使用するのか説明する。
実はUEFIファームウェアには 2 つの探し方があり、通常はNVRAMのブートエントリーのファイルパスにある .efi ファイル(ブートローダー)を使用するのだが、設定されていない or 見つからない場合は /EFI/BOOT/BOOTX64.EFI を探すらしい。
つまり、通常では BOOTX64.EFI は使用されない。ユースケースとしては、USBメモリからの起動(OSのインストール時)などが挙げられる。