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
_______________________________________________
ipxe-devel mailing list
ipxe-devel@lists.ipxe.org
https://lists.ipxe.org/mailman/listinfo.cgi/ipxe-devel