Ha pasado un tiempo desde que leí sobre UEFI y olvidé cómo se conectan algunas piezas. Olvidé cómo funcionan juntos UEFI y el gestor de arranque Grub. Diré lo que recuerdo, corríjanme si me equivoco:
- UEFI es independiente del sistema operativo y funciona con una única partición ESP sin importar la cantidad de discos.
- La partición ESP es donde los nuevos sistemas operativos se "suscribirán" al proceso UEFI agregando sus cargadores de arranque y referencias de partición en sus propias carpetas. Básicamente hay una carpeta en /boot/efi para cada sistema operativo instalado.
- Los cargadores de arranque se almacenan en NVRAM como una secuencia.
Ahora mismo estoy usando una máquina que tiene Ubuntu, Windows y Arch. Cada sistema operativo tiene su gestor de arranque, pero cada vez que mi máquina me muestra las "entradas de arranque", en realidad estoy mirando la configuración de Grub de Ubuntu. Es como si estuviera usando grub de Ubuntu para cargar cualquiera de los sistemas operativos en mi máquina.
Entonces la pregunta es: ¿Cómo sabe UEFI que Ubuntu es mi gestor de arranque "principal"? ¿Por qué no se me presentan los cargadores de arranque de Windows o Arch cada vez que inicio mi máquina?
Respuesta1
UEFI es el firmware del sistema y GRUB es un gestor de arranque creado para ajustarse al firmware.
GRUB con BIOS toma la forma de código de arranque dentro del MBR y antes de la primera partición. Con UEFI, GRUB puede tomar la forma de un único grubx64.efi
archivo dentro de la partición ESP. Los identificadores de arquitectura GRUB son para BIOS i386-pc
y UEFI en hardware x86 de 64 bits x86_64-efi
.
UEFI no sabe nada; normalmente sólo presentará un menú para los gestores de arranque que encuentre. No presentará el menú si encuentra solo un gestor de arranque y luego lo iniciará sin hacer preguntas.
En su caso, Grub es evidentemente el único gestor de arranque presente, por lo que se ejecuta inmediatamente al arrancar.
Hay dos métodos para que el firmware EFI elija Grub para el arranque:
Variables de arranque UEFI almacenadas en la NVRAM del sistema. En Linux, puedes editarlos con
efibootmgr
; en Windowsbcdedit /enum FIRMWARE
puede enumerarlos y luego editarlos.Cuando las variables de arranque UEFI no están definidas, el firmware UEFI busca cargadores de arranque dentro de la partición ESP. En su caso, es posible que busque
\EFI\boot\bootx64.efi
hardware de 64 bits.