¿Por qué es grub incompatible con la frambuesa pi?

10

Leí muchas veces que la frambuesa pi no es compatible con grub. No he podido encontrar ningún detalle sobre la incompatibilidad. Solo he encontrado declaraciones bastante contundentes de la forma "no es compatible".

Me gustaría entender exactamente cuál es el problema y qué se debería volver a escribir para que funcione.

Lo que he encontrado hasta ahora es que el gestor de arranque de la etapa 3 lee start.elf, que a su vez lee la imagen del kernel. En mi opinión, si grub funcionara, reemplazaría (completamente) start.elf. Miré el formato de los cargadores de arranque UEFI y descubrí que usan un ejecutable en formato PE . Entonces, mi primera hipótesis es que la incompatibilidad es (solo) que grub se compila como PE y la etapa 3 solo lee ELF .

¿Me he perdido alguna otra gran incompatibilidad? ¿Me he perdido alguna otra tarea importante start.elfque se perdería si fuera reemplazada por grub?

Philip Couling
fuente
No estoy al 100% en esto, pero creo que el problema es el procesador ARM. AFAIK, grubsolo funciona para arquitecturas Intel.
Seamus
@Seamus Gracias por el pensamiento. La existencia del paquete de Debian grub-efi-arm sugiere que grub puede usarse en ARM.
Philip Couling
Consulte raspberrypi.org/documentation/configuration/boot_folder.md re funcionalidad de start.elf.
Dirk
No lo sabía, ¡gracias! ¿Has probado la versión ARM de GRUB?
Seamus
44
Me gustaría recibir un comentario de las personas que votaron para cerrar esta pregunta como "no específica de Raspberry Pi". ¿Cómo es que un problema de que algo no sea compatible con una Raspberry Pi no es específico para él?
Dmitry Grigoryev

Respuestas:

5

En realidad, si desea instalar Ubuntu con un núcleo genérico en su Raspberry Pi, debe usar grub2, como se describe aquí .

La única peculiaridad de compatibilidad es que grub2 puede establecer el indicador EFI en la partición de inicio, y el gestor de arranque RPi se negará a iniciar una partición con un conjunto de indicadores EFI. Cualquier editor de partición puede borrar la marca manualmente, haciendo que tanto el cargador de arranque RPi como grub2 reconozcan la partición correctamente.

Dmitry Grigoryev
fuente
Ese es un enlace brillante que no había encontrado. Me pregunto si el cheque EFI se puede desactivar.
Philip Couling
@PhilipCouling No lo creo, en mi opinión, la verificación se realiza en la parte de código cerrado de la cadena del cargador de arranque.
Dmitry Grigoryev
2

El Raspberry Pi es especial porque el primario (ROM en el chip), el secundario (bootcode.bin) y el tercer gestor de arranque (start.elf) se ejecutan en su GPU , uno carga en cadena al otro. El conjunto de instrucciones no está debidamente documentado y se inicia a sí mismo en alto secreto.

Lo que se puede hacer (como han demostrado SuSE y Microsoft) es reemplazar kernel.img a voluntad , incluso con una versión personalizada de TianoCore (una implementación UEFI de código abierto) o U-Boot. Esto se puede usar para iniciar un binario GRUB2 o BOOTMGR compatible con UEFI.

batido de escamas
fuente
En efecto. El Raspberry Pi 3 en realidad tiene un firmware UEFI maduro ahora, y se está trabajando para lograr lo mismo para el Pi 4. Con esto, puede instalar fácilmente distribuciones Linux de vainilla y usar GRUB como su gestor de arranque. Un ejemplo de instalación de Debian de vainilla con GRUB se puede encontrar aquí, por ejemplo.
Akeo