Что такое формат файла EFI?
Файл .efi - это системный файл, используемый компьютерными системами и устройствами на базе оборудования x86-64 и ARM. Файл .efi содержит исполняемый код, который работает на уровне между прошивкой и операционной системой - технически это образ PE32+ Portable Executable со значением подсистемы, специфичным для UEFI, а не стандартной подсистемы Windows.
Использование файлов .efi
Системные файлы .efi используются в процессе загрузки системы, для подготовки обновлений прошивки и запуска программ перед загрузкой ОС. Файлы .efi позволяют системе передавать процессы предзагрузки в контролируемую среду. Распространенные примеры включают bootmgfw.efi (диспетчер загрузки Windows), grubx64.efi (загрузчик GRUB для Linux) и shimx64.efi (прослойка Secure Boot). Иногда файлы .efi включаются в пакеты обновления прошивки и загружаются в процессе загрузки. Все бинарные файлы .efi должны находиться в системном разделе EFI (ESP) - томе FAT32 на диске с разметкой GPT, к которому прошивка может получить доступ до загрузки любого драйвера ОС.
EFI и спецификация UEFI
Стандарт EFI изначально был разработан Intel. Позже EFI был обновлен и стал известен как UEFI (Unified Extensible Firmware Interface), который заменил устаревшую систему Basic Input/Output System (BIOS) практически на всех современных ПК и серверах. Спецификацию теперь поддерживает UEFI Forum - отраслевой консорциум.
Безопасность и защита
РИСК: MEDIUMФайл .efi - это исполняемый код, который запускается в очень привилегированный момент - до ОС, с полным доступом к прошивке - поэтому ВРЕДОНОСНЫЙ .efi («буткит») может быть опасным и устойчивым. Современные ПК смягчают эту угрозу с помощью UEFI Secure Boot, которая отказывается запускать бинарные файлы .efi, не подписанные доверенным ключом. Практический совет: никогда не помещайте и не запускайте неизвестные .efi в системном разделе EFI и не загружайтесь с ненадежных .efi; держите Secure Boot включенным. Обратный риск не менее реален: удаление или переименование легитимных файлов .efi в ESP (например, bootmgfw.efi, grubx64.efi) может сделать машину незагружаемой - не трогайте их, если только вы не занимаетесь намеренным восстановлением загрузчика.
Детали формата
в двух словах- Инкапсулированные/встроенные шрифты Adobe или прошивки принтеров HP - Несколько не связанных между собой продуктов исторически использовали расширение .efi для внутренних данных; на ПК почти каждый .efi, который вы встретите, является загрузочным бинарным файлом UEFI.
Программы, открывающие файлы EFI
Технические подробности
глубокая спецификация| Сигнатура файла | `MZ` (hex `4D 5A`) со смещением 0 - заглушка DOS; сигнатура PE (байты `50 45 00 00`) по смещению, указанному 4-байтовым указателем LE в заголовке по смещению `0x3C` |
| Базовый бинарный формат | PE32+ (64-битный Portable Executable) - тот же формат контейнера, что и у Windows `.exe`, отличается только значением поля PE Subsystem |
| Значения поля подсистемы PE | 10 = EFI Application; 11 = EFI Boot Service Driver; 12 = EFI Runtime Driver; 13 = EFI ROM Image |
| MIME-тип | `application/efi` |
| Поддерживаемые архитектуры процессоров | x86-64 (IA-32e), IA-32, ARM Thumb-2, AArch64, RISC-V 32/64/128, IA-64 (Itanium) - архитектура закодирована в поле PE Machine |
| Требуемый раздел и файловая система | Системный раздел EFI (ESP), отформатированный как FAT12, FAT16 или FAT32 на диске с разметкой GPT; 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 |
| Уровень привилегий выполнения | Высший уровень привилегий процессора - ring 0 (CPL0) на x86; EL1 или EL2 на AArch64 - в плоском адресном пространстве до загрузки ОС с прямым доступом к оборудованию |
| Различие Boot Service и Runtime | Драйверы Boot Service (подсистема 11) выгружаются, когда ОС вызывает `ExitBootServices()`; драйверы Runtime (подсистема 12) остаются в памяти после передачи управления ОС |
| Требование к разметке диска | GPT (GUID Partition Table) требуется для нативного режима загрузки UEFI; диски только с MBR не поддерживаются |
| Общие известные бинарные файлы | `bootmgfw.efi` (диспетчер загрузки Windows), `grubx64.efi` (GRUB), `shimx64.efi` (прослойка Secure Boot), `Shell.efi` (интерактивная оболочка UEFI) |
| Инструментарии сборки | EDK II (TianoCore), GNU-EFI, LLVM/clang с параметром `-target x86_64-unknown-uefi`; результат должен быть скомпонован как образ PE32+ с флагами подсистемы UEFI |
| Выпущен | EFI 1.0 (Intel, ~2000) → UEFI 2.x (UEFI Forum, 2005+); standard on PCs since ~2012 |
| Открыть стандартное | Да · без роялти |
| Спецификация | uefi.org |
Конвертации EFI
Вопросы и ответы сообщества
спрошено пользователямиВопросов пока нет - станьте первым, кто спросит о файлах EFI.
Часто задаваемые вопросы
Что такое файл EFI?
Как открыть файл EFI?
Можно ли удалять файлы EFI?
Является ли файл EFI тем же самым, что и EXE?
Почему на моем диске или USB есть раздел EFI / BOOTX64.EFI?
\EFI\BOOT\BOOTX64.EFI, чтобы любой ПК с UEFI мог их загрузить.