domingo, 28 de noviembre de 2021

Firmware UEFI

ARRANQUE

Cuando se enciende el equipo, la UEFI inicializa el firmware y el hardware de bajo nivel (CPU, chipset y placa), para después cargar sus propios drivers de los dispositivos de forma paralela. Esto supone una gran ventaja en cuanto a velocidad frente a BIOS, que carga los drivers de forma secuencial. Cumplido esto, el gestor de arranque incorporado en la UEFI consulta la configuración para ejecutar el cargador del sistema operativo o el kernel.

Cada sistema operativo debe tener una entrada en la configuración de la UEFI en la que se especifique la ruta al cargador o kernel del SO.

Proceso de UEFI

GPT

El estándar GPT parte de la especificación de UEFI que pretende solucionar los problemas surgidos con la antigua tabla de particiones MBR.

Con él se cambia el modo de direccionamiento de CHS (Cylinder-Head-Sector en MBR) a LBA (Logical Block Addressing). Cada LBA suele tener un tamaño de 512 o 1024 bytes.

Cada partición y disco es representado de forma única mediante un GUID.

La estructura de GPT sigue usando MBR por cuestiones de compatibilidad. El MBR contiene una única entrada que comprende todo el disco y así se indica que éste usa GPT. Esto previene que sistemas no compatibles con GPT puedan sobrescribir la tabla de particiones.

En el primer bloque (LBA 0) se ubica el MBR con una entrada del tipo protective MBR.

En el segundo (LBA 1) se ubica la cabecera de GPT. La cabecera está compuesta por el número de bloques del disco, su identificador, el número de particiones que podrían crearse, su propia ubicación, la de la tabla de particiones primaria, la de la secundaria y un checksum de la cabecera y la tabla de particiones.

El tercero (LBA 2) comienza con la tabla de particiones. Cada entrada tiene un tamaño de 128 bytes y puede haber un máximo de 128 entradas. En cada una se especifica el GUID del tipo de partición, el GUID identificador de la partición, su primer y último bloque, atributos de la partición y el nombre que se almacena en Unicode.

En los últimos bloques del disco se almacena una copia de la estructura de la GPT.

Esquema del GUID

ESP

ESP es un tipo de partición que parte de la especificación UEFI y necesita estar formateada en FAT. Aquí se almacenan los cargadores para todos los sistemas operativos instalados en el sistema, drivers usados en el arranque y los módulos que puede ejecutar UEFI directamente.

Según la especificación, los cargadores del sistema operativo deben ubicarse en la partición ESP con la siguiente ruta:

/EFI/FABRICANTE/BOOTLOADER.EFI

En caso de que no se encuentre nada en esta ubicación, o el usuario lo haya indicado así, durante el proceso de arranque se buscará en cada dispositivo de almacenamiento con formato FAT32 en busca de un cargador de SO en:

/EFI/BOOT/BOOTARQUITECTURA.EFI

Algunas implementaciones de EFI no siguen el estándar y solamente ejecutan cargadores que pertenezcan a Windows. Además, éste también ubica su cargador en el disco principal en la ruta de los dispositivos extraíbles para forzar el arranque de Windows.