Я много раз читал, что Raspberry Pi не поддерживает Grub. Я не смог найти каких-либо подробностей о несовместимости. Я только нашел довольно тупые заявления вида "это не поддерживается".
Я хотел бы точно понять, в чем проблема и что нужно переписать, чтобы она заработала.
До сих пор я обнаружил, что загрузчик стадии 3 читает start.elf, который, в свою очередь, читает образ ядра. На мой взгляд, если бы grub работал, он бы заменил (полностью) start.elf. Я посмотрел на формат загрузчиков UEFI и обнаружил, что они используют исполняемый файл формата PE . Итак, моя первая гипотеза заключается в том, что несовместимость заключается в том, что grub компилируется как PE, а на этапе 3 читается только ELF .
Я пропустил еще одну серьезную несовместимость? Я пропустил некоторые другие важные задачи, start.elf
которые были бы потеряны, если бы они были заменены grub?
источник
grub
работает только для архитектур Intel.Ответы:
На самом деле, если вы хотите установить Ubuntu с универсальным ядром на Raspberry Pi, вы должны использовать grub2, как описано здесь .
Единственный недостаток совместимости заключается в том, что grub2 может установить флаг EFI в загрузочном разделе, а загрузчик RPi откажется загружаться с раздела с установленным флагом EFI. Флаг может быть очищен вручную любым редактором разделов, благодаря чему загрузчик RPi и grub2 правильно распознают раздел.
источник
Raspberry Pi отличается тем, что основной (встроенный в ПЗУ), вторичный (bootcode.bin) и третий загрузчик (start.elf) выполняются на его графическом процессоре , одна загружая другую. Набор инструкций не документирован должным образом и сам по себе start.elf совершенно секретен.
Что можно сделать (как продемонстрировали SuSE и Microsoft) - это заменить kernel.img по своему желанию - даже с пользовательской версией TianoCore (реализация UEFI с открытым исходным кодом) или U-Boot. Затем его можно использовать для запуска двоичного файла GRUB2 или BOOTMGR, совместимого с UEFI.
источник