Interfaz de firmware extensible ( EFI ) (del inglés - "interfaz de firmware expandible "): una interfaz entre el sistema operativo y el firmware que controla las funciones de bajo nivel del equipo, su objetivo principal es inicializar correctamente el equipo cuando se enciende el sistema y transfiera el control al gestor de arranque o directamente al kernel del sistema operativo. EFI está destinado a reemplazar el BIOS , una interfaz utilizada tradicionalmente por todas las computadoras personales compatibles con IBM PC . La primera especificación EFI fue desarrollada por Intel, luego se abandonó el primer nombre y la última versión del estándar se llama Interfaz de firmware extensible unificada ( UEFI ). UEFI está siendo desarrollado actualmente por el Unified EFI Forum .
EFI se creó originalmente para los primeros sistemas Intel-HP Itanium a mediados de la década de 1990 . Las limitaciones de PC-BIOS (código ejecutable de 16 bits, memoria direccionable de 1 MB, limitaciones de hardware de IBM PC/AT , etc.) obviamente no estaban permitidas en las grandes plataformas de servidor en las que se pretendía utilizar Itanium. El nombre original es Intel Boot Initiative ( Iniciativa de arranque Intel ), más tarde rebautizado como EFI [1] :
La interfaz definida por la especificación EFI incluye tablas de datos que contienen información sobre la plataforma, los servicios de arranque y tiempo de ejecución que están disponibles para el cargador del sistema operativo (SO) y el propio SO. Algunas extensiones de BIOS existentes , como ACPI y SMBIOS , también están presentes en EFI porque no requieren una interfaz de tiempo de ejecución de 16 bits.
EFI define "servicios de arranque" que incluyen soporte para una consola gráfica y de texto en varios dispositivos, servicios de bus, bloque y archivo, así como servicios de tiempo de ejecución como fecha, hora y memoria no volátil.
Además de los controladores de dispositivo estándar específicos de la arquitectura, la especificación EFI proporciona un entorno de controlador independiente de la plataforma denominado EFI Byte Code (EBC). La especificación UEFI requiere que el firmware del sistema tenga un intérprete para cualquier imagen EBC que se cargue o se pueda cargar en el entorno. En este sentido, EBC es similar a Open Firmware , el firmware independiente del hardware utilizado en las computadoras Apple Macintosh y Sun Microsystems SPARC .
Algunos tipos de controladores EFI específicos de la arquitectura (no EBC) pueden tener interfaces para que las use el sistema operativo. Esto permite que el sistema operativo use EFI para gráficos básicos y soporte de red antes de que se carguen los controladores definidos por el sistema operativo.
El administrador de inicio EFI se utiliza para seleccionar e iniciar un sistema operativo, lo que elimina la necesidad de un mecanismo de inicio dedicado (el cargador del sistema operativo es una aplicación EFI).
Además del diseño de disco MBR estándar, EFI tiene compatibilidad con GPT , que no tiene limitaciones específicas de MBR. La especificación EFI no incluye descripciones para los sistemas de archivos; sin embargo, las implementaciones de EFI generalmente admiten FAT32 como sistema de archivos [3] .
La comunidad EFI ha creado un entorno de shell abierto ( EFI shell ) [4] . El usuario puede cargar un shell EFI para realizar algunas operaciones en lugar de iniciar el sistema operativo. El shell es una aplicación EFI; puede residir permanentemente en la ROM de la plataforma o en un dispositivo cuyos controladores estén en la ROM.
El shell se puede utilizar para ejecutar otras aplicaciones de EFI, como configuración, instalación del sistema operativo, diagnósticos, utilidades de configuración y actualizaciones de firmware. También se puede usar para reproducir CD o DVD sin iniciar el sistema operativo, siempre que las aplicaciones EFI admitan estas funciones. Los comandos de shell de EFI también le permiten copiar o mover archivos y directorios en sistemas de archivos compatibles, y cargar y descargar controladores. El shell también puede usar la pila TCP/IP completa.
El shell EFI admite secuencias de comandos como archivos .nsh , similares a los archivos por lotes de DOS . En este caso, el archivo de secuencia de comandos llamado startup.nsh se ejecuta automáticamente en el arranque.
Los nombres de los comandos de shell a menudo se heredan de los intérpretes de línea de comandos ( COMMAND.COM o Unix shell ). El shell EFI puede verse como un reemplazo funcional para el intérprete de línea de comandos y la interfaz de texto del BIOS.
Las extensiones EFI se pueden cargar desde casi cualquier dispositivo de almacenamiento no volátil conectado a una computadora. Por ejemplo, un OEM podría vender un sistema con una partición EFI en el disco duro que agregaría funcionalidad adicional al firmware EFI que reside en la ROM de la placa base.
Intel Platform Innovation Framework para EFI ( Intel Innovation Toolkit en ruso ) es un conjunto de especificaciones desarrolladas por Intel junto con EFI. Mientras que EFI define la interfaz entre el sistema operativo y el firmware, el kit de herramientas define las estructuras utilizadas para crear software integrado en un nivel más bajo que la interfaz entre el sistema operativo y el firmware.
En particular, el kit de herramientas admite todos los pasos necesarios para inicializar una computadora después de encenderla. Estas capacidades internas de firmware no están definidas como parte de la especificación EFI, pero están incluidas en la Especificación de inicialización de plataforma desarrollada por UEFI . El kit de herramientas ha sido probado en plataformas: Intel XScale , Intel Itanium e IA-32 .
La compatibilidad con los sistemas operativos x86 que requieren una interfaz de "BIOS heredada" se logra mediante el Módulo de soporte de compatibilidad (CSM). El CSM incluye un programa de 16 bits (CSM16) implementado por el fabricante del BIOS y una capa que vincula el CSM16 con el juego de herramientas.
Intel ha desarrollado una implementación de referencia para el kit de herramientas, cuyo nombre en código es "Tiano". Tiano es una implementación completa y sin legados de software integrado que proporciona compatibilidad con EFI. Tiano no incluye la parte de 16 bits del CSM, pero proporciona las interfaces requeridas por los complementos implementados por los proveedores de BIOS. Intel no proporciona una implementación completa de Tiano para los usuarios finales.
Parte de Tiano se ha publicado como código fuente para el proyecto TianoCore como EFI Developer Kit (EDK) [5] . Esta implementación incluye EFI y algún código de inicialización de hardware, pero no cubre completamente los detalles del software integrado directamente. Se han utilizado varias licencias para este código, incluida la licencia BSD y la licencia pública de Eclipse .
Los productos basados en EFI, UEFI y especificaciones de instrumentación están disponibles a través de fabricantes independientes de BIOS, como American Megatrends (AMI) e Insyde Software . Algunas implementaciones de proveedores se basan completamente en Tiano, mientras que otras se ajustan a las especificaciones pero no se basan en la implementación de referencia de Intel [6] .
Los sistemas basados en Itanium lanzados por Intel en 2000 eran compatibles con EFI 1.02. Los sistemas Itanium 2 lanzados en 2002 por Hewlett-Packard eran compatibles con EFI 1.10; podían arrancar Windows , Linux , FreeBSD y HP-UX . Todos los sistemas Itanium o Itanium 2 que se lanzan con firmware compatible con EFI deben cumplir con la especificación DIG64 .
En noviembre de 2003, Gateway presentó Gateway 610 Media Center, el primer sistema informático x86 basado en Windows que utiliza software integrado basado en el juego de herramientas InsydeH2O de Insyde Software. El soporte de BIOS se implementó utilizando el Módulo de soporte de compatibilidad (CSM) para iniciar Windows.
En enero de 2006, Apple Inc. introdujo las primeras computadoras Macintosh basadas en la plataforma Intel . Estos sistemas usan EFI y herramientas en lugar del firmware abierto que se usaba en los sistemas de plataforma PowerPC anteriores [7] .
El 5 de abril de 2006, Apple lanzó el paquete Boot Camp , que le permite crear un disco de controlador de Windows XP y también contiene una herramienta de partición de disco no destructiva que le permite instalar Windows XP con Mac OS X. Se realizó una actualización de firmware. también lanzó que agregó soporte de BIOS para estas implementaciones de EFI. Los modelos posteriores de Macintosh se lanzaron con firmware actualizado. Todas las computadoras Macintosh modernas ahora pueden iniciar sistemas operativos compatibles con BIOS , como Windows XP, Vista y Windows 7.
Una gran cantidad de placas base Intel vienen con firmware basado en herramientas[ especificar ] . Así, durante 2005 se lanzaron más de un millón de sistemas Intel [8] . En 2006 comenzaron a producirse nuevos teléfonos móviles, computadoras de escritorio y servidores que utilizan el conjunto de herramientas. Por ejemplo, todas las placas base que se basan en el conjunto de chips Intel 945 utilizan el kit de herramientas. Sin embargo, el firmware fabricado generalmente no incluye compatibilidad con EFI y se limita a la compatibilidad con BIOS [9] .
Desde 2005, EFI se ha utilizado en arquitecturas que no son de PC, como sistemas integrados basados en el núcleo XScale [10] .
El EDK incluye un objetivo NT32 que permite que el firmware de EFI y las aplicaciones de EFI se ejecuten en aplicaciones de Windows.
En 2007, Hewlett-Packard lanzó la impresora multifunción serie 8000 con firmware compatible con EFI [11] .
En el diseño del disco GPT , la partición del sistema EFI ( ESP ) con el identificador EF00 y el sistema de archivos FAT32 contiene el archivo \efi\boot\boot[nombre de la arquitectura].efi , por ejemplo: \efi\boot\bootx64. efi. El cargador de arranque EFI BIOS carga y ejecuta dicho archivo de acuerdo con la arquitectura del sistema informático.
Por ejemplo, para crear una unidad flash USB de arranque con Windows , solo necesita marcar la unidad flash USB en GPT, crear una partición activa en ella con el sistema de archivos FAT32 y el ID de partición EF00, luego copiar todos los archivos del CD con la distribución del sistema operativo.
Un ejemplo de creación de un disco GPT en el sistema operativo GNU/Linux:
Además, en la mayoría de las implementaciones de UEFI , es posible arrancar en modo de compatibilidad desde un disco MBR.
Apple no usa ESP para arrancar, bootstrap transfiere el control a la dirección escrita en NVRAM (BootRom): /System/Library/CoreServices/boot.efi usando la utilidad bless [el usuario puede cambiar este valor usando la misma utilidad], con ella también puede ver el dispositivo de arranque actual y las opciones de arranque:
bless --info --getBoot --verbose
Las versiones Itanium de Windows 2000 (Advanced Server Limited Edition y Datacenter Server Limited Edition) recibieron compatibilidad con EFI 1.1 en 2002.
Windows Server 2003 para IA-64 , Windows XP de 64 bits y Windows 2000 Advanced Server Limited Edition para la familia de procesadores Intel Itanium admiten EFI según lo definido para esa plataforma por la especificación DIG64 [15] .
Microsoft introdujo la compatibilidad con UEFI en los sistemas operativos Windows de 64 bits a partir de Windows Server 2008 y Windows Vista Service Pack 1 [16] [17] . Microsoft afirma que la falta de soporte oficial de EFI en CPU de 32 bits se debe a un soporte insuficiente de los fabricantes y proveedores de PC. La migración de Microsoft a sistemas operativos de 64 bits no permite el uso de EFI 1.10 porque las extensiones de procesador de 64 bits requeridas por este sistema operativo no son compatibles con el entorno del procesador. La compatibilidad con x86-64 se incluyó en UEFI 2.0.
Microsoft lanzó un video con Andrew Ritz y Jamie Schwarz explicando la implementación del soporte UEFI en Windows Vista y Windows Server 2008 [ 18] .
EFI admite menús gráficos y algunas funciones, como las implementadas por Aptio o Great Wall UEFI [19] .
EFI ha sido criticado por agregar complejidad al sistema sin beneficios significativos [20] y por abandonar cargadores de arranque alternativos de código abierto como OpenBIOS y coreboot [21] .
En 2011, los usuarios y desarrolladores de sistemas operativos basados en Linux advirtieron que la implementación de la tecnología Secure Boot en la forma requerida por Microsoft para dispositivos con Windows 8 limitaría significativamente la libertad de los usuarios de estos dispositivos para elegir u operar un sistema operativo [22] [23 ] .
En septiembre de 2018, una empresa de antivirus publicó un informe sobre LoJax, el primer rootkit conocido para un sistema UEFI visto en uso real. Los ingenieros de la empresa descubrieron un caso en el que derrotaron con éxito el subsistema SPI y guardaron el rootkit en la unidad flash de este subsistema. Gracias a esto, el malware podría permanecer en la computadora no solo cuando se formateaba el disco duro, sino también cuando se reemplazaba el disco duro. La única posibilidad de deshacerse de un rootkit de este tipo es sobrescribir la memoria flash del firmware del sistema UEFI.
de los sistemas operativos | Aspectos|||||
---|---|---|---|---|---|
| |||||
Tipos |
| ||||
Núcleo |
| ||||
Gestión de procesos |
| ||||
Gestión y direccionamiento de memoria | |||||
Herramientas de carga e inicialización | |||||
caparazón | |||||
Otro | |||||
Categoría Wikimedia Commons Wikilibros Wikcionario |