Eu já li várias vezes que o raspberry pi não suporta grub. Não consegui encontrar detalhes específicos sobre a incompatibilidade. Eu encontrei apenas declarações bastante contundentes do formulário "não é suportado".
Gostaria de entender exatamente qual é o problema e o que precisaria ser reescrito para fazê-lo funcionar.
O que eu descobri até agora é que o carregador de inicialização do estágio 3 lê start.elf, que por sua vez lê a imagem do kernel. Na minha opinião, se o grub funcionasse, substituiria (inteiramente) o start.elf. Examinei o formato dos gerenciadores de inicialização UEFI e descobri que eles usam um executável no formato PE . Portanto, minha primeira hipótese é que a incompatibilidade é (apenas) que o grub seja compilado como um PE e o estágio 3 leia apenas ELF .
Perdi alguma outra grande incompatibilidade? start.elf
Perdi alguma outra tarefa importante que seria perdida se fosse substituída pelo grub?
fonte
grub
funciona apenas para arquiteturas Intel.Respostas:
Na verdade, se você deseja instalar o Ubuntu com um kernel genérico em seu Raspberry Pi, você tem que usar grub2, como descrito aqui .
A única peculiaridade de compatibilidade é que o grub2 pode definir o sinalizador EFI na partição de inicialização e o carregador de inicialização RPi se recusará a inicializar uma partição com um conjunto de sinalizadores EFI. O sinalizador pode ser limpo manualmente por qualquer editor de partição, fazendo com que o RPi bootloader e o grub2 reconheçam a partição corretamente.
fonte
O Raspberry Pi é especial: o primário (ROM no chip), o secundário (bootcode.bin) e o terceiro gerenciador de inicialização (start.elf) são executados em sua GPU , um carregando em cadeia o outro. O conjunto de instruções não está devidamente documentado e inicia-se extremamente secreto.
O que pode ser feito (como o SuSE e a Microsoft demonstraram) é substituir o kernel.img à vontade - mesmo com uma versão personalizada do TianoCore (uma implementação UEFI de código aberto) ou com o U-Boot. Isso pode ser usado para iniciar um binário GRUB2 ou BOOTMGR compatível com UEFI.
fonte