EFI System Partition(ESPとも呼ばれている)は、UEFIファームウェア が起動時に最初に読みに行くパーティション。ファームウェアはFAT32しか読めないため、ESPはFAT32でフォーマットされている必要がある。

ESPのファイル構造

ESPにはUEFIが実行できるブートローダーのバイナリファイルが置かれる。以下はその典型的な構造。

EFI/
├── BOOT/
│ └── BOOTX86.EFI
└── grub/
  ├── grubx64.efi
  └── grub.cfg

起動の流れ

  1. PCの電源を入れる。
  2. UEFIファームウェアがESPを探す。
  3. ESP内のEFIバイナリ(上記のファイル構造だと grubx64.efi)を実行する。
  4. GRUBが grub.cfg を読み、カーネルイメージと initramfs のパスを知る。
  5. GRUBがカーネルをメモリにロードし、制御を渡す。
  6. 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のインストール時)などが挙げられる。