La Interfaz de firmware extensible unificada ( UEFI ) [1] es una especificación disponible públicamente que define una interfaz de software entre un sistema operativo y el firmware de la plataforma . UEFI reemplaza la interfaz de firmware del sistema básico de entrada / salida ( BIOS ) heredada originalmente presente en todas las computadoras personales IBM compatibles con PC , [2] [3] con la mayoría de las implementaciones de firmware UEFI que brindan soporte para servicios BIOS heredados. UEFI puede admitir diagnósticos remotos y reparación de computadoras, incluso sin un sistema operativo instalado. [4]
Intel desarrolló las especificaciones originales de Interfaz de firmware extensible ( EFI ). Algunas de las prácticas y formatos de datos de EFI reflejan los de Microsoft Windows . [5] [6] En 2005, UEFI desaprobó EFI 1.10 (la versión final de EFI). El Unified EFI Forum es el organismo de la industria que gestiona las especificaciones UEFI en todo momento.
Historia
La motivación original para EFI surgió durante el desarrollo temprano de los primeros sistemas Intel-HP Itanium a mediados de la década de 1990. Las limitaciones de la BIOS (como el modo real de 16 bits , 1 MB de espacio de memoria direccionable, [7] programación en lenguaje ensamblador y hardware PC AT ) se habían vuelto demasiado restrictivas para las plataformas de servidor más grandes a las que se dirigía Itanium. [8] El esfuerzo para abordar estas preocupaciones comenzó en 1998 y se llamó inicialmente Intel Boot Initiative . [9] Más tarde se le cambió el nombre a Interfaz de firmware extensible (EFI). [10] [11]
En julio de 2005, Intel dejó de desarrollar la especificación EFI en la versión 1.10 y la contribuyó al Unified EFI Forum , que ha desarrollado la especificación como Unified Extensible Firmware Interface (UEFI). La especificación EFI original sigue siendo propiedad de Intel, que proporciona licencias exclusivamente para productos basados en EFI, pero la especificación UEFI es propiedad de UEFI Forum. [8] [12]
La versión 2.0 de la especificación UEFI se publicó el 31 de enero de 2006. Agregó criptografía y seguridad. La versión 2.1 de la especificación UEFI se publicó el 7 de enero de 2007. Agregó la autenticación de red y la arquitectura de la interfaz de usuario ('Infraestructura de interfaz humana' en UEFI).
La última especificación UEFI, versión 2.9, se publicó en marzo de 2021. [13]
La primera implementación UEFI de código abierto , Tiano, fue lanzada por Intel en 2004. Desde entonces, Tiano ha sido reemplazado por EDK [14] y EDK2 [15] y ahora es mantenido por la comunidad TianoCore. [dieciséis]
En diciembre de 2018, Microsoft anunció Project Mu, una bifurcación de TianoCore EDK2 que se utiliza en los productos Microsoft Surface e Hyper-V . El proyecto promueve la idea de firmware como servicio . [17]
En octubre de 2018, Arm anunció Arm ServerReady , un programa de certificación de cumplimiento para instalar los hipervisores y los sistemas operativos genéricos listos para usar en servidores basados en Arm. El programa requiere que el firmware del sistema sea compatible con los requisitos de arranque de la base del servidor (SBBR). SBBR requiere el cumplimiento de UEFI, ACPI y SMBIOS . En octubre de 2020, del brazo anunció la extensión del programa a la orilla y la IO mercado. El nuevo nombre del programa es Arm SystemReady . Arm SystemReady definió la especificación de Requisitos de arranque base ( BBR ) que actualmente proporciona tres recetas, dos de las cuales están relacionadas con UEFI: 1) SBBR: que requiere el cumplimiento de UEFI, ACPI y SMBIOS adecuado para el entorno operativo de nivel empresarial como Windows, Red Hat Enterprise Linux, VMware ESXi; y 2) EBBR: que requiere el cumplimiento de un conjunto de interfaces UEFI como se define en los Requisitos de arranque base integrados ( EBBR ) adecuados para el entorno integrado como Yocto. Muchas distribuciones de Linux y BSD pueden admitir ambas recetas.
Ventajas
La interfaz definida por la especificación EFI incluye tablas de datos que contienen información de la plataforma y servicios de arranque y tiempo de ejecución que están disponibles para el cargador del SO y el SO. El firmware UEFI ofrece varias ventajas técnicas sobre un sistema BIOS tradicional: [18]
- Capacidad para utilizar particiones de discos grandes (más de 2 TB ) con una tabla de particiones GUID (GPT) [19] [a]
- Entorno previo al SO flexible, que incluye capacidad de red, GUI, varios idiomas
- Entorno previo al SO de 32 bits (por ejemplo, IA-32 , ARM32 ) o 64 bits (por ejemplo , x64 , AArch64 )
- Programación en lenguaje C
- Diseño modular
- Compatibilidad con versiones anteriores y posteriores
Compatibilidad
Compatibilidad del procesador
A partir de la versión 2.5, existen enlaces de procesador para Itanium, x86, x86-64, ARM (AArch32) y ARM64 (AArch64). [20] Solo se pueden admitir procesadores little-endian . [21] Se está desarrollando soporte UEFI no oficial para POWERPC64 mediante la implementación de TianoCore sobre OPAL, [22] la capa de abstracción OpenPOWER, que se ejecuta en modo little-endian. [23] Existen proyectos similares para MIPS [24] y RISC-V . [25] A partir de UEFI 2.7, los enlaces de procesador RISC-V se han establecido oficialmente para los modos de 32, 64 y 128 bits. [26]
El BIOS de PC estándar está limitado a un modo de procesador de 16 bits y 1 MB de espacio de memoria direccionable, como resultado del diseño basado en el IBM 5150 que usaba un procesador Intel 8088 de 16 bits . [8] [27] En comparación, el modo de procesador en un entorno UEFI puede ser de 32 bits ( x86-32 , AArch32) o de 64 bits ( x86-64 , Itanium y AArch64). [8] [28] Las implementaciones de firmware UEFI de 64 bits admiten el modo largo , que permite que las aplicaciones en el entorno de prearranque utilicen direccionamiento de 64 bits para obtener acceso directo a toda la memoria de la máquina. [29]
UEFI requiere que el cargador (o kernel) del firmware y del sistema operativo tenga el mismo tamaño; por ejemplo, una implementación de firmware UEFI de 64 bits puede cargar solo un cargador de arranque o kernel del sistema operativo (SO) de 64 bits (a menos que se utilice el arranque Legacy basado en CSM). Una vez que el sistema pasa de "Servicios de arranque" a "Servicios en tiempo de ejecución", el kernel del sistema operativo se hace cargo. En este punto, el kernel puede cambiar los modos del procesador si lo desea, pero esto impide el uso de los servicios de tiempo de ejecución (a menos que el kernel vuelva a cambiar). [30] : secciones 2.3.2 y 2.3.4 A partir de la versión 3.15, el kernel de Linux admite kernels de 64 bits para arrancar en implementaciones de firmware UEFI de 32 bits que se ejecutan en CPU x86-64 , con soporte de transferencia UEFI desde un arranque UEFI cargador como requisito. [31] El protocolo de transferencia UEFI deduplica el código de inicialización UEFI entre el kernel y los cargadores de arranque UEFI, dejando que la inicialización sea realizada solo por el stub de arranque UEFI del kernel de Linux . [32] [33]
Compatibilidad con dispositivos de disco
Además del esquema de partición de disco de PC estándar que utiliza un registro de arranque maestro (MBR), UEFI también funciona con el esquema de partición de tabla de particiones GUID (GPT), que está libre de muchas de las limitaciones de MBR. En particular, los límites de MBR en el número y tamaño de las particiones del disco (hasta cuatro particiones primarias por disco y hasta 2 TB (2 × 2 40 bytes ) por disco) se relajan. [34] Más específicamente, GPT permite un tamaño máximo de disco y partición de 8 ZB (8 × 2 70 bytes) . [35] [36]
Linux
El soporte para GPT en Linux se habilita activando la opción CONFIG_EFI_PARTITION
(Soporte de partición EFI GUID) durante la configuración del kernel. [37] Esta opción permite que Linux reconozca y utilice discos GPT después de que el firmware del sistema transfiera el control del sistema a Linux.
Para obtener compatibilidad inversa, Linux puede usar discos GPT en sistemas basados en BIOS tanto para el almacenamiento de datos como para el arranque, ya que tanto GRUB 2 como Linux son compatibles con GPT. Esta configuración generalmente se conoce como BIOS-GPT . [38] Como GPT incorpora el MBR protector, una computadora basada en BIOS puede arrancar desde un disco GPT utilizando un cargador de arranque compatible con GPT almacenado en el área de código de arranque del MBR protector . [36] En el caso de GRUB, dicha configuración requiere una partición de arranque BIOS para que GRUB incruste su código de segunda etapa debido a la ausencia del espacio post-MBR en los discos particionados GPT (que es asumido por el encabezado primario de GPT y Tabla de particiones primarias ). Por lo general, con un tamaño de 1 MB , el identificador único global (GUID) de esta partición en el esquema GPT es 21686148-6449-6E6F-744E-656564454649 y GRUB solo lo usa en configuraciones BIOS-GPT. Desde la perspectiva de GRUB, no existe tal tipo de partición en el caso de la partición MBR. Esta partición no es necesaria si el sistema está basado en UEFI porque en ese caso no es necesario incrustar el código de la segunda etapa. [19] [36] [38]
Los sistemas UEFI pueden acceder a los discos GPT y arrancar directamente desde ellos, lo que permite que Linux utilice métodos de arranque UEFI. Arrancar Linux desde discos GPT en sistemas UEFI implica la creación de una partición del sistema EFI (ESP), que contiene aplicaciones UEFI como cargadores de arranque, kernels del sistema operativo y software de utilidades. [39] [40] [41] Esta configuración generalmente se conoce como UEFI-GPT , mientras que se recomienda que ESP tenga al menos 512 MB de tamaño y esté formateado con un sistema de archivos FAT32 para una máxima compatibilidad. [36] [38] [42]
Para obtener compatibilidad con versiones anteriores , la mayoría de las implementaciones de UEFI también admiten el arranque desde discos con particiones MBR, a través del Módulo de soporte de compatibilidad (CSM) que proporciona compatibilidad con BIOS heredado. [43] En ese caso, arrancar Linux en sistemas UEFI es lo mismo que en sistemas heredados basados en BIOS.
Microsoft Windows
Las versiones de 64 bits de Windows Vista SP1 y posteriores pueden arrancar desde un disco GPT de más de 2 TB .
Características
Servicios
EFI define dos tipos de servicios: servicios de arranque y servicios de tiempo de ejecución . Los servicios de arranque están disponibles solo mientras el firmware es propietario de la plataforma (es decir, antes de la ExitBootServices()
llamada) e incluyen consolas de texto y gráficas en varios dispositivos y servicios de bus, bloque y archivo. Los servicios en tiempo de ejecución aún son accesibles mientras se ejecuta el sistema operativo; incluyen servicios como fecha, hora y acceso NVRAM .
- Servicios de Protocolo de salida de gráficos (GOP)
- El Protocolo de salida de gráficos (GOP) proporciona servicios en tiempo de ejecución; consulte también la sección de características gráficas a continuación. El sistema operativo puede escribir directamente en el framebuffer proporcionado por GOP durante el modo de ejecución. [44]
- Servicios de mapas de memoria UEFI
- Servicios SMM
- Servicios ACPI
- Servicios SMBIOS
- Servicios variables
- Las variables UEFI proporcionan una forma de almacenar datos, en particular datos no volátiles. Algunas variables UEFI se comparten entre el firmware de la plataforma y los sistemas operativos. Los espacios de nombres de variables se identifican mediante GUID y las variables son pares clave / valor. Por ejemplo, las variables UEFI se pueden usar para mantener los mensajes de bloqueo en la NVRAM después de un bloqueo para que el sistema operativo los recupere después de un reinicio. [45]
- Servicios de tiempo
- UEFI proporciona servicios de tiempo. Los servicios de hora incluyen soporte para los campos de zona horaria y horario de verano, que permiten que el reloj en tiempo real del hardware se establezca en la hora local o UTC. [46] En las máquinas que utilizan un reloj en tiempo real PC-AT, de forma predeterminada, el reloj del hardware aún debe configurarse en la hora local para que sea compatible con Windows basado en BIOS, [6] a menos que se utilicen versiones recientes y una entrada en el registro de Windows. está configurado para indicar el uso de UTC.
Aplicaciones
Más allá de cargar un sistema operativo, UEFI puede ejecutar aplicaciones UEFI , que residen como archivos en la partición del sistema EFI . Se pueden ejecutar desde UEFI Shell, mediante el administrador de arranque del firmware o mediante otras aplicaciones UEFI. Las aplicaciones UEFI se pueden desarrollar e instalar independientemente de los fabricantes de equipos originales (OEM).
Un tipo de aplicación UEFI es un cargador de arranque del sistema operativo como GRUB , rEFInd , Gummiboot y Windows Boot Manager ; que carga algunos archivos del sistema operativo en la memoria y los ejecuta. Además, un cargador de arranque del sistema operativo puede proporcionar una interfaz de usuario para permitir que se ejecute la selección de otra aplicación UEFI. Las utilidades como UEFI Shell también son aplicaciones UEFI.
Protocolos
EFI define los protocolos como un conjunto de interfaces de software que se utilizan para la comunicación entre dos módulos binarios. Todos los controladores de EFI deben proporcionar servicios a otros a través de protocolos. Los protocolos EFI son similares a las llamadas de interrupción del BIOS .
Controladores de dispositivo
Además de los controladores de dispositivo específicos de la arquitectura del conjunto de instrucciones estándar , EFI proporciona un controlador de dispositivo independiente de ISA almacenado en una memoria no volátil como código de bytes EFI o EBC . El firmware del sistema tiene un intérprete para imágenes EBC. En ese sentido, EBC es análogo a Open Firmware , el firmware independiente de ISA utilizado en computadoras Apple Macintosh y Sun Microsystems SPARC basadas en PowerPC , entre otras.
Algunos controladores EFI específicos de la arquitectura (sin código de bytes EFI) para algunos tipos de dispositivos pueden tener interfaces para que las utilice el sistema operativo. Esto permite que el sistema operativo dependa de EFI para que los controladores realicen funciones de red y gráficos básicos antes, y si se cargan, los controladores específicos del sistema operativo.
En otros casos, el controlador EFI pueden ser controladores del sistema de archivos que permiten arrancar desde otros tipos de volúmenes de disco. Los ejemplos incluyen efifs para 37 sistemas de archivos (basados en el código GRUB2 ), [47] utilizados por Rufus para los ESP de NTFS de carga en cadena. [48]
Características gráficas
La especificación EFI 1.0 definió un protocolo UGA (Adaptador gráfico universal) como una forma de admitir funciones gráficas. UEFI no incluyó UGA y lo reemplazó con GOP (Protocolo de salida de gráficos). [49]
UEFI 2.1 definió una "Infraestructura de interfaz humana" (HII) para administrar la entrada del usuario, cadenas localizadas, fuentes y formularios (en el sentido HTML ). Estos permiten a los fabricantes de equipos originales (OEM) o proveedores de BIOS independientes (IBV) diseñar interfaces gráficas para la configuración previa al arranque.
La mayoría de las primeras implementaciones de firmware UEFI estaban basadas en consola. Hoy en día, muchas implementaciones de firmware UEFI están basadas en GUI.
Partición del sistema EFI
Una partición del sistema EFI, a menudo abreviada como ESP, es una partición de dispositivo de almacenamiento de datos que se usa en computadoras que se adhieren a la especificación UEFI. Accedido por el firmware UEFI cuando una computadora está encendida, almacena aplicaciones UEFI y los archivos que estas aplicaciones necesitan para ejecutar, incluidos los cargadores de arranque del sistema operativo . Los esquemas de tabla de partición admitidos incluyen MBR y GPT , así como volúmenes El Torito en discos ópticos. [30] : sección 2.6.2 Para su uso en ESP, UEFI define una versión específica del sistema de archivos FAT , que se mantiene como parte de la especificación UEFI e independientemente de la especificación FAT original, que abarca los sistemas de archivos FAT32 , FAT16 y FAT12 . [30] : sección 12.3 [50] [51] [52] El ESP también proporciona espacio para un sector de arranque como parte de la compatibilidad del BIOS con versiones anteriores. [43]
Arranque
Arranque UEFI
A diferencia del BIOS de PC heredado, UEFI no se basa en los sectores de arranque , sino que define un administrador de arranque como parte de la especificación UEFI. Cuando se enciende una computadora, el administrador de arranque verifica la configuración de arranque y, basándose en sus ajustes, luego ejecuta el cargador de arranque del sistema operativo especificado o el kernel del sistema operativo (generalmente el cargador de arranque [53] ). La configuración de arranque se define mediante variables almacenadas en NVRAM , incluidas las variables que indican las rutas del sistema de archivos a los cargadores de SO o kernels de SO.
UEFI puede detectar automáticamente los cargadores de arranque del sistema operativo, lo que permite un arranque sencillo desde dispositivos extraíbles como unidades flash USB . Esta detección automatizada se basa en rutas de archivo estandarizadas al cargador de arranque del sistema operativo, y la ruta varía según la arquitectura de la computadora . El formato de la ruta del archivo se define como
El arranque de sistemas UEFI desde discos con particiones GPT se denomina comúnmente arranque UEFI-GPT . A pesar del hecho de que la especificación UEFI requiere que las tablas de particiones GPT sean totalmente compatibles, [30] algunas implementaciones de firmware UEFI cambian inmediatamente al arranque CSM basado en BIOS según el tipo de tabla de particiones del disco de arranque, evitando efectivamente que el arranque UEFI se realice desde Partición del sistema EFI en discos con particiones MBR. [43] Este esquema de arranque se denomina comúnmente UEFI-MBR .
También es común que un administrador de arranque tenga una interfaz de usuario textual para que el usuario pueda seleccionar el sistema operativo deseado (o la utilidad de configuración) de una lista de opciones de arranque disponibles.
Arranque CSM
Para garantizar la compatibilidad con versiones anteriores, la mayoría de las implementaciones de firmware UEFI en máquinas de clase PC también admiten el arranque en modo BIOS heredado desde discos con particiones MBR, a través del Módulo de soporte de compatibilidad (CSM) que proporciona compatibilidad BIOS heredada. En este escenario, el arranque se realiza de la misma forma que en los sistemas heredados basados en BIOS, ignorando la tabla de particiones y confiando en el contenido de un sector de arranque . [43]
El arranque estilo BIOS desde discos con particiones MBR se denomina comúnmente BIOS-MBR , independientemente de que se realice en UEFI o sistemas basados en BIOS heredados. Además, también es posible arrancar sistemas heredados basados en BIOS desde discos GPT, y este esquema de arranque se denomina comúnmente BIOS-GPT .
El Módulo de soporte de compatibilidad permite que los sistemas operativos heredados y algunas ROM opcionales heredadas que no son compatibles con UEFI se sigan utilizando. [54] También proporciona la funcionalidad de modo de administración del sistema (SMM) heredada requerida , denominada CompatibilitySmm , como una adición a las funciones proporcionadas por UEFI SMM. Un ejemplo de una funcionalidad SMM heredada es proporcionar compatibilidad heredada USB para teclado y mouse, emulando sus contrapartes clásicas de PS / 2 . [54]
En noviembre de 2017, Intel anunció que planeaba eliminar gradualmente el soporte para CSM para 2020. [55]
Arranque de red
La especificación UEFI incluye soporte para el arranque a través de la red a través del entorno de ejecución de prearranque (PXE). Los protocolos de red de arranque PXE incluyen Protocolo de Internet ( IPv4 e IPv6 ), Protocolo de datagramas de usuario (UDP), Protocolo de configuración dinámica de host (DHCP), Protocolo de transferencia de archivos trivial (TFTP) e iSCSI . [30] [56]
Las imágenes del sistema operativo se pueden almacenar de forma remota en redes de área de almacenamiento (SAN), con Internet Small Computer System Interface (iSCSI) y Fibre Channel over Ethernet (FCoE) como protocolos compatibles para acceder a las SAN. [30] [57] [58]
La versión 2.5 de la especificación UEFI agrega soporte para acceder a imágenes de arranque a través del protocolo HTTP . [59]
Arranque seguro
La especificación UEFI 2.3.1 Errata C (o superior) define un protocolo conocido como Arranque seguro , que puede proteger el proceso de arranque al evitar la carga de controladores UEFI o cargadores de arranque del sistema operativo que no están firmados con una firma digital aceptable . No se especifican los detalles mecánicos de la precisión con la que se firmarán estos controladores. [60] Cuando el Arranque seguro está habilitado, inicialmente se coloca en el modo "configuración", lo que permite que se escriba en el firmware una clave pública conocida como "clave de plataforma" (PK). Una vez que se escribe la clave, Secure Boot ingresa al modo "Usuario", donde solo los controladores UEFI y los cargadores de arranque del sistema operativo firmados con la clave de la plataforma pueden cargarse mediante el firmware. Se pueden agregar "claves de intercambio de claves" (KEK) adicionales a una base de datos almacenada en la memoria para permitir el uso de otros certificados, pero aún deben tener una conexión con la parte privada de la clave de la plataforma. [61] El Arranque seguro también se puede colocar en el modo "Personalizado", donde se pueden agregar claves públicas adicionales al sistema que no coinciden con la clave privada. [62]
El arranque seguro es compatible con Windows 8 y 8.1 , Windows Server 2012 y 2012 R2, Windows 10 , VMware vSphere 6.5 [63] y varias distribuciones de Linux, incluidas Fedora (desde la versión 18), openSUSE (desde la versión 12.3), RHEL (desde versión 7), CentOS (desde la versión 7 [64] ), Debian (desde la versión 10), [65] y Ubuntu (desde la versión 12.04.2). [66] A enero de 2017[actualizar], El soporte de FreeBSD está en una etapa de planificación. [67]
Shell UEFI
UEFI proporciona un entorno de shell , que se puede utilizar para ejecutar otras aplicaciones UEFI, incluidos los cargadores de arranque UEFI . [41] Aparte de eso, los comandos disponibles en el shell UEFI se pueden usar para obtener otra información sobre el sistema o el firmware, incluida la obtención del mapa de memoria ( memmap
), la modificación de las variables del administrador de arranque ( bcfg
), la ejecución de programas de particionamiento ( diskpart
), la carga Controladores UEFI y edición de archivos de texto ( edit
). [68] [69] [70]
El código fuente de una cáscara de UEFI se puede descargar desde el Intel 's TianoCore proyecto UDK / EDK2. [71] También está disponible un ShellBinPkg prediseñado. [72] Shell v2 funciona mejor en sistemas UEFI 2.3+ y se recomienda sobre Shell v1 en esos sistemas. Shell v1 debería funcionar en todos los sistemas UEFI. [68] [73] [74]
Los métodos utilizados para iniciar UEFI shell dependen del fabricante y modelo de la placa base del sistema . Algunos de ellos ya ofrecen una opción directa en la configuración del firmware para el lanzamiento, por ejemplo, la versión compilada x86-64 del shell debe estar disponible como
. Algunos otros sistemas tienen un shell UEFI ya integrado que se puede iniciar mediante las combinaciones de teclas adecuadas. [75] [76] Para otros sistemas, la solución es crear una unidad flash USB apropiada o agregar manualmente ( bcfg
) una opción de arranque asociada con la versión compilada del shell. [70] [75] [77] [78]
Comandos
La siguiente es una lista de comandos admitidos por el shell de EFI. [69]
- ayuda
- guid
- colocar
- alias
- dh
- descargar
- mapa
- montar
- CD
- eco
- pausa
- ls
- mkdir
- modo
- cp
- comp
- rm
- memmap
- tipo
- dmpstore
- carga
- ver
- errar
- hora
- fecha
- puesto
- Reiniciar
- vol
- attrib
- cls
- bcfg
- editar
- Edd30
- dblk
- pci
- mm
- mem
- EddDebug
Extensiones
Las extensiones a UEFI se pueden cargar desde prácticamente cualquier dispositivo de almacenamiento no volátil conectado a la computadora. Por ejemplo, un fabricante de equipos originales (OEM) puede distribuir sistemas con una partición de sistema EFI en el disco duro, lo que agregaría funciones adicionales al firmware UEFI estándar almacenado en la ROM de la placa base .
Cápsula UEFI
UEFI Capsule define una interfaz de actualización de firmware moderna y segura de firmware a sistema operativo. [79] Windows 8 , Windows 8.1 , Windows 10 [80] y Fwupd para Linux son compatibles con UEFI Capsule.
Hardware
Al igual que BIOS , UEFI inicializa y prueba los componentes de hardware del sistema y luego carga el cargador de arranque desde el dispositivo de almacenamiento masivo o desde el arranque en red . En los sistemas x86 , el firmware UEFI generalmente se almacena en el chip flash NOR de la placa base. [81]
Clases UEFI
Las máquinas UEFI pueden tener una de las siguientes "clases", que se utilizaron para facilitar la transición a UEFI. Intel puso fin a Legacy BIOS en 2020. [82]
- Clase 0: BIOS heredado
- Clase 1: UEFI en modo solo CSM (es decir, sin arranque UEFI)
- Clase 2: UEFI con CSM
- Clase 3: UEFI sin CSM
- Clase 3+: UEFI con arranque seguro habilitado
Etapas de arranque
SEC - Fase de seguridad
Esta es la primera etapa del arranque UEFI, pero puede tener un código binario específico de la plataforma que la precede. (por ejemplo, Intel ME , AMD PSP , microcódigo de CPU ). Consiste en un código mínimo escrito en lenguaje ensamblador para la arquitectura específica. Inicializa una memoria temporal (a menudo caché de CPU como RAM) y sirve como raíz de confianza del software del sistema con la opción de verificar PEI antes de la transferencia.
PEI: inicialización previa a EFI
La segunda etapa del arranque UEFI consiste en un despachador consciente de la dependencia que carga y ejecuta módulos PEI (PEIM) para manejar las tareas de inicialización de hardware tempranas, como la inicialización de la memoria principal y las operaciones de recuperación de firmware. Además, es responsable de descubrir el modo de inicio actual y de manejar muchas operaciones ACPI S0ix / ACPI S3. En el caso de la reanudación de ACPI S0ix / ACPI S3, es responsable de restaurar muchos registros de hardware a un estado previo a la suspensión. PEI también usa la memoria caché de la CPU como RAM.
DXE - Entorno de ejecución de controladores
Esta etapa consta de módulos C y un despachador consciente de la dependencia. Con la memoria principal ahora disponible, la CPU, el chipset, la placa base, los periféricos, los servicios de arranque y los servicios de tiempo de ejecución se inicializan en DXE y BDS.
BDS - Selección de dispositivo de arranque
BDS es parte del DXE. [83] [84] En esta etapa, los dispositivos de E / S y los dispositivos de arranque se inicializan, los controladores UEFI o las ROM de opción de los dispositivos PCI se ejecutan de acuerdo con la configuración del sistema y se procesan las opciones de arranque.
TSL - Carga transitoria del sistema
Esta es la etapa entre la selección del dispositivo de arranque y la transferencia al sistema operativo. En este punto, uno puede ingresar al shell UEFI o ejecutar una aplicación UEFI como el cargador de arranque del sistema operativo.
RT - Tiempo de ejecución
La UEFI se traspasa al sistema operativo (SO) después Se ejecuta ExitBootServices () . Un sistema operativo compatible con UEFI ahora es responsable de salir de los servicios de arranque, lo que activa el firmware para descargar todo el código y los datos que ya no se necesitan, dejando solo el código / datos de los servicios de tiempo de ejecución, incluidos SMM , mapa de memoria UEFI , UEFI GOP , ACPI y SMBIOS . [85] Un sistema operativo moderno típico preferirá utilizar sus propios programas (como los controladores del núcleo ) para controlar los dispositivos de hardware.
Cuando se utiliza un sistema operativo heredado, CSM manejará esta llamada asegurando que el sistema sea compatible con las expectativas del BIOS heredado.
Implementación y adopción
Intel EFI
La implementación de Intel de EFI es el Marco de innovación de plataforma Intel , con nombre en código Tiano . Tiano se ejecuta en los procesadores Intel XScale , Itanium , x86-32 y x86-64 , y es un software propietario, aunque una parte del código se ha publicado bajo la licencia BSD o Eclipse Public License (EPL) como TianoCore . TianoCore se puede utilizar como carga útil para coreboot . [86]
La implementación de UEFI de Phoenix Technologies se denomina SecureCore Technology (SCT). [87] American Megatrends ofrece su propia implementación de firmware UEFI conocida como Aptio, [88] mientras que Insyde Software ofrece InsydeH2O. [89]
En diciembre de 2018, Microsoft lanzó una versión de código abierto de su implementación UEFI basada en TianoCore EDK2 de la línea Surface , Project Mu . [90]
Das U-Boot
En 2017 se introdujo una implementación de UEFI API en Universal Boot Loader ( Das U-Boot ). [91] En la arquitectura ARMv8 , las distribuciones de Linux utilizan la implementación de U-Boot UEFI junto con GNU GRUB para el arranque (por ejemplo, SUSE Linux [ 92] ), lo mismo es válido para OpenBSD. [93] Para arrancar desde iSCSI, iPXE se puede utilizar como una aplicación UEFI cargada por U-Boot. [94]
Plataformas que utilizan EFI / UEFI
Intel primeros 's Itanium estaciones de trabajo y servidores, publicado en 2000, implementados EFI 1.02.
Los primeros sistemas Itanium 2 de Hewlett-Packard , lanzados en 2002, implementaron EFI 1.10; pudieron arrancar Windows , Linux , FreeBSD y HP-UX ; OpenVMS agregó la capacidad UEFI en junio de 2003.
En enero de 2006, Apple Inc. envió sus primeras computadoras Macintosh basadas en Intel . Estos sistemas usaban EFI en lugar de Open Firmware , que se había usado en sus sistemas anteriores basados en PowerPC. [95] El 5 de abril de 2006, Apple lanzó por primera vez Boot Camp , que produce un disco de controladores de Windows y una herramienta de partición no destructiva para permitir la instalación de Windows XP o Vista sin necesidad de reinstalar Mac OS X. También se realizó una actualización de firmware. lanzó que agregó compatibilidad con BIOS a su implementación EFI. Los modelos posteriores de Macintosh se envían con el firmware más reciente. [96]
Durante 2005, más de un millón de sistemas Intel se enviaron con la implementación de UEFI de Intel. [97] [ Verificación fallida ] Los nuevos productos móviles, de escritorio y de servidor, que utilizan la implementación de UEFI de Intel, comenzaron a enviarse en 2006. Por ejemplo, las placas que usan la serie de chipset Intel 945 usan la implementación de firmware UEFI de Intel.
Desde 2005, EFI también se ha implementado en arquitecturas que no son PC, como sistemas integrados basados en núcleos XScale . [97]
El EDK (EFI Developer Kit) incluye un destino NT32, que permite que el firmware EFI y las aplicaciones EFI se ejecuten dentro de una aplicación de Windows . Pero EDK NT32 no permite el acceso directo al hardware. Esto significa que solo un subconjunto de la aplicación EFI y los controladores se pueden ejecutar en el objetivo EDK NT32.
En 2008, más sistemas x86-64 adoptaron UEFI. Si bien muchos de estos sistemas todavía permiten arrancar solo los sistemas operativos basados en BIOS a través del Módulo de soporte de compatibilidad (CSM) (por lo tanto, no parece que el usuario esté basado en UEFI), otros sistemas comenzaron a permitir el inicio de sistemas operativos basados en UEFI. Por ejemplo, servidor IBM x3450, placas base MSI con ClickBIOS, equipos portátiles HP EliteBook.
En 2009, IBM envió máquinas System x (x3550 M2, x3650 M2, iDataPlex dx360 M2) y BladeCenter HS22 con capacidad UEFI. Dell envió los servidores PowerEdge T610, R610, R710, M610 y M710 con capacidad UEFI. Los sistemas más disponibles comercialmente se mencionan en un documento técnico de UEFI. [98]
En 2011, los principales proveedores (como ASRock , Asus , Gigabyte y MSI ) lanzaron varias placas base orientadas al consumidor utilizando el chipset Intel serie 6 LGA 1155 y chipsets AMD 9 Series AM3 + con UEFI. [99]
Con el lanzamiento de Windows 8 en octubre de 2012, los requisitos de certificación de Microsoft ahora requieren que las computadoras incluyan firmware que implemente la especificación UEFI. Además, si la computadora es compatible con la función " Connected Standby " de Windows 8 (que permite que los dispositivos tengan una administración de energía comparable a la de los teléfonos inteligentes , con un retorno casi instantáneo del modo de espera), entonces el firmware no puede contener un módulo de compatibilidad de soporte ( CSM). Como tal, los sistemas que admiten Connected Standby no pueden arrancar los sistemas operativos Legacy BIOS. [100] [101]
En octubre de 2017, Intel anunció que eliminaría la compatibilidad con BIOS de PC heredada de todos sus productos para 2020, a favor de UEFI Clase 3. [102]
Sistemas operativos
Un sistema operativo que se puede arrancar desde un (U) EFI se denomina sistema operativo compatible con (U) EFI, definido por la especificación (U) EFI. Aquí, el término arrancar desde un (U) EFI significa arrancar directamente el sistema utilizando un cargador de sistema operativo (U) EFI almacenado en cualquier dispositivo de almacenamiento. La ubicación predeterminada para el cargador del sistema operativo es
, en nombre corto del tipo de máquina puede ser IA32
, X64
, IA64
, ARM
o AA64
. [30] Algunos proveedores de sistemas operativos pueden tener sus propios cargadores de arranque. También pueden cambiar la ubicación de inicio predeterminada.
- El kernel de Linux ha sido capaz de usar EFI en el momento del arranque desde principios de la década de 2000, [103] usando el cargador de arranque EFI de elilo o, más recientemente, las versiones EFI de GRUB . [104] Grub + Linux también admite el arranque desde una tabla de particiones GUID sin UEFI. [19] La distribución Ubuntu agregó soporte para UEFI Secure Boot a partir de la versión 12.10. [105] Además, el kernel de Linux se puede compilar con la opción de ejecutarse como un cargador de arranque EFI por sí solo a través de la función de stub de arranque EFI.
- HP-UX ha utilizado (U) EFI como mecanismo de arranque en los sistemas IA-64 desde 2002.
- OpenVMS ha utilizado EFI en IA-64 desde su versión de evaluación inicial en diciembre de 2003, y para versiones de producción desde enero de 2005. [106] El puerto x86-64 de OpenVMS también utiliza UEFI para arrancar el sistema operativo. [107]
- Apple usa EFI para su línea de Mac basadas en Intel . Mac OS X v10.4 Tiger y Mac OS X v10.5 Leopard implementan EFI v1.10 en modo de 32 bits incluso en las CPU más nuevas de 64 bits, pero el soporte completo llegó con OS X v10.8 Mountain Lion . [108]
- Las versiones Itanium de Windows 2000 (Advanced Server Limited Edition y Datacenter Server Limited Edition) implementaron EFI 1.10 en 2002. MS Windows Server 2003 para IA-64 , MS Windows XP 64-bit Edition y Windows 2000 Advanced Server Limited Edition, todos los cuales son para la familia de procesadores Intel Itanium , implementan EFI, un requisito de la plataforma a través de la especificación DIG64 . [109]
- Microsoft introdujo UEFI para sistemas operativos Windows x64 con Windows Vista SP1 [110] y Windows Server 2008, sin embargo, solo se admite UGA (Adaptador gráfico universal) 1.1 o Legacy BIOS INT 10h ; El protocolo de salida de gráficos (GOP) no es compatible. Por lo tanto, las PC que ejecutan versiones de 64 bits de Windows Vista SP1 , Windows Vista SP2 , Windows 7 , Windows Server 2008 y Windows Server 2008 R2 son compatibles con UEFI Clase 2. [111] [112] La UEFI de 32 bits no se admitía originalmente desde los proveedores no tenían ningún interés en producir firmware UEFI nativo de 32 bits debido al estado general de la informática de 64 bits . [113] Windows 8 finalmente introdujo más optimizaciones para los sistemas UEFI, incluida la compatibilidad con el Protocolo de salida de gráficos (GOP), [114] un inicio más rápido, compatibilidad con UEFI de 32 bits y compatibilidad con el arranque seguro. [115] [116] Microsoft comenzó a exigir que UEFI ejecutara Windows con Windows 11. [117]
- El 5 de marzo de 2013, la Fundación FreeBSD otorgó una subvención a un desarrollador que buscaba agregar soporte UEFI al kernel y cargador de arranque de FreeBSD . [118] Los cambios se almacenaron inicialmente en una rama discreta del código fuente de FreeBSD, pero se fusionaron en la fuente principal el 4 de abril de 2014 (revisión 264095); los cambios también incluyen soporte en el instalador. [119] El soporte de arranque UEFI para amd64 apareció por primera vez en FreeBSD 10.1 y para arm64 en FreeBSD 11.0. [120]
- Oracle Solaris 11.1 y posteriores admiten el arranque UEFI para sistemas x86 con firmware UEFI versión 2.1 o posterior. GRUB 2 se utiliza como cargador de arranque en x86. [121]
- OpenBSD 5.9 [122] introdujo el soporte de arranque UEFI para sistemas x86 de 64 bits usando su propio cargador personalizado, OpenBSD 6.0 extendió ese soporte para incluir ARMv7. [123]
Uso de UEFI con virtualización
- HP Integrity Virtual Machines proporciona arranque UEFI en los servidores HP Integrity. También proporciona un entorno UEFI virtualizado para los sistemas operativos invitados compatibles con UEFI.
- Intel aloja un proyecto de firmware de máquina virtual abierta en SourceForge. [124]
- El software VMware Fusion 3 para Mac OS X puede arrancar máquinas virtuales Mac OS X Server mediante UEFI.
- VMware Workstation anterior a la versión 11 es compatible de manera no oficial con UEFI, pero se habilita manualmente editando el archivo .vmx. [125] VMware Workstation versión 11 y superior admite UEFI, independientemente de si el sistema host físico está basado en UEFI. VMware Workstation 14 (y, en consecuencia, Fusion 10) agrega soporte para la función de arranque seguro de UEFI. [126] [127]
- El hipervisor vSphere ESXi 5.0 es compatible oficialmente con UEFI. La versión 6.5 agrega soporte para Arranque seguro. [128] [129]
- VirtualBox ha implementado UEFI desde 3.1, [130] pero limitado a los sistemas operativos Unix / Linux y algunas versiones de Windows (no funciona con Windows Vista x64 y Windows 7 x64). [131] [132]
- QEMU / KVM se puede utilizar con Open Virtual Machine Firmware (OVMF) proporcionado por TianoCore . [133]
- El hipervisor VMware ESXi versión 5, parte de VMware vSphere, admite UEFI virtualizado como alternativa al BIOS de PC heredado dentro de una máquina virtual.
- La segunda generación de la máquina virtual Microsoft Hyper-V es compatible con UEFI virtualizado. [134]
- Las máquinas virtuales blindadas de Google Cloud Platform admiten UEFI virtualizado para habilitar el arranque seguro. [135]
Desarrollo de aplicaciones
El kit de desarrollo de aplicaciones EDK2 (EADK) permite utilizar funciones de biblioteca C estándar en aplicaciones UEFI. EADK puede descargarse libremente desde el Intel 's TianoCore UDK / EDK2 SourceForge proyecto. Como ejemplo, un puerto del intérprete de Python está disponible como una aplicación UEFI mediante el uso de EADK. [136] El desarrollo se ha trasladado a GitHub desde UDK2015. [137]
Un programa C minimalista de " hola, mundo " escrito con EADK se parece a su homólogo C habitual :
#include #include #include EFI_STATUS EFIAPI ShellAppMain ( IN UINTN Argc , IN CHAR16 ** Argv ) { Print ( L "hola, mundo \ n " ); return EFI_SUCCESS ; }
Crítica
Numerosos activistas de derechos digitales han protestado contra UEFI. Ronald G. Minnich , coautor de coreboot , y Cory Doctorow , activista de derechos digitales, han criticado a UEFI como un intento de eliminar la capacidad del usuario de controlar verdaderamente la computadora. [138] [139] No resuelve los problemas de larga data del BIOS de requerir dos controladores diferentes, uno para el firmware y otro para el sistema operativo, para la mayoría del hardware. [140]
El proyecto de código abierto TianoCore también proporciona interfaces UEFI. [141] TianoCore carece de los controladores especializados que inicializan las funciones del chipset, que en su lugar son proporcionados por coreboot , de los cuales TianoCore es una de las muchas opciones de carga útil. El desarrollo de coreboot requiere la cooperación de los fabricantes de chipsets para proporcionar las especificaciones necesarias para desarrollar controladores de inicialización.
Arranque seguro
En 2011, Microsoft anunció que las computadoras certificadas para ejecutar su sistema operativo Windows 8 tenían que enviarse con la clave pública de Microsoft inscrita y Secure Boot habilitado. Tras el anuncio, la empresa fue acusada por críticos y defensores del software libre / código abierto (incluida la Free Software Foundation ) de intentar utilizar la funcionalidad de arranque seguro de UEFI para dificultar o impedir por completo la instalación de sistemas operativos alternativos como Linux . Microsoft negó que el requisito de arranque seguro estuviera destinado a servir como una forma de bloqueo y aclaró sus requisitos al afirmar que los sistemas basados en x86 certificados para Windows 8 deben permitir que el arranque seguro ingrese al modo personalizado o se deshabilite, pero no en los sistemas. utilizando la arquitectura ARM . [62] [142] Windows 10 permite a los fabricantes de equipos originales decidir si los usuarios de sus sistemas x86 pueden administrar el arranque seguro o no. [143]
Otros desarrolladores expresaron su preocupación sobre los problemas legales y prácticos de implementar el soporte para el arranque seguro en los sistemas Linux en general. El ex desarrollador de Red Hat, Matthew Garrett, señaló que las condiciones de la GNU General Public License versión 3 pueden impedir el uso de GNU GRand Unified Bootloader sin que el desarrollador de una distribución revele la clave privada (sin embargo, la Free Software Foundation ha aclarado su posición desde entonces, asegurando que el fabricante del hardware tenía la responsabilidad de hacer que las claves estuvieran disponibles), [144] [105] y que también sería difícil para los usuarios avanzados construir kernels personalizados que pudieran funcionar con Secure Boot habilitado sin autofirmarlos. [142] Otros desarrolladores sugirieron que se podrían proporcionar compilaciones firmadas de Linux con otra clave, pero señalaron que sería difícil persuadir a los OEM para que envíen sus computadoras con la clave requerida junto con la clave de Microsoft. [3]
Varias distribuciones importantes de Linux han desarrollado diferentes implementaciones para Secure Boot. El propio Garrett desarrolló un gestor de arranque mínimo conocido como shim, que es un gestor de arranque firmado y precompilado que permite al usuario confiar individualmente en las claves proporcionadas por las distribuciones de Linux. [145] Ubuntu 12.10 usa una versión anterior de shim [ ¿cuál? ] preconfigurado para usar con la propia clave de Canonical que verifica solo el cargador de arranque y permite que se carguen núcleos sin firmar; Los desarrolladores creían que la práctica de firmar solo el cargador de arranque es más factible, ya que un kernel confiable es efectivo para asegurar solo el espacio del usuario , y no el estado previo al arranque para el que Secure Boot está diseñado para agregar protección. Eso también permite a los usuarios construir sus propios kernels y usar módulos de kernel personalizados también, sin la necesidad de reconfigurar el sistema. [105] [146] [147] Canonical también mantiene su propia clave privada para firmar instalaciones de Ubuntu precargadas en computadoras OEM certificadas que ejecutan el sistema operativo, y también planea hacer cumplir un requisito de Arranque seguro, lo que requiere tanto una Canonical clave y una clave de Microsoft (por razones de compatibilidad) que se incluirán en su firmware. Fedora también usa shim, [ ¿cuál? ] pero requiere que tanto el kernel como sus módulos también estén firmados. [146]
Se ha cuestionado si el kernel del sistema operativo y sus módulos también deben estar firmados; Si bien las especificaciones UEFI no lo requieren, Microsoft ha afirmado que sus requisitos contractuales sí lo hacen y que se reserva el derecho de revocar cualquier certificado utilizado para firmar código que pueda usarse para comprometer la seguridad del sistema. [147] En Windows, solo se permite el controlador del kernel WHQL si el arranque seguro está habilitado. En febrero de 2013, otro desarrollador de Red Hat intentó enviar un parche al kernel de Linux que le permitiría analizar la firma de autenticación de Microsoft utilizando una clave maestra X.509 incrustada en archivos PE firmados por Microsoft. Sin embargo, la propuesta fue criticada por el creador de Linux Linus Torvalds , quien atacó a Red Hat por respaldar el control de Microsoft sobre la infraestructura de arranque seguro. [148]
El 26 de marzo de 2013, el grupo español de desarrollo de software libre Hispalinux presentó una queja formal ante la Comisión Europea , alegando que los requisitos de arranque seguro de Microsoft en los sistemas OEM eran "obstructivos" y anticompetitivos . [149]
En la conferencia Black Hat en agosto de 2013, un grupo de investigadores de seguridad presentó una serie de exploits en implementaciones específicas de proveedores de UEFI que podrían usarse para explotar Secure Boot. [150]
En agosto de 2016 se informó que dos investigadores de seguridad habían encontrado la clave de seguridad "llave dorada" que Microsoft usa para firmar sistemas operativos. [151] Técnicamente, no se expuso ninguna clave, sin embargo, sí lo fue un binario explotable firmado por la clave. Esto permite que cualquier software se ejecute como si estuviera realmente firmado por Microsoft y expone la posibilidad de ataques de rootkit y bootkit . Esto también hace que sea imposible reparar la falla, ya que cualquier parche puede ser reemplazado (degradado) por el binario explotable (firmado). Microsoft respondió en un comunicado que la vulnerabilidad solo existe en la arquitectura ARM y los dispositivos Windows RT , y ha lanzado dos parches; sin embargo, los parches no eliminan (ni pueden) eliminar la vulnerabilidad, que requeriría reemplazos de claves en el firmware del usuario final para corregirla. [ cita requerida ]
Muchas distribuciones de Linux ahora son compatibles con UEFI Secure Boot, como RHEL (RHEL 7 y posterior), CentOS (CentOS 7 y posterior [152] ), Ubuntu , Fedora , Debian (Debian 10 y posterior [153] ), OpenSUSE , SUSE Linux . [154]
Problemas de firmware
La mayor prominencia del firmware UEFI en los dispositivos también ha dado lugar a una serie de problemas técnicos atribuidos a sus respectivas implementaciones. [155]
Tras el lanzamiento de Windows 8 a finales de 2012, se descubrió que ciertos modelos de computadoras Lenovo con arranque seguro tenían firmware codificado para permitir que solo se cargaran los ejecutables llamados " Windows Boot Manager " o " Red Hat Enterprise Linux ", independientemente de cualquier otro configuración. [156] Varios modelos de portátiles Toshiba con arranque seguro encontraron otros problemas a los que les faltaban ciertos certificados necesarios para su correcto funcionamiento. [155]
En enero de 2013, se publicitó un error en torno a la implementación de UEFI en algunas computadoras portátiles Samsung , lo que provocó que fueran bloqueadas después de instalar una distribución de Linux en modo UEFI. Si bien inicialmente se culpó a los posibles conflictos con un módulo del kernel diseñado para acceder a las funciones del sistema en las computadoras portátiles Samsung (lo que también provocó que los mantenedores del kernel deshabilitaran el módulo en los sistemas UEFI como medida de seguridad), Matthew Garrett descubrió que el error se desencadenó al almacenar demasiados UEFI variables a la memoria, y que el error también podría desencadenarse en Windows en determinadas condiciones. En conclusión, determinó que el módulo del kernel infractor había provocado que se escribieran volcados de mensajes del kernel en el firmware, lo que provocó el error. [45] [157] [158]
Ver también
- OpenBIOS
- Inicialización de la plataforma UEFI (UEFI PI)
- Interfaz avanzada de configuración y energía (ACPI)
- BIOS de administración del sistema (SMBIOS)
- Módulo de plataforma confiable (TPM)
Notas
- ^ La compatibilidad con discos grandes y características como Configuración avanzada e interfaz de energía (ACPI) y BIOS de administración del sistema (SMBIOS) se implementaron posteriormente en sistemas basados en BIOS.
Referencias
- ^ Pronunciado como un acrónimo o como / U ɪ f aɪ / .
- ^ Kinney, Michael (1 de septiembre de 2000). "Solución de problemas de arranque del BIOS con EFI" (PDF) . págs. 47–50 . Consultado el 14 de septiembre de 2010 .
- ^ a b "MS niega que el arranque seguro excluya a Linux" . El registro. 23 de septiembre de 2011 . Consultado el 24 de septiembre de 2011 .
- ^ "El reinado de BIOS de 30 años ha terminado: ¿Por qué UEFI W ... - Entrada Salida" . HP.com . Archivado desde el original el 26 de junio de 2013 . Consultado el 6 de marzo de 2012 .
- ^ IBM PC Real Time Clock debe ejecutarse en UT . Cl.cam.ac.uk. Consultado el 30 de octubre de 2013.
- ^ a b Garrett, Matthew (19 de enero de 2012). "EFI y Linux: el futuro está aquí y es terrible" . linux.conf.au 2012 . Consultado el 2 de abril de 2012 .
- ^ "Mapa de memoria (x86) - OSDev Wiki" . wiki.osdev.org . Consultado el 11 de diciembre de 2020 .
- ^ a b c d "La implementación de Emulex UEFI ofrece características líderes en la industria para sistemas IBM" (PDF) . Emulex . Consultado el 14 de septiembre de 2010 .
- ^ Interfaz de firmware extensible (EFI) y EFI unificado (UEFI) , Intel, archivado desde el original el 5 de enero de 2010
- ^ Wei, Dong (2006), "prólogo", Beyond BIOS , Intel Press, ISBN 978-0-9743649-0-2
- ^ "1.10 Descripción general de las especificaciones" , Interfaz de firmware extensible , Intel
- ^ Acerca de , Unified EFI Forum,
P: ¿Cuál es la relación entre EFI y UEFI? R: La especificación UEFI se basa en la especificación EFI 1.10 publicada por Intel con correcciones y cambios administrados por el Unified EFI Forum. Intel todavía tiene los derechos de autor sobre la especificación EFI 1.10, pero lo ha contribuido al Foro para que el Foro pueda evolucionarlo. No habrá versiones futuras de la especificación EFI, pero los clientes que la licencian aún pueden usarla bajo los términos de su licencia de Intel. La licencia de la Especificación EFI unificada proviene del Foro, no de Intel
- ^ "Especificación de la interfaz de firmware extensible unificada (UEFI) versión 2.9" (PDF) . www.uefi.org . Marzo de 2021 . Consultado el 23 de mayo de 2021 .
- ^ "GitHub - tianocore / Edk: espejo Git de EDK" . 19 de marzo de 2019.
- ^ "GitHub - tianocore / Tianocore.github.io: sitio web de Tianocore" . 8 de agosto de 2019.
- ^ "¿Qué es TianoCore?" .
- ^ "Microsoft anuncia Project Mu, una versión de código abierto del núcleo UEFI" . 20 de diciembre de 2018.
- ^ "UEFI y Windows" . Microsoft. 15 de septiembre de 2009 . Consultado el 14 de septiembre de 2010 .
- ^ a b c "Instalación" . 3.4 Instalación de BIOS . GNU GRUB . Consultado el 25 de septiembre de 2013 .
- ^ Especificación UEFI 2.4, sección 2.3
- ^ Especificación UEFI 2.3.1, sección 1.8.1.
- ^ "GitHub - andreiw / ppc64le-edk2: TianoCore UEFI para OPAL / PowerNV (PPC64 / PowerPC64 Little-Endian)" . GitHub .
- ^ "Tianocore para OpenPOWER" . Seguridad del firmware . 12 de octubre de 2015.
- ^ kontais. "EFI-MIPS" . SourceForge .
- ^ "lowRISC · lowRISC" .
- ^ http://www.uefi.org/sites/default/files/resources/UEFI_Spec_2_7.pdf
- ^ Hardwidge, Ben (1 de junio de 2010). "Explicación de LBA - ¿Resolviendo el problema de 3TB?" . bit-tech . Consultado el 18 de junio de 2010 .
- ^ Richardson, Brian (10 de mayo de 2010). "Pregúntele a un chico de BIOS:" Por qué UEFI " " . Blog de arquitectura Intel. Archivado desde el original el 9 de octubre de 2010 . Consultado el 18 de junio de 2010 .
- ^ Simpson, Gary. "UEFI Momentum - La perspectiva de AMD" . AMD. Archivado desde el original (PPTX) el 4 de enero de 2014 . Consultado el 20 de septiembre de 2014 .
- ^ a b c d e f g h "Especificaciones UEFI (versión 2.4 y anteriores)" (PDF) . Unified EFI, Inc. Junio de 2013 . Consultado el 25 de septiembre de 2013 .
- ^ "Kernel de Linux 3.15, Sección 1.3. Los núcleos EFI de 64 bits se pueden arrancar desde un firmware de 32 bits" . kernelnewbies.org . 8 de junio de 2014 . Consultado el 15 de junio de 2014 .
- ^ "x86, efi: Protocolo de transferencia" . LWN.net . 19 de julio de 2012 . Consultado el 15 de junio de 2014 .
- ^ "Documentación del kernel de Linux: Documentation / efi-stub.txt" . kernel.org . 1 de febrero de 2014 . Consultado el 15 de junio de 2014 .
- ^ "Preguntas frecuentes: límites de partición de la unidad" (PDF) . Foro UEFI . Consultado el 5 de diciembre de 2019 .
- ^ "Preguntas frecuentes: límites de partición de la unidad" (PDF) . Foro UEFI . Consultado el 9 de junio de 2010 .
- ^ a b c d Smith, Roderick W. (3 de julio de 2012). "Aproveche al máximo las unidades de disco grandes con GPT y Linux" . IBM . Consultado el 25 de septiembre de 2013 .
- ^ "bloque / particiones / Kconfig (3.11.1)" . CONFIG_EFI_PARTITION (línea # 247) . kernel.org . Consultado el 25 de septiembre de 2013 .
- ^ a b c "GRUB" . Sistemas BIOS . Arch Linux . Consultado el 25 de septiembre de 2013 .[ fuente no confiable? ]
- ^ "GRUB y el proceso de arranque en sistemas x86 basados en UEFI" . redhat.com . Consultado el 14 de noviembre de 2013 .
- ^ "UEFI Arrancando Redhat Enterprise Linux 6 de 64 bits" . fpmurphy.com . Septiembre de 2010 . Consultado el 14 de noviembre de 2013 .
- ^ a b "Cargadores de arranque UEFI" . archlinux.org . Consultado el 25 de septiembre de 2013 .[ fuente no confiable? ]
- ^ "Interfaz de firmware extensible unificada: partición del sistema EFI" . archlinux.org . Consultado el 25 de septiembre de 2013 .[ fuente no confiable? ]
- ^ a b c d "Arranque del sistema UEFI desde la tabla de particiones MBR y el legado de GRUB" . Foros de Arch Linux. Junio de 2012 . Consultado el 6 de octubre de 2013 .
- ^ "¿Qué es efifb? - La documentación del kernel de Linux" . www.kernel.org . Consultado el 24 de noviembre de 2020 .
- ^ a b "Error de Samsung UEFI: portátil bloqueado de Windows" . El H . Consultado el 27 de febrero de 2013 .
- ^ Especificación UEFI, sección 7.3
- ^ "Controladores EFI de software libre" .
- ^ Batard, Pete (13 de marzo de 2020). "pbatard / uefi-ntfs" . GitHub .
- ^ "Preguntas frecuentes sobre controladores de gráficos integrados Intel: BIOS y firmware" . Intel . Consultado el 19 de mayo de 2014 .
- ^ "Especificación UEFI versión 2.5, sección 12.3 Formato del sistema de archivos" (PDF) . uefi.org . Abril de 2015. págs. 536, 537 . Consultado el 29 de mayo de 2015 .
El sistema de archivos admitido por la Interfaz de firmware extensible se basa en el sistema de archivos FAT. EFI define una versión específica de FAT que está documentada y comprobable explícitamente. La conformidad con la especificación EFI y sus documentos de referencia asociados es la única definición de FAT que debe implementarse para admitir EFI. Para diferenciar el sistema de archivos EFI de FAT puro, se ha definido un nuevo tipo de sistema de archivos de partición.
- ^ "Nota técnica TN2166: Secretos del GPT" . developer.apple.com . 6 de noviembre de 2006 . Consultado el 6 de mayo de 2015 .
- ^ "UEFI - OSDev Wiki" . wiki.osdev.org . Consultado el 26 de septiembre de 2020 .
- ^ "EFISTUB - ArchWiki" . wiki.archlinux.org . Consultado el 27 de octubre de 2020 .
- ^ a b "Marco de innovación de la plataforma Intel® para EFI" (PDF) . Especificación del módulo de soporte de compatibilidad (revisión 0.97) . Intel. 4 de septiembre de 2007 . Consultado el 6 de octubre de 2013 .
- ^ "El BIOS de la PC desaparecerá en 2020, ya que los planes de Intel se trasladarán a UEFI puro" . Ars Technica . Consultado el 29 de mayo de 2018 .
- ^ "Guía de instalación de Red Hat Enterprise Linux 6" . 30.2.2. Configuración de arranque PXE para EFI . Red Hat . Consultado el 9 de octubre de 2013 .
- ^ El-Haj-Mahmoud, Samer (julio de 2013). "Avances en redes previas al SO en UEFI 2.4" (PDF) . Hewlett-Packard . Consultado el 29 de mayo de 2019 .
- ^ "Convergencia de redes y almacenamiento mediante FCoE e iSCSI" (PDF) . IBM . Julio de 2012 . Consultado el 9 de octubre de 2013 .
- ^ "Nuevo soporte de arranque HTTP UEFI en UEFI 2.5" . firmwaresecurity.com . 9 de mayo de 2015 . Consultado el 13 de agosto de 2015 .
- ^ "Descripción general de arranque seguro" . Microsoft . Consultado el 18 de febrero de 2016 .
- ^ Edge, Jake. "UEFI y" arranque seguro " " . LWN.net . Consultado el 9 de septiembre de 2012 .
- ^ a b "Arranque seguro de Windows 8: la controversia continúa" . PC World . Consultado el 9 de septiembre de 2012 .
- ^ "Arranque seguro para ESXi 6.5 - Garantía de hipervisor" . Blog de VMware vSphere . 4 de mayo de 2017 . Consultado el 18 de agosto de 2017 .
- ^ HowTos / UEFI - Wiki de CentOS
- ^ Larabel, Michael (30 de abril de 2018). "Debian progresando en el soporte UEFI SecureBoot en 2018" . Phoronix . Phoronix Media . Consultado el 23 de mayo de 2018 .
- ^ Garrett, Matthew (27 de diciembre de 2012). "Soporte de distribución de arranque seguro" . Mjg59.dreamwidth.org . Consultado el 20 de marzo de 2014 .
- ^ "SecureBoot" . Wiki de FreeBSD . FreeBSD . Consultado el 16 de junio de 2015 .
- ^ a b "Interfaz de firmware extensible unificada" . UEFI Shell . Arch Linux . Consultado el 25 de septiembre de 2013 .[ fuente no confiable? ]
- ^ a b "EFI Shells y Scripting" . Intel . Consultado el 25 de septiembre de 2013 .
- ^ a b "UEFI Shell Specification Version 2.0, Errata A" (PDF) . Unified EFI, Inc. Mayo de 2012 . Consultado el 25 de septiembre de 2013 .
- ^ "EDK2: ShellPkg" . GitHub . Consultado el 18 de marzo de 2020 .
- ^ "tianocore / edk2: lanzamientos" . GitHub .
- ^ "Archivo de correo electrónico: edk2-devel" . [edk2] Inclusión de UEFI shell en la distribución iso de Linux . SourceForge . 2012 . Consultado el 25 de septiembre de 2013 .
- ^ "TianoCore en SourceForge" . Preguntas frecuentes de Shell . Intel . Consultado el 25 de septiembre de 2013 .
- ^ a b "Interfaz de firmware extensible unificada" . Lanzamiento de UEFI Shell . Arch Linux . Consultado el 25 de septiembre de 2013 .[ fuente no confiable? ]
- ^ "Instrucciones básicas para el uso de EFI para la configuración del servidor en las placas de servidor Intel® y los sistemas de servidor Intel®" (PDF) . Intel . 2008 . Consultado el 25 de septiembre de 2013 .
- ^ "Interfaz de firmware extensible unificada" . bcfg . Arch Linux . Consultado el 25 de septiembre de 2013 .[ fuente no confiable? ]
- ^ "Ejemplos de GRUB EFI" . Asus . Arch Linux . Consultado el 25 de septiembre de 2013 .[ fuente no confiable? ]
- ^ https://edk2-docs.gitbook.io/understanding-the-uefi-secure-boot-chain/secure_boot_chain_in_uefi/signed-capsule-update
- ^ barrygolden. "Plataforma de actualización de firmware UEFI de Windows - Controladores de Windows" . docs.microsoft.com . Consultado el 25 de septiembre de 2020 .
- ^ "Comenzando | Tecnología Microchip" . www.microchip.com . Consultado el 24 de diciembre de 2020 .
- ^ A partir de Intel Core de décima generación, Intel ya no proporciona BIOS de video heredadopara la iGPU ( tecnología de gráficos Intel ). El arranque heredado requiere ROM opcional de video heredado.
- ^ https://github.com/tianocore/tianocore.github.io/wiki/PI-Boot-Flow
- ^ https://ami.com/en/?Aptio_V_Status_Codes.pdf
- ^ "La interfaz de firmware extensible unificada (UEFI) - La documentación del kernel de Linux" . www.kernel.org . Consultado el 7 de noviembre de 2020 .
- ^ "TianoCore - coreboot" . Consultado el 25 de mayo de 2012 .
- ^ "SecureCore Tiano ™" . Phoenix Technologies. Archivado desde el original el 6 de septiembre de 2010 . Consultado el 14 de septiembre de 2010 .
- ^ "Aptio®: La solución completa de productos UEFI" (PDF) . American Megatrends, Inc . Consultado el 2 de mayo de 2018 .
- ^ "¿Porque nosotros?" . Insyde Software Corp . Consultado el 2 de mayo de 2018 .
- ^ "Microsoft anuncia el" Proyecto Mu "para la alternativa UEFI de código abierto a TianoCore" . Phoronix . Consultado el 20 de diciembre de 2018 .
- ^ "Casamiento de U-Boot UEFI y GRUB" (PDF) . Consultado el 12 de septiembre de 2018 .
- ^ "UEFI sobre U-Boot" (PDF) . Consultado el 12 de septiembre de 2018 .
- ^ "Instalación de OpenBSD 6.3 en Raspberry 3" . Consultado el 12 de septiembre de 2018 .
- ^ "Arranque iSCSI con U-Boot e iPXE" . Consultado el 18 de mayo de 2020 .
- ^ Computadora Apple. " Pautas de programación binaria universal, segunda edición: Interfaz de firmware extensible (EFI) Archivado el 24 de julio de 2008 en Wayback Machine "
- ^ Transición de Apple de Open Firmware a Extensible Firmware Interface , mactech, 2007.
- ^ a b "Marco de innovación de plataforma Intel® para UEFI Descripción general" . Intel . Consultado el 14 de septiembre de 2010 .
- ^ Evaluación de UEFI mediante plataformas y soluciones comercialmente disponibles (PDF) , UEFI, mayo de 2011, archivado desde el original (PDF) el 22 de marzo de 2012
- ^ Vista previa de la placa base Asus P67 .
- ^ "Requisitos de certificación de hardware de Windows para sistemas cliente y servidor" . Microsoft. Enero de 2013.
System.Fundamentals.Firmware.CS.UEFISecureBoot.ConnectedStandby ... Las plataformas deben ser UEFI de clase tres (consulte UEFI Industry Group, Evaluación de UEFI utilizando plataformas y soluciones comercialmente disponibles, versión 0.3, para obtener una definición) sin módulo de soporte de compatibilidad instalado o instalable. La emulación de BIOS y el arranque de PC / AT heredado deben estar deshabilitados.
- ^ "Microsoft: todo lo que necesita saber sobre Windows 8 en ARM" . Revista de PC . Consultado el 30 de septiembre de 2013 .
- ^ Richardson, Brian (30 de octubre de 2017). " Barreras de " última milla "para eliminar BIOS heredado" (PDF) . Consultado el 22 de noviembre de 2017 .
- ^ Anuncio de la versión 3.5pre1 por parte del mantenedor Brett Johnson realizado el 27 de febrero de 2004.
- ^ Versión EFI de Grub , Debian GNU / Linux , consultado el 1 de mayo de 2008
- ^ a b c "Ubuntu utilizará GRUB 2 para su implementación de arranque seguro" . El H Online . Consultado el 28 de octubre de 2012 .
- ^ OpenVMS Release History , HP, archivado desde el original el 5 de enero de 2009 , consultado el 16 de septiembre de 2008
- ^ "Estado del puerto a x86-64" (PDF) . vmssoftware.com . 6 de octubre de 2017 . Consultado el 9 de septiembre de 2020 .
- ^ rEFIt - Windows Vista y EFI , SourceForge
- ^ "Interfaz de firmware extensible", Windows Server TechCenter , Microsoft, archivado desde el original el 30 de agosto de 2006
- ^ Directrices de implementación de la interfaz de firmware extensible unificada (UEFI)
- ^ https://www.linux-kvm.org/downloads/lersek/ovmf-whitepaper-c770f8c.txt
- ^ Arranque en modo UEFI o modo BIOS heredado
- ^ "Compatibilidad con la interfaz de firmware ampliada unificada en Windows Vista" . Microsoft. 26 de octubre de 2006 . Consultado el 12 de junio de 2010 .
Microsoft determinó que los proveedores no tendrían ningún interés en producir firmware UEFI nativo de 32 bits debido al estado actual de los costos de la plataforma y la computación convencional de 64 bits. Por lo tanto, Microsoft originalmente no envió soporte para implementaciones UEFI de 32 bits.
- ^ Controlador de pantalla básico de Microsoft
- ^ "Microsoft promociona tiempos de arranque increíbles de Windows 8" . Consultado el 9 de septiembre de 2011 .
- ^ Brodkin, Jon (21 de septiembre de 2011). "El arranque seguro de Windows 8 podría complicar las instalaciones de Linux" . Ars Technica . Consultado el 23 de septiembre de 2011 .
- ^ "Encuentre las especificaciones, características y requisitos de la computadora de Windows 11" . Microsoft .
- ^ "FreeBSD para obtener soporte UEFI" . El H . Consultado el 7 de marzo de 2013 .
- ^ "UEFI - FreeBSD Wiki" . FreeBSD.org . Consultado el 19 de junio de 2014 .
- ^ "uefi (8)" . www.freebsd.org . Consultado el 11 de enero de 2021 .
- ^ "Oracle Solaris 11.1 - Novedades" (PDF) . oracle.com . Consultado el 4 de noviembre de 2013 .
- ^ "OpenBSD 5.9" . www.openbsd.org . Consultado el 11 de septiembre de 2016 .
- ^ "OpenBSD 6.0" . www.openbsd.org . Consultado el 11 de septiembre de 2016 .
- ^ Open Virtual Machine Firmware , SourceForge, archivado desde el original el 6 de octubre de 2011
- ^ "Firmware de VMWare Workstation EFI | Comunidades de VMware" . Communities.vmware.com . Consultado el 28 de febrero de 2014 .
- ^ "Uso de firmware EFI / UEFI en una máquina virtual VMware | Comunidades VMware" . Communities.vmware.com . Consultado el 18 de enero de 2016 .
- ^ "Anuncio de VMware Workstation 14 - VMware Workstation Zealot" . VMware Workstation Zealot . 22 de agosto de 2017 . Consultado el 2 de agosto de 2018 .
- ^ "Novedades de vSphere 5.0" . Vmware.com . Consultado el 28 de febrero de 2014 .
- ^ "Notas de la versión de VMware vSphere 6.5" . pubs.vmware.com . Consultado el 13 de enero de 2017 .
- ^ 3.1 Registro de cambios , VirtualBox, archivado desde el original el 28 de septiembre de 2010
- ^ Entrada 7702 , VirtualBox
- ^ "Declaración del ingeniero de software sr. En Oracle", Forum , VirtualBox
- ^ "Probando Secureboot con KVM" . FedoraProject . Consultado el 28 de febrero de 2014 .
- ^ "Novedades de Hyper-V para Windows Server 2012 R2" . MicrosoftTechNet . Consultado el 24 de junio de 2013 .
- ^ "VM blindadas" . Consultado el 16 de febrero de 2019 .
- ^ "TianoCore en SourceForge: Kit de desarrollo de aplicaciones EDK2 (EADK)" . Intel . Consultado el 25 de septiembre de 2013 .
- ^ "Tianocore: UDK" . GitHub .
- ^ "Entrevista: Ronald G Minnich" . Fosdem. 6 de febrero de 2007 . Consultado el 14 de septiembre de 2010 .
- ^ Doctorow, Cory (27 de diciembre de 2011), The Coming War on General Purpose Computation , consultado el 25 de septiembre de 2013
- ^ "coreboot (también conocido como LinuxBIOS): el firmware x86 gratuito / de código abierto" . YouTube. 31 de octubre de 2008 . Consultado el 14 de septiembre de 2010 .
- ^ "Bienvenido" , TianoCore , SourceForge, archivado desde el original el 23 de abril de 2012
- ^ a b "¿Microsoft está bloqueando el arranque de Linux en hardware ARM?" . Computerworld Reino Unido . Consultado el 6 de marzo de 2012 .
- ^ "Windows 10 para hacer realidad el bloqueo de Secure Boot alt-OS" . Ars Technica . Consultado el 21 de marzo de 2015 .
- ^ "Recomendaciones de Free Software Foundation para distribuciones de sistemas operativos libres considerando Secure Boot - Free Software Foundation - trabajando juntos para el software libre" . Fundación de Software Libre . Consultado el 18 de marzo de 2020 .
- ^ "Shimming su camino a Linux en PC con Windows 8" . ZDNet . Consultado el 26 de febrero de 2013 .
- ^ a b "Ubuntu detalla sus planes de arranque seguro UEFI" . Noticias semanales de Linux . Consultado el 11 de septiembre de 2012 .
- ^ a b "No hay soporte de certificado de Microsoft en el kernel de Linux, dice Torvalds" . El H . Consultado el 26 de febrero de 2013 .
- ^ "Linus Torvalds: no cambiaré Linux a" Microsoft de garganta profunda " " . Ars Technica . Consultado el 26 de febrero de 2013 .
- ^ "Exclusivo: el grupo de software abierto presenta una denuncia contra Microsoft a la UE" . Reuters. 26 de marzo de 2013 . Consultado el 26 de marzo de 2013 .
- ^ "Exploits de demostración de investigadores que evitan el arranque seguro de Windows 8" . IT World . Consultado el 5 de agosto de 2013 .
- ^ MENDELSOHN, Tom (12 de agosto de 2016). "Error de arranque seguro: Microsoft filtra la clave de la puerta trasera, el firmware se abrió de par en par [Actualizado]" . Ars Technica . Consultado el 12 de agosto de 2016 .
- ^ "HowTos / UEFI - CentOS Wiki" . wiki.centos.org . Consultado el 10 de noviembre de 2020 .
- ^ "SecureBoot - Debian Wiki" . wiki.debian.org . Consultado el 10 de noviembre de 2020 .
- ^ "SUSE Linux Enterprise Server 15 SP1: Capítulo 13. UEFI (Interfaz de firmware extensible unificada) (Guía de administración)" . documentation.suse.com . Consultado el 10 de noviembre de 2020 .
- ^ a b "Linux en PC con Windows 8: algunos avances, pero sigue siendo una molestia" . ZDNet . Consultado el 26 de febrero de 2013 .
- ^ "Lenovo UEFI solo quiere arrancar Windows, RHEL" . Phoronix . Consultado el 26 de febrero de 2013 .
- ^ "Linux absuelto en muertes de UEFI portátiles Samsung" . Bit-tech . Consultado el 26 de febrero de 2013 .
- ^ "Arrancar Linux usando UEFI puede bloquear las computadoras portátiles Samsung" . El H . Consultado el 26 de febrero de 2013 .
Otras lecturas
- Zimmer, Vincent; Rothman, Michael; Hale, Robert (10 de mayo de 2007). "Arquitectura EFI" . Diario del Dr. Dobb . UBM . Consultado el 12 de octubre de 2012 .
- de Boyne Pollard, Jonathan (11 de julio de 2011). "El proceso de arranque de EFI" . Respuestas dadas con frecuencia . Consultado el 12 de octubre de 2012 .
- de Boyne Pollard, Jonathan (8 de diciembre de 2011). "El proceso de arranque de Windows NT 6" . Respuestas dadas con frecuencia . Consultado el 12 de octubre de 2012 .
- Smith, Roderick W. (2011). "Una transformación de BIOS a UEFI" . Página web de Roderick W. Smith . Consultado el 12 de octubre de 2012 .
- Kothari, Rajiv (21 de septiembre de 2011). "UEFI: lo importante que es realmente" . Secretos de hardware . Archivado desde el original el 25 de octubre de 2012 . Consultado el 12 de octubre de 2012 .
- Fisher, Doug (2011). "UEFI hoy: Bootstrapping the Continuum" . Revista de tecnología de Intel . Intel. 15 (1). ISBN 9781934053430. Consultado el 24 de septiembre de 2013 .
enlaces externos
- Página web oficial
- Especificaciones UEFI
- Iniciativa EFI Framework de código abierto patrocinada por Intel
- Portal Intel EFI / UEFI
- Compatibilidad y requisitos de Microsoft UEFI para sistemas operativos Windows
- Cómo funciona la función de apagado híbrido / arranque rápido de Windows 8
- Asegurar el proceso de arranque de Windows 10
- LoJax: primer rootkit UEFI encontrado en la naturaleza, cortesía del grupo Sednit