iPXE discussion forum
ipxe.efi with embedded scirpt hangs, precompiled ipxe.iso works, compilation errors - Printable Version

+- iPXE discussion forum (https://forum.ipxe.org)
+-- Forum: iPXE user forums (/forumdisplay.php?fid=1)
+--- Forum: General (/forumdisplay.php?fid=2)
+--- Thread: ipxe.efi with embedded scirpt hangs, precompiled ipxe.iso works, compilation errors (/showthread.php?tid=8334)



ipxe.efi with embedded scirpt hangs, precompiled ipxe.iso works, compilation errors - kmwil - 2017-02-22 11:55

Hello,

I installed rEFInd on iMac (I believe it is Late 2013 or newer, Model A1419, EMC 2639) and compiled/embed my script to boot the specific Linux kernel. This setup worked fine until we had to upgrade to OS X Sierra. Now, something is wrong. Previously compiled ipxe.efi don't work anymore.

The Ethernet card is net0: BCM 57766, so the driver should be tg3.

To solve this issue i downloaded newest ipxe from git, compiled it and embed
a script.

Code:
#!ipxe                                                                          
                                                                                
ifconf --configurator dhcp net0                                                
kernel /blah/vmlinuz-lk net.ifnames=0 biosdevname=0 root=/dev/nfs ip=dhcp  
boot

Effect: everything hangs after selecting ipxe.efi from rEFInd.

When I embed shell script:

Code:
#!ipxe
shell

I get the shell. When I type something interface related (like dhcp or ifconf shell hangs). ifstat works fine.

And now: when I use precompiled ipxe.iso from your site it works fine. Card is up and running.

So I compiled the shell with tg3 DEBUG flags:
Code:
make bin-x86_64-efi/tg3.efi EMBED=shell.ipxe DEBUG=tg3:3,tg3_hw:3,tg3_phy:3

Effects:
Code:
Link is down
allocated iob_buffer for descriptor 0
...
allocated iob_buffer for descriptor 7

And here hangs...

Also, I cannot compile with all flags: I get errors like this:
Code:
[LD] bin-x86_64-efi/tg3.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+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): relocation truncated to fit: R_X86_64_32 against symbol `rm_sp' defined in .bss.rm_ss_sp section in bin-x86_64-efi/blib.a(librm.o)
bin-x86_64-efi/blib.a(librm.o): In function `prot_to_real':
(.text.prot_to_real+0x2): additional relocation overflows omitted from the output
bin-x86_64-efi/blib.a(hidemem.o): In function `hide_region':
/nonraid/ipxe/ipxe_git/ipxe/src/arch/x86/interface/pcbios/hidemem.c:97: undefined reference to `_textdata'
/nonraid/ipxe/ipxe_git/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':
/nonraid/ipxe/ipxe_git/ipxe/src/arch/x86/interface/pcbios/hidemem.c:158: undefined reference to `_textdata'
/nonraid/ipxe/ipxe_git/ipxe/src/arch/x86/interface/pcbios/hidemem.c:171: undefined reference to `_text16_memsz'
/nonraid/ipxe/ipxe_git/ipxe/src/arch/x86/interface/pcbios/hidemem.c:172: undefined reference to `_data16_mem

Best Regards
Kamil


RE: ipxe.efi with embedded scirpt hangs, precompiled ipxe.iso works, compilation errors - SebastianRoth - 2017-07-23 15:09

Hello Kamil,

might this be related you think?

(2017-02-22 11:55)kmwil Wrote:  Also, I cannot compile with all flags: I get errors like this:
Code:
[LD] bin-x86_64-efi/tg3.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)
...

What do you mean by "all flags". I am able to compile using the make line you posted without an issue (make bin-x86_64-efi/tg3.efi EMBED=shell.ipxe DEBUG=tg3:3,tg3_hw:3,tg3_phy:3).

Sebastian