Interfaz de firmware extensible

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 .

Historia

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] :

Contenidos

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.

Servicios

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.

Controladores de dispositivos

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.

Administrador de descargas

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).

Soporte de disco

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] .

Carcasa EFI

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.

Extensiones

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.

Implementación

Marco de innovación de la plataforma Intel para EFI

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] .

Plataformas que utilizan EFI o kit de herramientas

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] .

¿Cómo funciona el arranque UEFI

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

Sistemas operativos

Microsoft Windows

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] .

Características gráficas

EFI admite menús gráficos y algunas funciones, como las implementadas por Aptio o Great Wall UEFI [19] .

Crítica

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.

Notas

  1. Dong Wei. Más allá del BIOS (prólogo). Intel Press, 2006, ISBN 978-0-9743649-0-2
  2. Información sobre el Foro EFI unificado . Consultado el 13 de junio de 2008. Archivado desde el original el 10 de junio de 2008.
  3. Información del controlador FAT para EFI  (enlace descendente) (requiere registro)
  4. Información sobre el shell EFI (enlace descendente) . Consultado el 16 de junio de 2008. Archivado desde el original el 28 de septiembre de 2007. 
  5. SourceForge.net: tianocore . Consultado el 6 de julio de 2008. Archivado desde el original el 28 de abril de 2021.
  6. Intel Platform Innovation Framework for EFI Archivado el 21 de agosto de 2011 en Wayback Machine en el sitio web de Intel
  7. Directrices de programación binaria universal, segunda edición: interfaz de firmware extensible (EFI) , archivado el 3 de enero de 2009. computadora Apple
  8. Descripción general del marco Archivado el 18 de noviembre de 2008 en Wayback Machine Intel
  9. Información sobre EFI en placas Intel . Consultado el 6 de julio de 2008. Archivado desde el original el 27 de julio de 2020.
  10. Descripción general del marco de innovación de la plataforma Intel . Consultado el 6 de julio de 2008. Archivado desde el original el 18 de noviembre de 2008.
  11. Impresoras HP  (enlace inaccesible)
  12. Versión EFI de Grub (Debian Linux) . Consultado el 7 de julio de 2008. Archivado desde el original el 30 de mayo de 2008.
  13. Cargar el sistema operativo Linux sin un gestor de arranque/Sudo Null IT News . Consultado el 21 de julio de 2017. Archivado desde el original el 7 de agosto de 2016.
  14. rEFIt: Windows Vista y EFI . Consultado el 7 de julio de 2008. Archivado desde el original el 5 de septiembre de 2008.
  15. ↑ Interfaz de firmware extensible Archivado el 30 de agosto de 2006. Centro técnico de Microsoft Windows Server
  16. Bombazo de Microsoft: no hay compatibilidad con EFI para Vista Archivado el 17 de octubre de 2006.
  17. Mary Jo Foley. Vista SP1 beta 1 se lanzará a mediados de julio (enlace descendente) . ZDNet (8 de julio de 2007). Consultado el 20 de julio de 2007. Archivado desde el original el 2 de marzo de 2012. 
  18. Vídeo previo al sistema operativo de Microsoft . Consultado el 7 de julio de 2008. Archivado desde el original el 9 de abril de 2008.
  19. Intel muestra PC arrancando Windows con firmware UEFI Archivado el 20 de diciembre de 2007.
  20. Linux: Linus en la interfaz de firmware extensible
  21. Entrevista: Ronald G Minnich (enlace no disponible) . Fecha de acceso: 7 de julio de 2008. Archivado desde el original el 29 de enero de 2011. 
  22. ¿El "Arranque seguro" de su computadora resultará ser un "Arranque restringido"?  (Inglés) . Fundación de Software Libre . Consultado el 24 de noviembre de 2013. Archivado desde el original el 28 de noviembre de 2013.
  23. Rod Smith. Manejo del arranque  seguro . Administración de cargadores de arranque EFI para Linux . Consultado el 24 de noviembre de 2013. Archivado desde el original el 6 de noviembre de 2013.

Enlaces

Véase también