EFI ファイル形式とは?
.efi ファイルは、x86-64 および ARM ベースのハードウェアを使用するコンピュータシステムやデバイスで使用される システムファイル です。.efi ファイルには、ファームウェアとオペレーティングシステムの階層間で実行される実行コードが含まれています。技術的には、標準的な Windows サブシステムではなく、UEFI 固有のサブシステム値を持つ PE32+ Portable Executable イメージです。
.efi ファイルの用途
.efi システムファイルは、システムの起動プロセス、ファームウェアアップデートのステージング、およびプリブートプログラムの実行中に使用されます。.efi ファイルにより、システムはプリブートプロセスを制御された環境に引き渡すことができます。一般的な例としては、bootmgfw.efi (Windows Boot Manager)、grubx64.efi (Linux 用 GRUB ブートローダー)、shimx64.efi (Secure Boot shim) などがあります。ファームウェアアップデートパッケージに含まれ、起動プロセス中に読み込まれる .efi ファイルもあります。すべての .efi バイナリは、EFI システムパーティション (ESP) に配置されている必要があります。ESP は、OS ドライバーが読み込まれる前にファームウェアがアクセスできる、GPT パーティションディスク上の FAT32 ボリュームです。
EFI と UEFI 仕様
EFI 規格は当初 Intel によって開発されました。EFI は後に更新され、UEFI (Unified Extensible Firmware Interface) として知られるようになり、事実上すべての現代の PC やサーバーで従来の Basic Input/Output System (BIOS) に取って代わりました。現在は、業界コンソーシアムである UEFI フォーラムがこの仕様を維持しています。
セキュリティと安全性
リスク: MEDIUM.efi は、OS の起動前という非常に特権的なタイミングで、完全なファームウェアアクセス権を持って実行される実行コードです。そのため、悪意のある .efi(ブートキット)は非常に危険で持続的である可能性があります。現代の PC では、信頼できるキーで署名されていない .efi バイナリの実行を拒否する UEFI Secure Boot によってこのリスクを軽減しています。実用的なガイダンス:不明な .efi を EFI システムパーティションに配置したり実行したり、信頼できない .efi から起動したりしないでください。特別な理由がない限り、Secure Boot は有効にしたままにしてください。また、ESP 内の正当な .efi ファイル(bootmgfw.efi、grubx64.efi など)を削除したり名前を変更したりすると、マシンが起動不能になるという同様に深刻なリスクがあります。ブートローダーを意図的に修復する場合を除き、これらには手を触れないでください。
形式の詳細
概要- Adobe のカプセル化/埋め込みフォント、または HP プリンタのファームウェアバイナリ - いくつかの無関係な製品が歴史的に内部データに .efi を使用してきましたが、PC 上で目にするほぼすべての .efi は UEFI ブートバイナリです。
EFI ファイルを開くプログラム
技術的詳細
詳細仕様| ファイルシグネチャ | オフセット 0 に `MZ` (16進数 `4D 5A`) - DOS スタブ。ヘッダーオフセット `0x3C` にある 4 バイトの LE ポインタで示されるオフセットに PE シグネチャ (バイト `50 45 00 00`) |
| ベースバイナリ形式 | PE32+ (64ビット Portable Executable) - Windows の `.exe` と同じコンテナ形式で、PE サブシステムフィールドの値のみで区別されます |
| PE サブシステムフィールド値 | 10 = EFI Application; 11 = EFI Boot Service Driver; 12 = EFI Runtime Driver; 13 = EFI ROM Image |
| MIME タイプ | `application/efi` |
| サポートされている CPU アーキテクチャ | x86-64 (IA-32e), IA-32, ARM Thumb-2, AArch64, RISC-V 32/64/128, IA-64 (Itanium) - アーキテクチャは PE Machine フィールドにエンコードされます |
| 必要なパーティションとファイルシステム | GPT パーティションディスク上の FAT12、FAT16、または FAT32 でフォーマットされた EFI システムパーティション (ESP)。NTFS および ext4 は UEFI ファームウェアによってネイティブにサポートされていません |
| ESP 上の標準インストールパス | `\EFI\<Vendor>\<name>.efi` - 例: `\EFI\Microsoft\Boot\bootmgfw.efi` または `\EFI\ubuntu\grubx64.efi` |
| Secure Boot コード署名 | Authenticode (RSA + SHA-256) で署名。UEFI Secure Boot キーデータベース(PK (Platform Key)、KEK、`db` (許可)、`dbx` (取り消し))に対して検証されます |
| エントリポイントのプロトタイプ | `EFI_STATUS EFIAPI ImageEntry(EFI_HANDLE ImageHandle, EFI_SYSTEM_TABLE *SystemTable)` - すべての EFI アプリケーションタイプで同じシグネチャ |
| 実行特権レベル | 最高の CPU 特権レベル - x86 では ring 0 (CPL0)、AArch64 では EL1 または EL2。ハードウェアに直接アクセスできるフラットなプリ OS アドレス空間 |
| Boot Service と Runtime の常駐性 | Boot Service Drivers (サブシステム 11) は OS が `ExitBootServices()` を呼び出すとアンロードされます。Runtime Drivers (サブシステム 12) は OS への引き渡し後もマップされたまま残ります |
| ディスクパーティショニング要件 | ネイティブ UEFI ブートモードには GPT (GUID Partition Table) が必須です。MBR のみのディスクはサポートされていません |
| 一般的な既知のバイナリ | `bootmgfw.efi` (Windows Boot Manager), `grubx64.efi` (GRUB), `shimx64.efi` (Secure Boot shim), `Shell.efi` (UEFI インタラクティブシェル) |
| ビルドツールチェーン | EDK II (TianoCore), GNU-EFI, LLVM/clang (`-target x86_64-unknown-uefi`)。出力は UEFI サブシステムフラグを持つ PE32+ イメージとしてリンクされる必要があります |
| リリース日 | EFI 1.0 (Intel, ~2000) → UEFI 2.x (UEFI Forum, 2005+); standard on PCs since ~2012 |
| オープンスタンダード | はい · ロイヤリティフリー |
| 仕様書 | uefi.org |
EFI の変換
コミュニティ Q&A
ユーザーからの質問まだ質問はありません。EFI ファイルについて最初の質問をしてみましょう。
よくある質問
EFI ファイルとは何ですか?
EFI ファイルを開くにはどうすればよいですか?
EFI ファイルを削除しても大丈夫ですか?
EFI ファイルは EXE と同じですか?
ドライブや USB に EFI パーティションや BOOTX64.EFI があるのはなぜですか?
\EFI\BOOT\BOOTX64.EFI を使用することで、あらゆる UEFI PC で起動できるようになっています。