Perché grub non è compatibile con raspberry pi?


10

Ho letto numerose volte che il raspberry pi non supporta grub. Non sono stato in grado di trovare dettagli sull'incompatibilità. Ho trovato solo dichiarazioni piuttosto schiette del modulo "non è supportato".

Vorrei capire esattamente qual è il problema e cosa sarebbe necessario riscrivere per farlo funzionare.

Quello che ho trovato finora è che il bootloader di fase 3 legge start.elf che a sua volta legge l'immagine del kernel. A mio avviso, se grub dovesse funzionare, sostituirebbe (interamente) start.elf. Ho esaminato il formato dei bootloader UEFI e ho scoperto che usano un eseguibile in formato PE . Quindi la mia prima ipotesi è che l'incompatibilità è (solo) che grub è compilato come PE e lo stadio 3 legge solo ELF .

Ho perso qualche altra importante incompatibilità? Ho perso qualche altro compito importante start.elfche andrebbe perso se fosse sostituito da grub?


Non ci credo al 100%, ma penso che il problema sia il processore ARM. AFAIK, grubfunziona solo per architetture Intel.
Seamus,

@Seamus Grazie per il pensiero. L'esistenza del pacchetto Debian grub-efi-arm suggerisce che grub può essere usato su ARM.
Philip Couling,


Non lo sapevo - grazie! Hai provato la versione ARM di GRUB?
Seamus,

4
Vorrei ricevere un commento dalle persone che hanno votato per chiudere questa domanda come "non specifica per Raspberry Pi". In che modo il problema di qualcosa che non è compatibile con un Raspberry Pi non è specifico per esso?
Dmitry Grigoryev il

Risposte:


5

In realtà, se si desidera installare Ubuntu con un kernel generico sul vostro Raspberry Pi, è necessario usare Grub2, come descritto qui .

L'unica stranezza di compatibilità è che grub2 può impostare il flag EFI sulla partizione di avvio e il bootloader RPi rifiuterà l'avvio da una partizione con un set di flag EFI. Il flag può essere cancellato manualmente da qualsiasi editor di partizioni, facendo riconoscere sia correttamente alla partizione sia il bootloader di RPi che grub2.


È un collegamento brillante che non avevo trovato. Mi chiedo se il controllo EFI possa essere disattivato.
Philip Couling,

@PhilipCouling Non credo, nella mia comprensione il controllo viene eseguito nella parte a codice chiuso della catena del bootloader.
Dmitry Grigoryev,

2

Il Raspberry Pi è speciale che il primario (ROM su chip), secondario (bootcode.bin) e terzo bootloader (start.elf) vengono eseguiti sulla sua GPU , caricando a catena l'altro. Il set di istruzioni non è adeguatamente documentato e start.elf stesso top-secret.

Ciò che si può fare (come hanno dimostrato SuSE e Microsoft) è sostituire kernel.img a piacimento , anche con una versione personalizzata di TianoCore (un'implementazione UEFI open source) o U-Boot. Questo può quindi essere utilizzato per avviare un binario GRUB2 o BOOTMGR compatibile UEFI.


Infatti. Il Raspberry Pi 3 attualmente ha un firmware UEFI maturo e sono in corso lavori per portare lo stesso per il Pi 4. Con questo, puoi facilmente installare distribuzioni Linux vanilla e usare GRUB come bootloader. Un esempio di installazione Debian vaniglia con GRUB può essere trovato qui per esempio.
Akeo,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.