O que é o formato de ficheiro EFI?
Um arquivo .efi é um arquivo de sistema usado por sistemas de computador e dispositivos baseados em hardware x86-64 e ARM. Um arquivo .efi contém código executável que roda entre os níveis de firmware e do sistema operacional - tecnicamente, é uma imagem PE32+ Portable Executable com um valor de subsistema específico para UEFI em vez de um subsistema Windows padrão.
Uso de arquivos .efi
Arquivos de sistema .efi são usados durante o processo de inicialização do sistema, para preparar atualizações de firmware e executar programas de pré-inicialização. Os arquivos .efi permitem que o sistema transfira os processos de pré-inicialização para um ambiente controlado. Exemplos comuns incluem bootmgfw.efi (Gerenciador de Inicialização do Windows), grubx64.efi (carregador de inicialização GRUB para Linux) e shimx64.efi (shim do Secure Boot). Às vezes, arquivos .efi são incluídos em pacotes de atualização de firmware e carregados durante o processo de boot. Todos os binários .efi devem residir na Partição de Sistema EFI (ESP) - um volume FAT32 em um disco particionado em GPT que o firmware pode acessar antes que qualquer driver de SO seja carregado.
EFI e a especificação UEFI
O padrão EFI foi desenvolvido inicialmente pela Intel. O EFI foi posteriormente atualizado e tornou-se conhecido como UEFI (Unified Extensible Firmware Interface), que substituiu o BIOS (Basic Input/Output System) legado em virtualmente todos os PCs e servidores modernos. O UEFI Forum, um consórcio da indústria, agora mantém a especificação.
Segurança e proteção
RISCO: MEDIUMUm .efi é um código executável que roda em um momento muito privilegiado - antes do SO, com acesso total ao firmware - portanto, um .efi MALICIOSO (um «bootkit») pode ser perigoso e persistente. PCs modernos mitigam isso com o UEFI Secure Boot, que se recusa a executar binários .efi que não estejam assinados por uma chave confiável. Orientação prática: nunca coloque ou execute um .efi desconhecido em sua Partição de Sistema EFI ou inicialize a partir de um .efi não confiável; mantenha o Secure Boot ativado, a menos que tenha um motivo específico para não fazê-lo. O risco oposto é igualmente real: excluir ou renomear arquivos .efi legítimos na ESP (ex: bootmgfw.efi, grubx64.efi) pode tornar a máquina incapaz de inicializar - não mexa neles, a menos que esteja reparando deliberadamente o carregador de inicialização.
Detalhes do formato
em resumo- Fontes Adobe Encapsulated/incorporadas ou blobs de firmware de impressora HP - Alguns produtos não relacionados usaram historicamente .efi para dados internos; em um PC, quase todo .efi que você encontrar é um binário de inicialização UEFI.
Programas que abrem arquivos EFI
Detalhes técnicos
especificação profunda| Assinatura do arquivo | `MZ` (hex `4D 5A`) no deslocamento 0 - stub DOS; assinatura PE (bytes `50 45 00 00`) no deslocamento fornecido pelo ponteiro LE de 4 bytes no deslocamento do cabeçalho `0x3C` |
| Formato binário base | PE32+ (Portable Executable de 64 bits) - mesmo formato de contêiner de um `.exe` do Windows, diferenciado apenas pelo valor do campo PE Subsystem |
| Valores do campo de subsistema PE | 10 = EFI Application; 11 = EFI Boot Service Driver; 12 = EFI Runtime Driver; 13 = EFI ROM Image |
| Tipo MIME | `application/efi` |
| Arquiteturas de CPU suportadas | x86-64 (IA-32e), IA-32, ARM Thumb-2, AArch64, RISC-V 32/64/128, IA-64 (Itanium) - arquitetura codificada no campo PE Machine |
| Partição e sistema de arquivos necessários | Partição de Sistema EFI (ESP) formatada como FAT12, FAT16 ou FAT32 em um disco particionado em GPT; NTFS e ext4 não são suportados nativamente pelo firmware UEFI |
| Caminho de instalação padrão na ESP | `\EFI\<Vendor>\<name>.efi` - ex: `\EFI\Microsoft\Boot\bootmgfw.efi` ou `\EFI\ubuntu\grubx64.efi` |
| Assinatura de código Secure Boot | Assinado com Authenticode (RSA + SHA-256); verificado contra bancos de dados de chaves UEFI Secure Boot: PK (Platform Key), KEK, `db` (permitido) e `dbx` (revogado) |
| Protótipo do ponto de entrada | `EFI_STATUS EFIAPI ImageEntry(EFI_HANDLE ImageHandle, EFI_SYSTEM_TABLE *SystemTable)` - mesma assinatura para todos os tipos de aplicativos EFI |
| Nível de privilégio de execução | Nível de privilégio de CPU mais alto - ring 0 (CPL0) em x86; EL1 ou EL2 em AArch64 - em um espaço de endereçamento plano pré-SO com acesso direto ao hardware |
| Residência Boot Service vs. Runtime | Drivers de Serviço de Boot (subsistema 11) são descarregados quando o SO chama `ExitBootServices()`; Drivers de Tempo de Execução (subsistema 12) permanecem mapeados após a transferência para o SO |
| Requisito de particionamento de disco | GPT (GUID Partition Table) necessário para o modo de inicialização UEFI nativo; discos apenas com MBR não são suportados |
| Binários comuns conhecidos | `bootmgfw.efi` (Gerenciador de Inicialização do Windows), `grubx64.efi` (GRUB), `shimx64.efi` (shim do Secure Boot), `Shell.efi` (shell interativo UEFI) |
| Cadeias de ferramentas de construção | EDK II (TianoCore), GNU-EFI, LLVM/clang com `-target x86_64-unknown-uefi`; a saída deve ser vinculada como uma imagem PE32+ com sinalizadores de subsistema UEFI |
| Lançado | EFI 1.0 (Intel, ~2000) → UEFI 2.x (UEFI Forum, 2005+); standard on PCs since ~2012 |
| Padrão aberto | Sim · livre de royalties |
| Especificação | uefi.org |
Conversões de EFI
Perguntas e Respostas da Comunidade
perguntado por usuáriosAinda não há perguntas - seja o primeiro a perguntar sobre arquivos EFI.