[ipxe-devel] Build ipxe.efi with IMAGE_BZIMAGE fail

Ковалёв Сергей SKovalev at ptsecurity.com
Thu Mar 23 14:22:25 UTC 2017


Hello.

I have tried to boot linux kernel by providing bzImage from custom build to iPXE. But it failes with error "Could not select: Exec format error (http://ipxe.org/2e008081)". In iPXE header I could see line "Features: DNS HTTP iSCSI TFTP SRP AoE EFI Menu".

So I have tried to enable bzImage support in iPXE. But faced with error:
ar: creating bin-x86_64-efi/blib.a
  [VERSION] bin-x86_64-efi/version.ipxe.efi.o
  [LD] bin-x86_64-efi/ipxe.efi.tmp
bin-x86_64-efi/blib.a(librm.o): In function `pm_esp':
(.data.pm_esp+0x0): relocation truncated to fit: R_X86_64_32 against symbol `_estack' defined in .stack section in bin-x86_64-efi/blib.a(stack.o)
bin-x86_64-efi/blib.a(librm.o): In function `real_to_prot':
(.text16.real_to_prot+0x1): relocation truncated to fit: R_X86_64_PC16 against symbol `enable_a20' defined in .text16.early section in bin-x86_64-efi/blib.a(liba20.o)
bin-x86_64-efi/blib.a(librm.o): In function `real_to_prot':
(.text16.real_to_prot+0x8): relocation truncated to fit: R_X86_64_16 against symbol `rm_ds' defined in .text16.data.rm_ds section in bin-x86_64-efi/blib.a(librm.o)
bin-x86_64-efi/blib.a(librm.o): In function `real_to_prot':
(.text16.real_to_prot+0x22): relocation truncated to fit: R_X86_64_16 against `.bss16.rm_virt_addrs'
bin-x86_64-efi/blib.a(librm.o): In function `real_to_prot':
(.text16.real_to_prot+0x2e): relocation truncated to fit: R_X86_64_16 against `.bss16.rm_virt_addrs'
bin-x86_64-efi/blib.a(librm.o): In function `real_to_prot':
(.text16.real_to_prot+0x33): relocation truncated to fit: R_X86_64_16 against `.bss16.rm_virt_addrs'
bin-x86_64-efi/blib.a(librm.o): In function `real_to_prot':
(.text16.real_to_prot+0x39): relocation truncated to fit: R_X86_64_16 against `.data16.gdt'
bin-x86_64-efi/blib.a(librm.o): In function `real_to_prot':
(.text16.real_to_prot+0x58): relocation truncated to fit: R_X86_64_32 against `.text.real_to_prot'
bin-x86_64-efi/blib.a(librm.o): In function `r2p_pmode':
(.text.real_to_prot+0x10): relocation truncated to fit: R_X86_64_32 against `.data.pm_esp'
bin-x86_64-efi/blib.a(librm.o): In function `r2p_pmode':
(.text.real_to_prot+0x17): relocation truncated to fit: R_X86_64_32 against symbol `idtr32' defined in .data.idtr32 section in bin-x86_64-efi/blib.a(librm_mgmt.o)
bin-x86_64-efi/blib.a(librm.o): In function `r2p_pmode':
(.text.real_to_prot+0x1f): additional relocation overflows omitted from the output
bin-x86_64-efi/blib.a(hidemem.o): In function `hide_region':
/home/xxx/ipxe/src/arch/x86/interface/pcbios/hidemem.c:97: undefined reference to `_textdata'
/home/xxx/ipxe/src/arch/x86/interface/pcbios/hidemem.c:98: undefined reference to `_etextdata'
bin-x86_64-efi/blib.a(hidemem.o): In function `hide_etherboot':
/home/xxx/ipxe/src/arch/x86/interface/pcbios/hidemem.c:158: undefined reference to `_textdata'
/home/xxx/ipxe/src/arch/x86/interface/pcbios/hidemem.c:171: undefined reference to `_text16_memsz'
/home/xxx/ipxe/src/arch/x86/interface/pcbios/hidemem.c:172: undefined reference to `_data16_memsz'
ld: bin-x86_64-efi/ipxe.efi.tmp: hidden symbol `_textdata' isn't defined
ld: final link failed: Bad value
Makefile.housekeeping:1166: recipe for target 'bin-x86_64-efi/ipxe.efi.tmp' failed
make: *** [bin-x86_64-efi/ipxe.efi.tmp] Error 1
rm bin-x86_64-efi/version.ipxe.efi.o

I build commit ce240c8c2d5d51841e3b261951b181961215de6b. My changes are:
diff --git a/src/config/console.h b/src/config/console.h
index 9f770d0..62a8c79 100644
--- a/src/config/console.h
+++ b/src/config/console.h
@@ -34,7 +34,7 @@ FILE_LICENCE ( GPL2_OR_LATER_OR_UBDL );
  *
  */

-//#define      CONSOLE_SERIAL          /* Serial port console */
+#define        CONSOLE_SERIAL          /* Serial port console */
//#define      CONSOLE_FRAMEBUFFER     /* Graphical framebuffer console */
//#define      CONSOLE_SYSLOG          /* Syslog console */
//#define      CONSOLE_SYSLOGS         /* Encrypted syslog console */
diff --git a/src/config/general.h b/src/config/general.h
index fb1ac93..09c6e02 100644
--- a/src/config/general.h
+++ b/src/config/general.h
@@ -107,7 +107,7 @@ FILE_LICENCE ( GPL2_OR_LATER_OR_UBDL );
//#define      IMAGE_MULTIBOOT         /* MultiBoot image support */
//#define      IMAGE_PXE               /* PXE image support */
//#define      IMAGE_SCRIPT            /* iPXE script image support */
-//#define      IMAGE_BZIMAGE           /* Linux bzImage image support */
+#define        IMAGE_BZIMAGE           /* Linux bzImage image support */
//#define      IMAGE_COMBOOT           /* SYSLINUX COMBOOT image support */
//#define      IMAGE_EFI               /* EFI image support */
//#define      IMAGE_SDI               /* SDI image support */

Could someone give me an advice?

With best regards
Sergey Kovalev

P.S. I have successfully loaded kernel from Fedora 23 (file vmlinuz-4.4.9-300.fc23.x86_64) but I don't why.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.ipxe.org/pipermail/ipxe-devel/attachments/20170323/21e32fcc/attachment.htm>


More information about the ipxe-devel mailing list