EFIシステムパーティション

EFIシステムパーティション (EFI system partition; ESP) とはデータ記憶装置（ハードディスクドライブやソリッドステートドライブなど）のパーティションの一つで、UEFIに準拠するコンピュータで使われる。コンピュータの電源を入れて起動するとき、UEFIファームウェアはESPに記憶されているファイルを読み込み、インストールされているオペレーティングシステムや様々なユーティリティをブートする。ESPはUEFIで規定されているFATベースのファイルシステムでフォーマットされている必要がある。このファイルシステムの仕様は本来のFATの仕様とは別物とされている。 ESPには他のパーティションにインストールされている全てのオペレーティングシステムのブートローダまたはカーネルイメージ、起動時にファームウェアが使用するデバイスドライバ、オペレーティングシステムが起動する前に実行されるシステムユーティリティプログラム、エラーログなどのデータファイルが含まれる。 EFIシステムパーティションはUEFIで規定されているFATファイルシステムに基づいた仕様のファイルシステムでフォーマットされている必要がある。GUIDパーティションテーブル (GPT) にあるEFIシステムパーティションのGUIDはC12A7328-F81F-11D2-BA4B-00A0C93EC93Bで、MBRパーティションテーブルでのIDは0xEFである。GPTディスクおよびMBRディスクの両方ともEFIシステムパーティションを含むことができ、UEFIファームウェアは両方の形式をサポートする必要がある。また、CD-ROMやDVDのEl Toritoブータブルフォーマットもサポートされている。 UEFIはパーティションの最初のブロック（セクタ）を旧来の（レガシー）ブートセクタを生成するための予約領域とすることで、旧来のシステムとの後方互換性を提供する。旧来のBIOSベースのシステムでは、パーティションの最初のセクタはメモリに読み込まれた後にコードとして実行される。UEFIファームウェアは互換性サポートモジュール (CSM) を通して旧来のBIOSモードで起動する時を除き、マスターブートレコード (MBR) のコードは実行しない。 UEFIの仕様ではMBRパーティションテーブルを完全にサポートすることが求められる。しかし、いくつかのUEFI実装ではブートディスク上のパーティションテーブルの種類を検出してBIOSベースのCSMブートに切り替えることにより、MBRディスクのEFIシステムパーティションからUEFIブートすることを妨げる場合がある。 UEFIファームウェアはUSBフラッシュドライブといったリムーバブルドライブからの起動をサポートする。この用途では、リムーバブルドライブはFAT12、FAT16、またはFAT32ファイルシステムでフォーマットする必要がある。ブートローダはESP標準ファイル体系に基づいて保存されているか、あるいはブートローダーの完全パスをシステムのブートマネージャに渡す必要がある。 GRUB2およびeliloはLinux用の完全に独立したUEFIブートマネージャとして提供する。一度UEFIファームウェアによって読み込まれると、EFIシステムパーティションに限らずサポートする全てのデバイス、パーティションおよびファイルシステムにあるカーネルイメージへアクセスして起動することができる。 EFI Boot Stubは標準のUEFIブートローダを使用せずにLinuxカーネルを起動することを可能にする。自身をPE/COFFイメージと見せかけてファームウェアにUEFIアプリケーションとして認識させることで、EFI Boot Stub付きx86カーネルイメージをUEFIファームウェアから直接読み込み・実行させることができる。BIOSベースのブートローダも読み込み・実行させることができるため、EFI Boot Stubはどんな起動環境でも単一カーネルイメージを使用できるようになっている。 LinuxカーネルのEFI Boot StubサポートはカーネルのコンフィグでCONFIG_EFI_STUBオプションをオンにすることで有効にすることができる。これは2012年3月18日にリリースされた安定版Linuxカーネル バージョン3.3で取り入れられた。 Gummiboot (systemd-bootとも言う) はEFIシステムパーティションのみにアクセスしてUEFIイメージを読み込み・実行するシンプルなUEFIブートマネージャである。Gummibootは他のパーティションやファイルシステムにあるファイルへのアクセスをサポートしないため、設定ファイルの一部、カーネルイメージやinitrdイメージはEFIシステムパーティション上に配置する必要がある。LinuxカーネルはCONFIG_EFI_STUBでビルドする必要があるため、カーネルはUEFIイメージとして直接実行される。 EFIシステムパーティションのマウントポイントは通常/boot/efiにあり、Linuxが起動した後にアクセスできるようになる。 マイクロソフトは、ディスクにパーティションを作成するとき、その最初に置くパーティションはEFIシステムパーティションにすることを推奨している。これはEFIの仕様で求められているわけではない。Windows XP 64ビットエディションおよびそれ以降ではmountvol /sコマンドを実行することでEFIシステムパーティションにアクセスできるようになる。 Intel Macでは、EFIシステムパーティションは未使用のままで起動には使用されていない。しかし、EFIシステムパーティションはファームウェアアップデート時に一時的に使われる。 EFIパーティションが削除されてもシステムはブートできる。この場合、ユーザーはブートマネージャでBoot Campと既定のmacOSのどちらから起動するかを選ぶことができるが、ファームウェアアップデートは失敗する。 Windows To Go ^ “UEFI Specification Version 2.5, Section 12.3 File System Format” (PDF). UEFI.org. pp. 536, 537 (2015年4月). 2015年5月29日閲覧。 “The file system supported by the Extensible Firmware Interface is based on the FAT file system. EFI defines a specific version of FAT that is explicitly documented and testable. Conformance to the EFI specification and its associate reference documents is the only definition of FAT that needs to be implemented to support EFI. To differentiate the EFI file system from pure FAT, a new partition file system type has been defined.” ^ “Technical Note TN2166: Secrets of the GPT”. Developer.Apple.com (2006年11月6日). 2015年5月6日閲覧。 ^ a b c d e “UEFI Specifications (versions 2.5 and older)” (PDF). UEFI.org (2015年4月). 2015年5月29日閲覧。 ^ “UEFI system booting from MBR partition table and GRUB legacy”. archlinux.org (2012年6月). 2013年10月6日閲覧。 ^ “Linux kernel documentation: Documentation/efi-stub.txt”. Kernel.org (2014年6月16日). 2014年11月26日閲覧。 ^ “Linux kernel 3.11.1 arch/x86/Kconfig: CONFIG_EFI_STUB (line #1575)”. Kernel.org. 2013年10月6日閲覧。 ^ “Linux kernel 3.3: 1.10. EFI boot support”. KernelNewbies.org (2012年3月18日). 2013年10月6日閲覧。 ^ “gummiboot: Simple UEFI Boot Manager”. FreeDesktop.org. 2013年9月12日時点のオリジナルよりアーカイブ。2016年1月22日閲覧。 ^ “UEFI - Community Ubuntu Documentation”. Ubuntu.com (2013年12月21日). 2013年12月27日閲覧。 ^ “EFI System Partition”. Windows and GPT FAQ. 2006年5月31日閲覧。 ^ “rEFIt: Myths and Facts About Intel Macs – Myth: Mac OS X requires a hidden EFI System Partition”. 2010年4月8日閲覧。 ^ “Firmware updates for Intel-based Macs require a GUID partition scheme”. Apple Knowledgebase. 2009年8月7日閲覧。 EFI System Partition Subdirectory Registry – A registry of the subdirectories that lie below the /EFI directory on an EFI System partition (ESP)