Alguien me puede explicar el funcionamiento de UEFI

Se instalar un Linux en UEFI pero me gustaría saber cómo funciona todo internamente y porque la razones de porque tengo que crear un /boot/efi.

3 Me gusta

Es ilegal saber como funciona UEFI puesto que es un programa privativo.

5 Me gusta

UEFI es un estándar de industria, no es privativo. Su implementación es lo que lo hace privativo.

Es como el WiFi; el estándar es abierto, pero todos sabemos que sus implementaciones no lo son tanto.

4 Me gusta

Esta prohibidisimo hacer eso, no puedes ver el codigo fuente ya que no lo tienes y si lo intentas hacerle ingeneria inversa estarias haciendo algo ilegal, asi que no no puedes saber como funciona, lo unico que puedes usar son los servicios que te proporciona o los programas .efi

Por lo que tengo entendido UEFI es un estandar abierto, pero la mayoría de implementaciones son privativas, por no decir todas, la verdad estoy muy poco informado al respecto, me interesaría saber mas del tema.

Aunque bastante tarde, me he topado con esta entrada antigua y me he querido dar el tiempo de responder.

Ten en cuenta, primero, que sea BIOS o UEFI, hablamos del firmware de la placa base. Al dar energía eléctrica a una máquina, la placa base inicia el flujo de corriente, activa el chipset y la CPU. Entonces, el firmware se carga desde un chip ROM y éste continúa con el arranque de hardware: RAM, GPU, USB… Esto lo hace usando archivos .efi, que son como mini-drivers.

UEFI es más rápido que BIOS, debido a que el arranque del resto del hardware lo hace en paralelo, mientras que BIOS lo hace secuencialmente. Aquí radica la primera diferencia.

Después, en el caso de UEFI, se inicia una fase de seguridad, en la que se activa -si aplicara- Secure Boot (verifica firmas de los componentes hardware) y PKI (otra verificación de firmas).

Ahora el sistema de arranque escanea los discos duros (o sistemas bootables) en busca de particiones con las que arrancar el sistema operativo. En el caso de UEFI, busca particiones GPT y, específicamente, la EFI System Partition (ESP), una partición FAT32 marcada con el GUID especial C12A7328-F81F-11D2-BA4B-00A0C93EC93B. La estructura de directorios que espera ahora es \EFI\BOOT\, u otros directorios específicos como \EFI\UBUNTU o \EFI\FEDORA. Ojo, esto no es una estructura de directorios GNU/Linux, aún no lo hemos cargado, esta es la estructura FAT32, por eso usa las barras invertidas (\) y no distingue entre mayúsculas y minúsculas. En estos directorios, existen los archivos .efi a los que nos referimos antes, grubx64.efi, por ejemplo. Y es lo que carga.

Recuerdo que esta información ya está en el disco duro, en la partición FAT32 que hemos dejado para tal efecto. Ahora, desde el sistema operativo habrás creado /boot/efi. /boot es por estándar, es donde el sistema espera tener todo lo relacionado con el arranque. Dentro añadimos efi para indicar el árbol de directorios que usará UEFI. En este directorio, se crearán en tu instalación las entradas con el archivo .efi necesario.

Si quisieras verlo personalmente, te expongo un ejemplo, suponiendo la premisa de que tu partición /boot/efi está montada de /dev/sda1.

sudo mkdir -p /mnt/efi
sudo mount /dev/sda1 /mnt/efi
tree /mnt/efi

└── EFI
    └── BOOT
        └── BOOTX64.EFI          # el firmware lo ve como \EFI\BOOT\BOOTX64.EFI

Sé que es un poco lío, pero espero que se haya entendido bien.

3 Me gusta

Excelente aporte. Por lo que logro deducir, todo el sistema UEFI en ese caso seria libre, y lo privativo serian las firmas de seguridad y algunos archivos .efi, me equivoco?

Gracias, por fin pude entender que era eso, ya puedo escribir un bootloader para UEFI entendiendo un poco más.