Grub 2 no detecta el encabezado de arranque múltiple en el kernel

Estoy teniendo un problema con Grub 2 (y QEMU-kernel) no detecto el encabezado Multiboot v1 en mi kernel. Tengo el encabezado en una sección separada antes.text.

linker.ld:

SECTIONS
{
    . = 1M;

    .multiboot ALIGN(4K) :
    {
        *(.multiboot)
    }

    .text ALIGN(4K) :
    {
        *(.text)
    }

    [snip]

boot.s (GNU como sintaxis):

.set MAGIC, 0x1badb002
.set FLAGS, (1<<0 | 1<<1) # align, provide mem map
.set CHECKSUM, -(MAGIC + FLAGS)

.section .multiboot
    .long MAGIC
    .long FLAGS
    .long CHECKSUM

.section .text
    [snip]

He verificado que la sección del encabezado se está agregando según lo especificado con el número mágico:

kernel.bin:     file format elf32-i386

Contents of section .multiboot:
 101000 02b0ad1b 03000000 fb4f52e4           .........OR.    
Contents of section .text:
 [snip]

Sin embargo, Grub 2 dice que el kernel no tiene un encabezado de arranque múltiple válido, y que usa QEMU-kernel causa causa

qemu: fatal: Trying to execute code outside RAM or ROM at 0x000a000

que parece ser una dirección en el rango mapeado de BIOS, no donde Multiboot debería estar.

He comparado con el código habitual en Bran's y OSDev (más un kernel anterior mío), pero parece que no puedo entender lo que estoy haciendo mal.

Respuestas a la pregunta(1)

Su respuesta a la pregunta