Wat is het EFI-bestandsformaat?
Een .efi-bestand is een systeembestand dat wordt gebruikt door computersystemen en apparaten op basis van x86-64 en ARM-hardware. Een .efi-bestand bevat uitvoerbare code die draait tussen de firmware en het besturingssysteem - technisch gezien is het een PE32+ Portable Executable image met een UEFI-specifieke subsystem-waarde in plaats van een standaard Windows-subsystem.
Gebruik van .efi-bestanden
.efi-systeembestanden worden gebruikt tijdens het opstartproces van het systeem, voor het voorbereiden van firmware-updates en het uitvoeren van pre-boot programma's. .efi-bestanden stellen het systeem in staat om pre-boot processen over te dragen aan een gecontroleerde omgeving. Veelvoorkomende voorbeelden zijn bootmgfw.efi (Windows Boot Manager), grubx64.efi (GRUB bootloader voor Linux) en shimx64.efi (Secure Boot shim). Soms zijn .efi-bestanden opgenomen in firmware-updatepakketten en worden ze geladen tijdens het opstartproces. Alle .efi-binaries moeten zich bevinden op de EFI-systeempartitie (ESP) - een FAT32-volume op een schijf met GPT-partitie die de firmware kan openen voordat een OS-stuurprogramma wordt geladen.
EFI en de UEFI-specificatie
De EFI-standaard werd oorspronkelijk ontwikkeld door Intel. EFI werd later bijgewerkt en werd bekend als UEFI (Unified Extensible Firmware Interface), dat het verouderde Basic Input/Output System (BIOS) op vrijwel alle moderne pc's en servers heeft vervangen. Het UEFI Forum, een industrieconsortium, onderhoudt nu de specificatie.
Beveiliging & veiligheid
RISICO: MEDIUMEen .efi is uitvoerbare code die op een zeer geprivilegieerd moment draait - vóór het OS, met volledige toegang tot de firmware - dus een KWAADAARDIGE .efi (een „bootkit”) kan gevaarlijk en hardnekkig zijn. Moderne pc's beperken dit met UEFI Secure Boot, dat weigert .efi-binaries uit te voeren die niet zijn ondertekend door een vertrouwde sleutel. Praktisch advies: plaats of voer nooit een onbekende .efi uit in uw EFI-systeempartitie en start niet op van een onbetrouwbare .efi; houd Secure Boot ingeschakeld tenzij u een specifieke reden heeft om dit niet te doen. Het tegenovergestelde risico is net zo reëel: het verwijderen of hernoemen van legitieme .efi-bestanden in de ESP (bijv. bootmgfw.efi, grubx64.efi) kan de machine onopstartbaar maken - blijf er vanaf tenzij u bewust de bootloader repareert.
Formaatdetails
in een notendop- Adobe Encapsulated/embedded font of HP printer firmware blobs - Een paar niet-gerelateerde producten hebben historisch gezien .efi gebruikt voor interne gegevens; op een pc is bijna elke .efi die u tegenkomt een UEFI-opstartbinary.
Programma's die EFI-bestanden openen
Technische details
diepe specificaties| Bestandssignatuur | `MZ` (hex `4D 5A`) op offset 0 - DOS stub; PE-signatuur (bytes `50 45 00 00`) op de offset aangegeven door de 4-byte LE-pointer op header-offset `0x3C` |
| Basis binair formaat | PE32+ (64-bit Portable Executable) - hetzelfde containerformaat als een Windows `.exe`, alleen onderscheiden door de waarde van het PE Subsystem-veld |
| PE subsystem veldwaarden | 10 = EFI Application; 11 = EFI Boot Service Driver; 12 = EFI Runtime Driver; 13 = EFI ROM Image |
| MIME-type | `application/efi` |
| Ondersteunde CPU-architecturen | x86-64 (IA-32e), IA-32, ARM Thumb-2, AArch64, RISC-V 32/64/128, IA-64 (Itanium) - architectuur gecodeerd in het PE Machine-veld |
| Vereiste partitie en bestandssysteem | EFI-systeempartitie (ESP) geformatteerd als FAT12, FAT16 of FAT32 op een schijf met GPT-partitie; NTFS en ext4 worden niet standaard ondersteund door UEFI-firmware |
| Standaard installatiepad op ESP | `\EFI\<Vendor>\<name>.efi` - bijv. `\EFI\Microsoft\Boot\bootmgfw.efi` of `\EFI\ubuntu\grubx64.efi` |
| Secure Boot code-ondertekening | Ondertekend met Authenticode (RSA + SHA-256); geverifieerd tegen UEFI Secure Boot-sleuteldatabases: PK (Platform Key), KEK, `db` (toegestaan) en `dbx` (ingetrokken) |
| Entry point prototype | `EFI_STATUS EFIAPI ImageEntry(EFI_HANDLE ImageHandle, EFI_SYSTEM_TABLE *SystemTable)` - dezelfde signatuur voor alle EFI-applicatietypen |
| Privilegieniveau van uitvoering | Hoogste CPU-privilegieniveau - ring 0 (CPL0) op x86; EL1 of EL2 op AArch64 - in een vlakke pre-OS adresruimte met directe hardwaretoegang |
| Boot Service vs. Runtime residentie | Boot Service Drivers (subsystem 11) worden verwijderd wanneer het OS `ExitBootServices()` aanroept; Runtime Drivers (subsystem 12) blijven gemapt na de OS-overdracht |
| Schijfpartitionering vereiste | GPT (GUID Partition Table) vereist voor native UEFI-opstartmodus; schijven met alleen MBR worden niet ondersteund |
| Veelvoorkomende bekende binaries | `bootmgfw.efi` (Windows Boot Manager), `grubx64.efi` (GRUB), `shimx64.efi` (Secure Boot shim), `Shell.efi` (UEFI interactieve shell) |
| Build toolchains | EDK II (TianoCore), GNU-EFI, LLVM/clang met `-target x86_64-unknown-uefi`; output moet worden gelinkt als een PE32+ image met UEFI subsystem-flags |
| Uitgebracht | EFI 1.0 (Intel, ~2000) → UEFI 2.x (UEFI Forum, 2005+); standard on PCs since ~2012 |
| Open standaard | Ja · royaltyvrij |
| Specificatie | uefi.org |
EFI conversies
Community V&A
gevraagd door gebruikersNog geen vragen - wees de eerste om iets te vragen over EFI-bestanden.