Verstehe zwar gerade nicht genau, wieso er _start mit Unterstrich haben will, aber vielleicht kann mir das ja noch jemand erklären?
Implizites
-fleading-underscore, wie z.B. unter Windows?
1. Brauchst du überhaupt den a.out kludge in der Multiboot Header?
edit: Wenn du z.B. sowieso ELF als Dateiformat wählen willst, dann brauchst du den Teil der Multiboot Header überhaupt nicht.
2. Wie sieht dein Linkerscript aus? Da sollten dann schon die Symbole mboot, code, bss und end definiert sein. Ld wird nicht automatisch für die Sections ein Symbol erzeugen. Siehe z.B.
hier. Da werden dann die Symbole __kernel_start__, __ctors_start__, __ctors_end__ und __kernel_end__ von ld bereitgestellt.