Hablemos de UEFI: GPT y ESP

By on
Qué es la UEFI, GPT y ESP

UEFI

Debido a las limitaciones de BIOS, que se ejecuta usando 16 bits y solo puede acceder a un máximo de 1MB de memoria, se decidió crear una nueva especificación que la sustituyera.

Esta empezó siendo desarrollada por Intel con el nombre de EFI en 1998. En 2005, Intel pasó a contribuir en Unified EFI Forum y pasó a llamarse UEFI (Unified Extensible Firmware Interface). UEFI es una especificación para una interfaz software entre el sistema operativo y el firmware.

UEFI presenta las siguientes ventajas frente a BIOS:

  • Arranque y tiempo de reanudación más rápidos.
  • Uso de unidades cifradas gracias al arranque seguro.
  • Admite unidades de disco de un volumen superior a 2 TB.
  • Compatibilidad con BIOS.
  • Soporte completo para GTP.
  • Puede hacer uso de módulos para extender su funcionalidad.

Debido al gran avance tecnológico, ha sido necesario incorporar características adicionales a la especificación UEFI que resultaban difícil de implementar debido a las limitaciones de BIOS. UEFI se ejecuta en 64 bits y puede acceder a toda la RAM del sistema e incluso, acceder a su propia partición en el disco (ESP).

La UEFI proporciona drivers para los dispositivos del sistema independientes de la CPU. Esto permite que se puedan mostrar gráficos, habilitar el soporte de red, etcétera. Estos drivers pueden ser utilizados a través de la UEFI por el sistema operativo o, bien, cargar los suyos propios.

Además de cargar el sistema operativo, UEFI permite extender su funcionalidad ejecutando aplicaciones que pueden ser lanzadas tanto desde la shell de UEFI como desde el gestor de arranque u otra aplicación.

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.