Che cos'è il formato di file EFI?
Un file .efi è un file di sistema utilizzato da sistemi informatici e dispositivi basati su hardware x86-64 e ARM. Un file .efi contiene codice eseguibile che gira tra i livelli del firmware e del sistema operativo - tecnicamente si tratta di un'immagine PE32+ Portable Executable con un valore di sottosistema specifico per UEFI anziché un sottosistema Windows standard.
Utilizzo dei file .efi
I file di sistema .efi vengono utilizzati durante il processo di avvio del sistema, per la preparazione degli aggiornamenti del firmware e per l'esecuzione di programmi pre-avvio. I file .efi consentono al sistema di affidare i processi di pre-avvio a un ambiente controllato. Esempi comuni includono bootmgfw.efi (Windows Boot Manager), grubx64.efi (bootloader GRUB per Linux) e shimx64.efi (Secure Boot shim). A volte i file .efi sono inclusi nei pacchetti di aggiornamento del firmware e caricati durante il processo di avvio. Tutti i binari .efi devono risiedere nella Partizione di Sistema EFI (ESP) - un volume FAT32 su un disco partizionato in GPT a cui il firmware può accedere prima del caricamento di qualsiasi driver del sistema operativo.
EFI e la specifica UEFI
Lo standard EFI è stato inizialmente sviluppato da Intel. EFI è stato successivamente aggiornato ed è diventato noto come UEFI (Unified Extensible Firmware Interface), che ha sostituito il BIOS (Basic Input/Output System) legacy su praticamente tutti i PC e server moderni. Lo UEFI Forum, un consorzio industriale, si occupa ora di mantenere la specifica.
Sicurezza e incolumità
RISCHIO: MEDIUMUn .efi è codice eseguibile che gira in un momento molto privilegiato - prima del sistema operativo, con pieno accesso al firmware - quindi un .efi MALEVOLO (un «bootkit») può essere pericoloso e persistente. I PC moderni mitigano questo rischio con UEFI Secure Boot, che rifiuta di eseguire binari .efi non firmati da una chiave attendibile. Guida pratica: non inserire o eseguire mai un .efi sconosciuto nella Partizione di Sistema EFI né avviare da un .efi non attendibile; tieni abilitato Secure Boot a meno che tu non abbia un motivo specifico per non farlo. Il rischio opposto è altrettanto reale: eliminare o rinominare file .efi legittimi nella ESP (ad es. bootmgfw.efi, grubx64.efi) può rendere la macchina non avviabile - non toccarli a meno che tu non stia riparando deliberatamente il bootloader.
Dettagli del formato
in sintesi- Font incorporati Adobe o blob firmware per stampanti HP - Alcuni prodotti non correlati hanno storicamente utilizzato .efi per dati interni; su un PC quasi ogni .efi che incontri è un binario di avvio UEFI.
Programmi che aprono file EFI
Dettagli tecnici
specifiche approfondite| Firma del file | `MZ` (hex `4D 5A`) all'offset 0 - stub DOS; firma PE (byte `50 45 00 00`) all'offset indicato dal puntatore LE a 4 byte all'offset dell'intestazione `0x3C` |
| Formato binario di base | PE32+ (64-bit Portable Executable) - lo stesso formato contenitore di un `.exe` di Windows, differenziato solo dal valore del campo PE Subsystem |
| Valori del campo sottosistema PE | 10 = EFI Application; 11 = EFI Boot Service Driver; 12 = EFI Runtime Driver; 13 = EFI ROM Image |
| Tipo MIME | `application/efi` |
| Architetture CPU supportate | x86-64 (IA-32e), IA-32, ARM Thumb-2, AArch64, RISC-V 32/64/128, IA-64 (Itanium) - architettura codificata nel campo PE Machine |
| Partizione e filesystem richiesti | Partizione di Sistema EFI (ESP) formattata come FAT12, FAT16 o FAT32 su un disco partizionato GPT; NTFS ed ext4 non sono supportati nativamente dal firmware UEFI |
| Percorso di installazione standard su ESP | `\EFI\<Vendor>\<name>.efi` - ad es., `\EFI\Microsoft\Boot\bootmgfw.efi` o `\EFI\ubuntu\grubx64.efi` |
| Firma del codice Secure Boot | Firmato con Authenticode (RSA + SHA-256); verificato rispetto ai database delle chiavi UEFI Secure Boot: PK (Platform Key), KEK, `db` (consentiti) e `dbx` (revocati) |
| Prototipo dell'entry point | `EFI_STATUS EFIAPI ImageEntry(EFI_HANDLE ImageHandle, EFI_SYSTEM_TABLE *SystemTable)` - stessa firma per tutti i tipi di applicazioni EFI |
| Livello di privilegio di esecuzione | Massimo livello di privilegio della CPU - ring 0 (CPL0) su x86; EL1 o EL2 su AArch64 - in uno spazio di indirizzamento piatto pre-OS con accesso diretto all'hardware |
| Residenza Boot Service vs. Runtime | I driver Boot Service (sottosistema 11) vengono scaricati quando l'OS chiama `ExitBootServices()`; i driver Runtime (sottosistema 12) rimangono mappati dopo il passaggio di consegne all'OS |
| Requisito di partizionamento del disco | GPT (GUID Partition Table) richiesto per la modalità di avvio UEFI nativa; i dischi solo MBR non sono supportati |
| Binari comuni noti | `bootmgfw.efi` (Windows Boot Manager), `grubx64.efi` (GRUB), `shimx64.efi` (Secure Boot shim), `Shell.efi` (shell interattiva UEFI) |
| Toolchain di compilazione | EDK II (TianoCore), GNU-EFI, LLVM/clang con `-target x86_64-unknown-uefi`; l'output deve essere collegato come immagine PE32+ con i flag del sottosistema UEFI |
| Rilasciato | EFI 1.0 (Intel, ~2000) → UEFI 2.x (UEFI Forum, 2005+); standard on PCs since ~2012 |
| Standard aperto | Sì · royalty-free |
| Specifica | uefi.org |
Conversioni EFI
Domande e risposte della community
chiesto dagli utentiAncora nessuna domanda - sii il primo a chiedere informazioni sui file EFI.