[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
- [Qemu-devel] i386: don't require elf64 for multiboot kernel,
Gonzo FWS <=