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 <fwsgo...@hotmail.com> --- 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