Criando um kernel simples de inicialização múltipla carregado com grub2
Estou tentando seguir as instruções aqui para criar um kernel simples do sistema operacional:http://mikeos.sourceforge.net/write-your-own-os.html
Exceto que, em vez de inicializar a partir de um disquete, quero criar uma imagem ISO baseada em grub e inicializar um CD de inicialização múltipla no emulador. Adicionei o seguinte à fonte listada nessa página, para o cabeçalho de inicialização múltipla:
MBALIGN equ 1<<0 ; align loaded modules on page boundaries
MEMINFO equ 1<<1 ; provide memory map
FLAGS equ MBALIGN | MEMINFO ; this is the Multiboot 'flag' field
MAGIC equ 0x1BADB002 ; 'magic number' lets bootloader find the header
CHECKSUM equ -(MAGIC + FLAGS) ; checksum of above, to prove we are multiboot
section .multiboot
align 4
dd MAGIC
dd FLAGS
dd CHECKSUM
e estou fazendo o seguinte para criar a imagem:
nasm -felf32 -o init.bin init.s
cp init.bin target/boot/init.bin
grub2-mkrescue -o init.iso target/
Então eu corro o qemu para inicializá-lo:
qemu-system-x86_64 -cdrom ./init.iso
Depois de selecionar 'myos' no menu de inicialização, recebo o erro
error: invalid arch-dependent ELF magic
O que isso significa e como posso corrigi-lo? Tentei mexer com o formato elfo, mas apenas-felf32
parece funcionar ...