UEFI PXE BOOT
-
I’ve got some problems to make works boot PXE UEFI.
I’ve got this problem with new dell lattitude 5580.BIOS configuration :
Secure Boot - Secure Boot Enable - Disabled Advanced Boot Options - Enable Legacy Option ROMs System Configuration - Integrated NIC - Enable UEFI Network Stack - Enabled w/PXE Boot Sequence - Onboard NIC (IPV4) Windows Boot Manager
I use FOG 1.5.0 (@IP : 192.168.39.243)
I dont use the DHCPD server of FOG but my own DHCPD server (isc-dhcp-server).
Before trying use UEFI PXE boot everything worked fine with only LEGACY .
I followed this article : https://wiki.fogproject.org/wiki/index.php?title=BIOS_and_UEFI_Co-Existence#Example_1
And then add to my dhcpd.conf these lines :General options
option space PXE; option PXE.mtftp-ip code 1 = ip-address; option PXE.mtftp-cport code 2 = unsigned integer 16; option PXE.mtftp-sport code 3 = unsigned integer 16; option PXE.mtftp-tmout code 4 = unsigned integer 8; option PXE.mtftp-delay code 5 = unsigned integer 8; option arch code 93 = unsigned integer 16; # RFC4578
Subnet options :
next-server 192.168.39.243; class "UEFI-32-1" { match if substring(option vendor-class-identifier, 0, 20) = "PXEClient:Arch:00006"; filename "i386-efi/ipxe.efi"; } class "UEFI-32-2" { match if substring(option vendor-class-identifier, 0, 20) = "PXEClient:Arch:00002"; filename "i386-efi/ipxe.efi"; } class "UEFI-64-1" { match if substring(option vendor-class-identifier, 0, 20) = "PXEClient:Arch:00007"; filename "ipxe.efi"; } class "UEFI-64-2" { match if substring(option vendor-class-identifier, 0, 20) = "PXEClient:Arch:00008"; filename "ipxe.efi"; } class "UEFI-64-3" { match if substring(option vendor-class-identifier, 0, 20) = "PXEClient:Arch:00009"; filename "ipxe.efi"; } class "Legacy" { match if substring(option vendor-class-identifier, 0, 20) = "PXEClient:Arch:00000"; #filename "undionly.kkpxe"; filename "ipxe.pxe"; }
The computer boot PXE correctly and i’ve got the PXE menu.
But after that when i choose “Boot from hard disk”, i’ve got the
“chainloading failed…” error message.
I cant understand what is the problem.
Does someone could help me ? -
As you ask sometime to give the result of this command :
http://192.168.39.243/fog/service/ipxe/boot.php?mac=10:65:30:64:39:54It’s the mac address of the problematic computer
Here is the result#!ipxe set fog-ip 192.168.39.243 set fog-webroot fog set boot-url http://${fog-ip}/${fog-webroot} cpuid --ext 29 && set arch x86_64 || set arch i386 goto get_console :console_set colour --rgb 0x00567a 1 || colour --rgb 0x00567a 2 || colour --rgb 0x00567a 4 || cpair --foreground 7 --background 2 2 || goto MENU :alt_console cpair --background 0 1 || cpair --background 1 2 || goto MENU :get_console console --picture http://192.168.39.243/fog/service/ipxe/bg.png --left 100 --right 80 && goto console_set || goto alt_console :MENU menu colour --rgb 0x00567a 0 || cpair --foreground 1 1 || cpair --foreground 0 3 || cpair --foreground 4 4 || item --gap Host is pending approval! item --gap -- ------------------------------------- item fog.local Boot from hard disk item fog.memtest Run Memtest86+ item fog.deployimage Deploy Image item fog.multijoin Join Multicast Session item fog.sysinfo Client System Information (Compatibility) item fog.approvehost Approve This Host choose --default fog.local --timeout 10000 target && goto ${target} :fog.local sanboot --no-describe --drive 0x80 || goto MENU :fog.memtest kernel memdisk initrd=memtest.bin iso raw initrd memtest.bin boot || goto MENU :fog.deployimage login params param mac0 ${net0/mac} param arch ${arch} param username ${username} param password ${password} param qihost 1 isset ${net1/mac} && param mac1 ${net1/mac} || goto bootme isset ${net2/mac} && param mac2 ${net2/mac} || goto bootme param sysuuid ${uuid} :fog.multijoin login params param mac0 ${net0/mac} param arch ${arch} param username ${username} param password ${password} param sessionJoin 1 isset ${net1/mac} && param mac1 ${net1/mac} || goto bootme isset ${net2/mac} && param mac2 ${net2/mac} || goto bootme param sysuuid ${uuid} :fog.sysinfo kernel bzImage32 loglevel=4 initrd=init_32.xz root=/dev/ram0 rw ramdisk_size=127000 keymap=fr web=http://192.168.39.243/fog/ consoleblank=0 rootfstype=ext4 storage=192.168.39.243:/home/images/ storageip=192.168.39.243 loglevel=4 mode=sysinfo imgfetch init_32.xz boot || goto MENU :fog.approvehost login params param mac0 ${net0/mac} param arch ${arch} param username ${username} param password ${password} param approveHost 1 isset ${net1/mac} && param mac1 ${net1/mac} || goto bootme isset ${net2/mac} && param mac2 ${net2/mac} || goto bootme param sysuuid ${uuid} :bootme chain -ar http://192.168.39.243/fog/service/ipxe/boot.php##params || goto MENU autoboot
-
As i saw that host had this message : host is pending approval
I was able to approve it (qwerty keyboard…)
Then i can see the dell computer in fog and see that it has more than one Mac address.
Could it be the problem ? -
You can change the “Boot from hard disk” method globally, per group or per host.
Change EFI Exit Type from sanboot to something like rEFInd
-
@quazz
Hello and thanks for your answer
Here is actually the configuration for the hostWhat i have to modify ?
-
@plegrand The EFI Exit Type
-
@plegrand Clients that boot from hard disk after the menu use different mechanisms. In FOG we call this exit type. You can configure the exit type used per host and globally. Please check this host’s settings and try different types to see which one works for this client in UEFI mode.
-
@sebastian-roth @Quazz
I tryed
Sanboot : loop in menu
REFIND_EFI : launch a strange windows and stuck on dell logo
exit : chainloading failed…Do i have to try GRUB option ?
GRUB_FIRST_HDD : loop in menu
GRUB_FIRST_FOUND_WINDOWS : loop in menu -
@sebastian-roth
I tryed with different type without success.
Then i configured all computers with legacy boot.
Then no more problem -
@plegrand UEFI implementations can be a real pain. It’s meant to be Kind of universal but everyone is just doing his/her own thing. So some UEFI clients work great while others just don’t want to play nicely. There is not much we can do about it. Well, you can try using rEFInd and start playing with the config file. If you are lucky it’s justa matter of finding the right options.