我正在尝试制作一个最小的内核。我的目标是让这个尚不存在的内核兼容 multiboot2。所以我首先在 NASM-Assembly 中创建了一个最小的 multiboot2-header。
我正在使用 grub-file 来测试我的二进制文件是否兼容。
问题:当我将文件组装到 elf32 时,grub-file 很高兴。但是,当我使用 nasm 将我的头文件组装成原始二进制文件时,生成的文件不兼容。
这是为什么?在 multiboot2 规范中没有指定特定的可执行格式。
multiboot2header.asm:
section .multiboot
align 8,db 0
multibootheader_start:
dd 0xE85250D6
dd 0
dd (multibootheader_end - multibootheader_start)
dd -(0xE85250D6 + multibootheader_end - multibootheader_start)
multibootheader_end:
NASM 命令:
nasm -felf32 multiboot2header.asm -o multiboot2header.bin
nasm -fbin multiboot2header.asm -o multiboot2header.bin
grub 文件命令:
grub-file --is-x86-multiboot2 multiboot2header.bin