EFIシステムパーティション (EFI system partition; ESP) とはデータ記憶装置(ハードディスクドライブやソリッドステートドライブなど)のパーティションの一つで、UEFIに準拠するコンピュータで使われる。コンピュータの電源を入れて起動するとき、UEFIファームウェアはESPに記憶されているファイルを読み込み、インストールされているオペレーティングシステムや様々なユーティリティをブートする。ESPはUEFIで規定されているFATベースのファイルシステムでフォーマットされている必要がある。このファイルシステムの仕様は本来のFATの仕様とは別物とされている。[1][2]
ESPには他のパーティションにインストールされている全てのオペレーティングシステムのブートローダまたはカーネルイメージ、起動時にファームウェアが使用するデバイスドライバ、オペレーティングシステムが起動する前に実行されるシステムユーティリティプログラム、エラーログなどのデータファイルが含まれる。[3]
EFIシステムパーティションはUEFIで規定されているFATファイルシステムに基づいた仕様のファイルシステムでフォーマットされている必要がある。GUIDパーティションテーブル (GPT) にあるEFIシステムパーティションのGUIDはC12A7328-F81F-11D2-BA4B-00A0C93EC93B
で、MBRパーティションテーブルでのIDは0xEF
である。GPTディスクおよびMBRディスクの両方ともEFIシステムパーティションを含むことができ、UEFIファームウェアは両方の形式をサポートする必要がある。また、CD-ROMやDVDのEl Toritoブータブルフォーマットもサポートされている。[3]
UEFIはパーティションの最初のブロック(セクタ)を旧来の(レガシー)ブートセクタを生成するための予約領域とすることで、旧来のシステムとの後方互換性を提供する。旧来のBIOSベースのシステムでは、パーティションの最初のセクタはメモリに読み込まれた後にコードとして実行される。UEFIファームウェアは互換性サポートモジュール (CSM) を通して旧来のBIOSモードで起動する時を除き、マスターブートレコード (MBR) のコードは実行しない。[4]
UEFIの仕様ではMBRパーティションテーブルを完全にサポートすることが求められる[3]。しかし、いくつかのUEFI実装ではブートディスク上のパーティションテーブルの種類を検出してBIOSベースのCSMブートに切り替えることにより、MBRディスクのEFIシステムパーティションからUEFIブートすることを妨げる場合がある。[3]
UEFIファームウェアはUSBフラッシュドライブといったリムーバブルドライブからの起動をサポートする。この用途では、リムーバブルドライブはFAT12、FAT16、またはFAT32ファイルシステムでフォーマットする必要がある。ブートローダはESP標準ファイル体系に基づいて保存されているか、あるいはブートローダーの完全パスをシステムのブートマネージャに渡す必要がある。[3]
GRUB2およびeliloはLinux用の完全に独立したUEFIブートマネージャとして提供する。一度UEFIファームウェアによって読み込まれると、EFIシステムパーティションに限らずサポートする全てのデバイス、パーティションおよびファイルシステムにあるカーネルイメージへアクセスして起動することができる。
EFI Boot Stubは標準のUEFIブートローダを使用せずにLinuxカーネルを起動することを可能にする。自身をPE/COFFイメージと見せかけてファームウェアにUEFIアプリケーションとして認識させることで、EFI Boot Stub付きx86カーネルイメージをUEFIファームウェアから直接読み込み・実行させることができる。BIOSベースのブートローダも読み込み・実行させることができるため、EFI Boot Stubはどんな起動環境でも単一カーネルイメージを使用できるようになっている。[5]
LinuxカーネルのEFI Boot StubサポートはカーネルのコンフィグでCONFIG_EFI_STUB
オプションをオンにすることで有効にすることができる[6]。これは2012年3月18日にリリースされた安定版Linuxカーネル バージョン3.3で取り入れられた[7]。
Gummiboot (systemd-bootとも言う) はEFIシステムパーティションのみにアクセスしてUEFIイメージを読み込み・実行するシンプルなUEFIブートマネージャである。Gummibootは他のパーティションやファイルシステムにあるファイルへのアクセスをサポートしないため、設定ファイルの一部、カーネルイメージやinitrdイメージはEFIシステムパーティション上に配置する必要がある。LinuxカーネルはCONFIG_EFI_STUB
でビルドする必要があるため、カーネルはUEFIイメージとして直接実行される[8]。
EFIシステムパーティションのマウントポイントは通常/boot/efi
にあり、Linuxが起動した後にアクセスできるようになる[9]。
マイクロソフトは、ディスクにパーティションを作成するとき、その最初に置くパーティションはEFIシステムパーティションにすることを推奨している[10]。これはEFIの仕様で求められているわけではない。Windows XP 64ビットエディションおよびそれ以降ではmountvol /s
コマンドを実行することでEFIシステムパーティションにアクセスできるようになる。
Intel Macでは、EFIシステムパーティションは未使用のままで起動には使用されていない[11]。しかし、EFIシステムパーティションはファームウェアアップデート時に一時的に使われる[12]。
EFIパーティションが削除されてもシステムはブートできる。この場合、ユーザーはブートマネージャでBoot Campと既定のmacOSのどちらから起動するかを選ぶことができるが、ファームウェアアップデートは失敗する。
/EFI
directory on an EFI System partition (ESP)