qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Qemu-devel] i386: don't require elf64 for multiboot kernel


From: Gonzo FWS
Subject: [Qemu-devel] i386: don't require elf64 for multiboot kernel
Date: Tue, 4 Dec 2018 16:55:34 +0000

Right now IncludeOS on x86_64 must use a chainloader for multiboot support. The 
chainloader is an ELF32 kernel that loads the real ELF64 kernel and jumps to 
it. As long as the ELF has the .multiboot section and conforms to the spec, 
meaning _start is be a 32-bit entry, it should be fine.

By removing the extra check in multiboot.c, we can also boot ELF64 files. As 
can be seen here:
https://cloud.fwsnet.net/index.php/s/XrkBkC8zy7MLa9p

Signed-off-by: Alf-André Walla <address@hidden>
---
 hw/i386/multiboot.c | 5 -----
 1 file changed, 5 deletions(-)

diff --git a/hw/i386/multiboot.c b/hw/i386/multiboot.c
index 1a4344f5fc..d07ebf3361 100644
--- a/hw/i386/multiboot.c
+++ b/hw/i386/multiboot.c
@@ -194,11 +194,6 @@ int load_multiboot(FWCfgState *fw_cfg,
         int kernel_size;
         fclose(f);

-        if (((struct elf64_hdr*)header)->e_machine == EM_X86_64) {
-            error_report("Cannot load x86-64 image, give a 32bit one.");
-            exit(1);
-        }
-
         kernel_size = load_elf(kernel_filename, NULL, NULL, &elf_entry,
                                &elf_low, &elf_high, 0, I386_ELF_MACHINE,
                                0, 0);
--
2.17.1



reply via email to

[Prev in Thread] Current Thread [Next in Thread]