Also, wenn ich das CD-Image in meinem qemu boote (qemu -cdrom os.iso), bekomm ich die Meldung
error: out of memory.
error: no loaded kernel.
Das liegt daran, dass wohl 128 MB RAM nicht ausreichen. Wenn ich den RAM auf 512 MB setze komm ich auch bis zu dem blinkenden Cursor.
Das Problem kann man auch sehen, wenn man den Kernel mal mit objdump -x V0.0.1 analysiert.
LOAD off 0x00000000000000c0 vaddr 0x0000000000100000 paddr 0x0000000000100000 align 2**5
filesz 0x0000000000001268 memsz 0x00000000060120a0 flags rwx
Am memsz sieht man, dass der Kernel ziemlich genau 100 MB Speicher braucht. Keine Ahnung warum GRUB dadraus so viel mehr macht, aber auf jeden Fall ist das ein Problem mit dem Kernel.
Weiter im Listing von objdump sieht man folgende Symbole an diesen hohen Adressen:
0000000006112040 g O .bss 0000000000000010 gdtr
...
0000000006112050 g O .bss 000000000000000c gdt_entry
0000000006112060 g O .bss 0000000000000040 cr3
Da die alle im .bss-Segment liegen, schließe ich erstmal, dass irgendwas an der Definition des .bss-Segments im Linkerskript nicht richtig ist. Wenn du allerdings immer noch das Linkerskript aus deinem zweiten Post verwendest, dann weiß ich auch nicht was da falsch sein soll.
Eigentlich wollte ich jetzt noch mehr erzählen, was alles nicht funktioniert, aber ich steig auch gerade nicht durch, was qemu mit dem Kernel macht. Ist schon zu spät für sowas. Deswegen nur so viel: Das Problem ist definitiv, dass du einen 64-Bit-Kernel erstellst. Der kann nicht ausgeführt werden. Du musst den Compiler und den Linker anweisen 32-Bit-Code zu erzeugen. Das geht, indem du GCC als Flags -m32 übergibst und LD -melf_i386. Für AS ist --32 nötig. Wenn du zum Linken oder Assemblieren GCC verwendest, sollte bei beiden aber auch -m32 gehen. Keine Ahnung wie genau man das Eclipse beibringt, aber wenn du das mit dem Linkerskript hingekriegt hast, sollte auch das gehen. Wenn nicht, solltest du Eclipse nicht mehr zum Kompilieren verwenden, sondern nur noch als Editor. In einer Shell make eintippen (oder Pfeil-nach-oben + Enter) ist auch nicht viel umständlicher.