[ipxe-devel] sanbooting FreeBSD ISO under UEFI

Shao Miller ipxe at sha0.net
Mon Jan 23 15:28:56 UTC 2017


On 1/23/2017 10:27, Rick Miller wrote:
> Hi all,
>
> I currently use iPXE to load memdisk and, subsequently, a FreeBSD disk 
> image to perform an OS installation to disk. This works great in BIOS, 
> but upcoming requirements make UEFI a prerequisite.  Because memdisk 
> is not UEFI-aware, new UEFI-aware media is necessary.  The current 
> plan is to integrate the installation scripts (currently in the hard 
> drive image) into a bootable FreeBSD ISO (something I’ve previous 
> experience with) and instead of loading it via memdisk, load it 
> directly from iPXE using `sanboot` (or similar).
>
> Unfortunately, I have been unable to get iPXE to sanboot an ISO.  It 
> errors citing “Operation not permitted”.  The current working theory 
> is that the necessary features aren’t enabled in the current 
> UEFI-aware iPXE program.  This has lead me to the general.h[2] header 
> file where many of the image types are disabled, including IMAGE_PXE, 
> which seems to be the image type necessary for PXE booting.  However, 
> uncommenting and building the resulting code via:
>
> # pwd
> /ipxe/src
> # make bin-x86_64-efi/ipxe.efi
>
> produces the following error:
>
>   [AR] bin-x86_64-efi/blib.a
> ar: creating bin-x86_64-efi/blib.a
>   [HOSTCC] util/elf2efi64
>   [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(pxe_entry.o): In function `pxe_segments':
> (.text16.data+0x26): undefined reference to `_data16_memsz'
> bin-x86_64-efi/blib.a(pxe_entry.o): In function `pxe_segments':
> (.text16.data+0x2e): undefined reference to `_data16_memsz'
> bin-x86_64-efi/blib.a(pxe_entry.o): In function `pxe_segments':
> (.text16.data+0x36): undefined reference to `_text16_memsz'
> bin-x86_64-efi/blib.a(pxe_entry.o): In function `pxe_segments':
> (.text16.data+0x3e): undefined reference to `_text16_memsz'
> bin-x86_64-efi/blib.a(pxe_entry.o): In function `pxenv':
> (.text16.data+0x76): undefined reference to `_data16_memsz'
> bin-x86_64-efi/blib.a(pxe_entry.o): In function `pxenv':
> (.text16.data+0x82): undefined reference to `_data16_memsz'
> bin-x86_64-efi/blib.a(pxe_entry.o): In function `pxenv':
> (.text16.data+0x86): undefined reference to `_text16_memsz'
> make: *** [bin-x86_64-efi/ipxe.efi.tmp] Error 1
> rm bin-x86_64-efi/version.ipxe.efi.o
>
> Are there additional options, such as PXE_STACK, that are required 
> when booting a FreeBSD ISO from iPXE under UEFI, but perhaps disabled 
> that might mitigate this error or perhaps this feature is unavailable 
> under UEFI?
>
>
> [1] http://ipxe.org/efi/vision
> [2] https://git.ipxe.org/ipxe.git/blob/HEAD:/src/config/general.h
>
>
Good day, Rick.

The following forum-post might be related: 
http://forum.ipxe.org/showthread.php?tid=6896&pid=9117#pid9117
--
Shao Miller
Synthetel Corporation
W: https://www.synthetel.com



More information about the ipxe-devel mailing list