Permitindo que o grub inicialize automaticamente no kernel
-
03-07-2019 - |
Pergunta
Estou desenvolvendo um kernel para um sistema operacional. Para executá -lo, decidi usar o Grub. Atualmente, tenho um script anexado ao Grub's stage1
, stage2
, um arquivo PAD e o próprio kernel juntos, o que o torna inicializável. O único problema é que, quando eu o executo, você deve informar o Grub onde está o kernel e o tamanho manualmente e depois inicializá -lo, assim:
kernel 200+KERNELSIZE boot
KERNELSIZE
é o tamanho do kernel em blocos. Tudo bem e tudo bem para começar, mas é possível obter esses valores no binário e fazer com que o grub inicialize o kernel automaticamente? Alguma sugestão sobre como conseguir isso?
Solução
Eu imagino que você poderia simplesmente criar seu próprio arquivo menu.lst conf, carregar isso no Shell Grub com "configfile /path/to/menu.lst" e depois fazer "setup (hd0)", substituindo os valores conforme necessário. Estou apenas adivinhando ... sem dizer quais são as diferenças na sua configuração personalizada.
Outras dicas
http://www.gnu.org/software/grub/manual/grub.html#embedded-data fornece algumas informações gerais sobre o armazenamento da lista de blocos no Grub. Mais importante, ele menciona que as listas de blocos são armazenadas em locais bem definidos no estágio2.
Você provavelmente desejará olhar para o código -fonte Grub para descobrir o local exato.