Não tenho certeza se esta pergunta deve ser feita aqui ou no estouro de pilha, mas estou escrevendo um aplicativo UEFI para inicializar um kernel personalizado. Posso testar o aplicativo UEFI no QEMU e usar o GDB para depurar e examinar a memória. Também posso fazer algumas coisas básicas, como localizar protocolos, imprimir e limpar a tela.
Minha pergunta é qual é o processo típico de inicialização de um kernel a partir de um aplicativo UEFI? O aplicativo UEFI precisa ler o sistema de arquivos para encontrar o kernel?
A maioria dos exemplos de aplicativos UEFI que encontro online são aplicativos hello world. Encontrei um exemplo simples que inicializa um kernel, mas não entendo como o aplicativo UEFI encontra o kernel. Eu também não entendo a cópia da memória.
https://devcodef1.com/news/1304006/custom-kernel-uefi-boot-with-qemu
Também encontrei alguns exemplos mais complexos, mas ainda estou um pouco confuso. https://gitlab.com/bztsrc/bootboot/-/blob/master/x86_64-efi/bootboot.c https://github.com/KunYi/Simple-UEFI-Bootloader/blob/master/Simple_UEFI_Bootloader/src/Loader .c#L2771