I have a problem with Grub 2 (and QEMU- -kernel ) that does not detect the Multiboot v1 header in my kernel. I have a title in a separate section before .text .
linker.ld :
SECTIONS { . = 1M; .multiboot ALIGN(4K) : { *(.multiboot) } .text ALIGN(4K) : { *(.text) } [snip]
boot.s (GNU as syntax):
.set MAGIC, 0x1badb002 .set FLAGS, (1<<0 | 1<<1)
I checked that the header section is added as indicated by the magic number:
kernel.bin: file format elf32-i386 Contents of section .multiboot: 101000 02b0ad1b 03000000 fb4f52e4 .........OR. Contents of section .text: [snip]
However, Grub 2 says that the kernel does not have a valid Multiboot header, and using the QEMU -kernel calls:
qemu: fatal: Trying to execute code outside RAM or ROM at 0x000a000
which, apparently, is the address in the area with the BIOS displayed, and not where Multiboot should be.
I have compared with regular code in Bran and OSDev (plus the previous kernel), but I canβt understand what I'm doing wrong.
source share