¿Cómo encuentra el grub efi loader el grub.cfg y el directorio de arranque correctos?

9

Según tengo entendido, el uefi bios carga grub.efi desde la partición efi. Esto ahora carga un montón de módulos grub y el archivo de configuración desde el directorio / boot.

Pero, ¿cómo encuentra grub el dispositivo correcto en el que reside la partición de arranque? En el legado de grub, generalmente instalarías grub en una partición específica, usando

# grub-install --root-directory=/dev/sda

Por lo tanto, está bastante claro dónde buscará el directorio de arranque. ¿Cómo grub-efi descubre el dispositivo correcto?

usuario128063
fuente
Según tengo entendido, la configuración para la ubicación del núcleo está en la partición efi.
Joe
Claramente, la información tiene que estar en la partición efi, pero nunca la especifica en ningún momento (como solía hacerlo) al instalar grub.
user128063
en el archivo .efi que se genera cuando ejecuta grub-efi
Joe

Respuestas:

9

Después de usar ghex para examinar mi archivo "BOOTX64.EFI" en la partición efi, encontré esta línea.

search.fs_uuid a43d1f11-6ebe-477d-8be3-321a33bc37f9 root hd2,gpt4 
set prefix=($root)'/boot/grub'

Esto muestra que la información para la ubicación de grub (la partición de arranque) ha sido incorporada por grub2-install en el archivo BOOTX64.EFI generado para el sistema.

El cargador EFI ejecuta Grub2 y obtiene la interfaz grub para elegir el sistema operativo (kernel) en el que se iniciará o se cargará el kernel predeterminado.

Solo para expandir un poco: los archivos ".EFI" son aplicaciones similares que el subsistema UEFI puede ejecutar. Diseñado para usarse tanto para arrancar el sistema como para proporcionar un lugar conveniente para ejecutar programas de protección antivirus y de tipo de ejecución.

Pusieron el extensible en "Interfaz de firmware extensible unificada"

Joe
fuente
Sería interesante ver si podría parchear este archivo y cambiar su configuración y uuid y aún arrancar sin reinstalar Grub
Joe
Extraño, no puedo encontrarlo. Mi directorio ubuntu efi tiene un grub.cfg (en ascii) con el prefijo y la información raíz dentro de la identificación. Pero mi directorio archlinux efi simplemente tiene un grubx64.efi que no tiene signos de los comandos de raíz y prefijo que mencionó incluso cuando los leí en ghex.
user128063
No en ubuntu.efi busca boot.efi. La partición efi tiene una carpeta. Llamado efi y en él una carpeta llamada boot.
Joe
La carpeta efi tiene varios binarios efi, uno para Windows, otro para ubuntu, etc. El nombre del archivo efi es irrelevante. La razón por la que no pude encontrar la línea uuid es porque mi partición raíz es una partición lvm. ¡Almacena un lvmid en su lugar!
user128063
1
Oh, lo siento, leí mal tu publicación anterior. Stackexchange cortó su publicación anterior en la parte donde describió su sistema. Su descripción es de una sola imagen del cargador de arranque (grub) (BOOTX64.EFI) que arranca dos sistemas operativos por lo que puedo decir. Aquí hay algunas posibilidades más: 1) steamos también podría tener su propio gestor de arranque separado, para lo cual tendría su propio archivo EFI en la partición efi. 2) tiene un sistema de arranque híbrido EFI-legacy donde su gestor de arranque steamos se almacena en el MBR. Puedes ver que el efi bootorder se usa sudo efibootmgr -ven gentoo, pero estoy seguro de que lo sabes
usuario128063