Public bug reported: The multiboot header of a kernel image can contain the entry point and memory segment information. If it does not the kernel should have an ELF header that describes the memory segments and contains the entry point.
http://www.gnu.org/software/grub/manual/multiboot/multiboot.html#Header- layout I have such a multiboot ELF kernel that can be loaded fine with grub and grub2 but not with the qemu -kernel flag. According to the ELF spec the entry field in the ELF header should contain the virtual address of the multiboot entry code. Qemu sets up the memory regions using the paddr fields from the ELF sections and then tries to start the kernel using the virtual entry address. This will fail with >> qemu: fatal: Trying to execute code outside RAM or ROM I wrote a simple kernel that can be used to reproduce this bug. Get this archive http://os.inf.tu-dresden.de/~hschild/asmkernel.tar.gz It contains the simple kernel, its source, plus grub and grub2 binaries to boot the kernel in qemu. The HOWTO file contains the command lines you should be using to rebuild the kernel and boot it an bare qemu or with one of the two bootloaders. Find a patch that will fix this issue here: http://os.inf.tu-dresden.de/~hschild/qemu-fix-elf-entry.patch ** Affects: qemu Importance: Undecided Status: New -- You received this bug notification because you are a member of qemu- devel-ml, which is subscribed to QEMU. https://bugs.launchpad.net/bugs/1044727 Title: -kernel does not work for multiboot ELF kernels Status in QEMU: New Bug description: The multiboot header of a kernel image can contain the entry point and memory segment information. If it does not the kernel should have an ELF header that describes the memory segments and contains the entry point. http://www.gnu.org/software/grub/manual/multiboot/multiboot.html #Header-layout I have such a multiboot ELF kernel that can be loaded fine with grub and grub2 but not with the qemu -kernel flag. According to the ELF spec the entry field in the ELF header should contain the virtual address of the multiboot entry code. Qemu sets up the memory regions using the paddr fields from the ELF sections and then tries to start the kernel using the virtual entry address. This will fail with >> qemu: fatal: Trying to execute code outside RAM or ROM I wrote a simple kernel that can be used to reproduce this bug. Get this archive http://os.inf.tu-dresden.de/~hschild/asmkernel.tar.gz It contains the simple kernel, its source, plus grub and grub2 binaries to boot the kernel in qemu. The HOWTO file contains the command lines you should be using to rebuild the kernel and boot it an bare qemu or with one of the two bootloaders. Find a patch that will fix this issue here: http://os.inf.tu-dresden.de/~hschild/qemu-fix-elf-entry.patch To manage notifications about this bug go to: https://bugs.launchpad.net/qemu/+bug/1044727/+subscriptions