J'ai lu à plusieurs reprises que le raspberry pi ne prend pas en charge grub. Je n'ai pas pu trouver de détails sur l'incompatibilité. Je n'ai trouvé que des déclarations plutôt franches de la forme "ce n'est pas supporté".
Je voudrais comprendre exactement quel est le problème et ce qui devrait être réécrit pour le faire fonctionner.
Ce que j'ai trouvé jusqu'à présent, c'est que le chargeur de démarrage de l'étape 3 lit start.elf qui à son tour lit l'image du noyau. À mon avis, si grub devait fonctionner, il se remplacerait (entièrement) par lui-même. J'ai regardé le format des chargeurs de démarrage UEFI et découvert qu'ils utilisent un exécutable au format PE . Donc, ma première hypothèse est que l'incompatibilité est (seulement) que grub est compilé en tant que PE et l'étape 3 ne lit que ELF .
Ai-je manqué une autre incompatibilité majeure? Ai-je manqué une autre tâche majeure start.elf
qui serait perdue si elle était remplacée par grub?
la source
grub
ne fonctionne que pour les architectures Intel.Réponses:
En fait, si vous souhaitez installer Ubuntu avec un noyau générique sur votre Raspberry Pi, vous devez utiliser grub2, comme décrit ici .
La seule bizarrerie de compatibilité est que grub2 peut définir l'indicateur EFI sur la partition de démarrage, et le chargeur de démarrage RPi refusera de démarrer une partition avec un ensemble d'indicateurs EFI. L'indicateur peut être effacé manuellement par n'importe quel éditeur de partition, ce qui permet au chargeur de démarrage RPi et à grub2 de reconnaître correctement la partition.
la source
Le Raspberry Pi a la particularité que le primaire (ROM sur puce), le secondaire (bootcode.bin) et le troisième chargeur de démarrage (start.elf) sont exécutés sur son GPU , l'un chargeant l'autre. Le jeu d'instructions n'est pas correctement documenté et start.elf lui-même top secret.
Ce qui peut être fait (comme SuSE et Microsoft l'ont démontré) est de remplacer kernel.img à volonté - même avec une version personnalisée de TianoCore (une implémentation UEFI open-source) ou U-Boot. Cela peut ensuite être utilisé pour démarrer un binaire GRUB2 ou BOOTMGR compatible UEFI.
la source