¿Qué es el formato de archivo EFI?
Un archivo .efi es un archivo de sistema utilizado por sistemas informáticos y dispositivos basados en hardware x86-64 y ARM. Un archivo .efi contiene código ejecutable que se ejecuta entre los niveles de firmware y del sistema operativo; técnicamente es una imagen PE32+ Portable Executable con un valor de subsistema específico de UEFI en lugar de un subsistema estándar de Windows.
Uso de archivos .efi
Los archivos de sistema .efi se utilizan durante el proceso de arranque del sistema, para preparar actualizaciones de firmware y ejecutar programas previos al arranque. Los archivos .efi permiten que el sistema transfiera los procesos previos al arranque a un entorno controlado. Ejemplos comunes incluyen bootmgfw.efi (Administrador de arranque de Windows), grubx64.efi (cargador de arranque GRUB para Linux) y shimx64.efi (shim de Secure Boot). A veces, los archivos .efi se incluyen en paquetes de actualización de firmware y se cargan durante el proceso de arranque. Todos los binarios .efi deben residir en la Partición del Sistema EFI (ESP), un volumen FAT32 en un disco con particiones GPT al que el firmware puede acceder antes de que se cargue cualquier controlador del SO.
EFI y la especificación UEFI
El estándar EFI fue desarrollado inicialmente por Intel. EFI se actualizó más tarde y pasó a conocerse como UEFI (Unified Extensible Firmware Interface), que ha reemplazado al BIOS (Basic Input/Output System) heredado en prácticamente todos los PC y servidores modernos. El UEFI Forum, un consorcio de la industria, mantiene ahora la especificación.
Seguridad y protección
RIESGO: MEDIUMUn .efi es código ejecutable que se ejecuta en un momento muy privilegiado -antes del SO, con acceso total al firmware- por lo que un .efi MALICIOSO (un «bootkit») puede ser peligroso y persistente. Los PC modernos mitigan esto con UEFI Secure Boot, que se niega a ejecutar binarios .efi que no estén firmados por una clave de confianza. Guía práctica: nunca coloque ni ejecute un .efi desconocido en su Partición del Sistema EFI ni arranque desde un .efi no confiable; mantenga Secure Boot habilitado a menos que tenga una razón específica para no hacerlo. El riesgo opuesto es igual de real: eliminar o renombrar archivos .efi legítimos en la ESP (p. ej., bootmgfw.efi, grubx64.efi) puede hacer que la máquina no arranque; no los toque a menos que esté reparando deliberadamente el cargador de arranque.
Detalles del formato
en pocas palabras- Fuentes incrustadas de Adobe o blobs de firmware de impresoras HP - Unos pocos productos no relacionados han utilizado históricamente .efi para datos internos; en un PC, casi todos los .efi que encuentre son binarios de arranque UEFI.
Programas que abren archivos EFI
Detalles técnicos
especificación profunda| Firma de archivo | `MZ` (hex `4D 5A`) en el desplazamiento 0 - stub de DOS; firma PE (bytes `50 45 00 00`) en el desplazamiento indicado por el puntero LE de 4 bytes en el desplazamiento de cabecera `0x3C` |
| Formato binario base | PE32+ (Portable Executable de 64 bits) - mismo formato de contenedor que un `.exe` de Windows, diferenciado únicamente por el valor del campo PE Subsystem |
| Valores del campo de subsistema PE | 10 = EFI Application; 11 = EFI Boot Service Driver; 12 = EFI Runtime Driver; 13 = EFI ROM Image |
| Tipo MIME | `application/efi` |
| Arquitecturas de CPU compatibles | x86-64 (IA-32e), IA-32, ARM Thumb-2, AArch64, RISC-V 32/64/128, IA-64 (Itanium) - arquitectura codificada en el campo PE Machine |
| Partición y sistema de archivos requeridos | Partición del Sistema EFI (ESP) formateada como FAT12, FAT16 o FAT32 en un disco con particiones GPT; NTFS y ext4 no son compatibles de forma nativa por el firmware UEFI |
| Ruta de instalación estándar en ESP | `\EFI\<Proveedor>\<nombre>.efi` - p. ej., `\EFI\Microsoft\Boot\bootmgfw.efi` o `\EFI\ubuntu\grubx64.efi` |
| Firma de código de Secure Boot | Firmado con Authenticode (RSA + SHA-256); verificado contra las bases de datos de claves de UEFI Secure Boot: PK (Platform Key), KEK, `db` (permitidos) y `dbx` (revocados) |
| Prototipo del punto de entrada | `EFI_STATUS EFIAPI ImageEntry(EFI_HANDLE ImageHandle, EFI_SYSTEM_TABLE *SystemTable)` - misma firma para todos los tipos de aplicaciones EFI |
| Nivel de privilegio de ejecución | Nivel de privilegio de CPU más alto - anillo 0 (CPL0) en x86; EL1 o EL2 en AArch64 - en un espacio de direcciones plano previo al SO con acceso directo al hardware |
| Residencia de Boot Service vs. Runtime | Los controladores de servicio de arranque (subsistema 11) se descargan cuando el SO llama a `ExitBootServices()`; los controladores de tiempo de ejecución (subsistema 12) permanecen mapeados tras la transferencia al SO |
| Requisito de particionado de disco | Se requiere GPT (GUID Partition Table) para el modo de arranque UEFI nativo; los discos solo MBR no son compatibles |
| Binarios comunes conocidos | `bootmgfw.efi` (Administrador de arranque de Windows), `grubx64.efi` (GRUB), `shimx64.efi` (shim de Secure Boot), `Shell.efi` (consola interactiva UEFI) |
| Cadenas de herramientas de compilación | EDK II (TianoCore), GNU-EFI, LLVM/clang con `-target x86_64-unknown-uefi`; la salida debe vincularse como una imagen PE32+ con indicadores de subsistema UEFI |
| Lanzado | EFI 1.0 (Intel, ~2000) → UEFI 2.x (UEFI Forum, 2005+); standard on PCs since ~2012 |
| Estándar abierto | Sí · libre de regalías |
| Especificación | uefi.org |
Conversiones de EFI
Preguntas y respuestas de la comunidad
preguntado por usuariosAún no hay preguntas; sea el primero en preguntar sobre los archivos EFI.