Slow IPXE UEFI?
So I have a dhcp proxy that is pushing out the UEFI and Legacy boot files.
( https://github.com/FOGProject/node-dhcproxy )
Everything works fine no transfer issues, nothing.
However, I am wondering. The time that it takes Legacy to go from ipxe initializing devices is much faster compared to the UEFI version.
It all works, I just find it strange that the UEFI version takes about 8-15 seconds longer compared to the Legacy version.
I’ve tried with multiple versions of the boot files. Has anyone found a quicker boot file? or some sort of setting that would speed up the UEFI boot time? (Other than going back to legacy)
UEFI is just a hell lot more complex than legacy BIOS is. This does not make it slower per se but on top of that a lot of the UEFI implementations are badly flawed. Feel free to take a tour through the iPXE code and see all the things that need to be done to properly boot UEFI machines…
In my experience, it’s dependant on the model of the device. Some models at work take 15 seconds as you describe, others are as fast as legacy.
I don’t remember which one is fast off the top of my head, summer imaging has been over for a while now.
@george1421 It’s really a rather fascinating issue. Absolutely nothing but iPXE seems to be the case. I really wonder what section of the iPXE boot slows it down, please update this when you get a chance haha.
@Killklli OK so based on your testing the iPXE kernel setup is the slowest part of the booting process. I would have really like to see the iPXE uefi boot times to rule out pxe booting and pointing to the iPXE kernel it self. If I get some time tomorrow I’ll see if I can create the usb uefi boot. I know where the developers keep the configs for what they fold into FOG. Right now I don’t see a way around using iPXE…
@george1421 Went and spent some time on it.
About 3-4 seconds for load into ipxe
Everything plugged in, basic UEFI launch - 28 seconds
things unplugged. Video card still in - 29 seconds.
USB EFI boot - Unable to get boot. Tried both making a file and downloading the existing ipxe file from webserver. Stalls at iPXE initializing devices.
Unsure what to do.
USB FOS -
Made from Fog Server- Unable to boot through UEFI, only legacy. (Does that have to do with the fog server running legacy?) Instant, no delay.
Second install from UEFI Ubuntu- UEFI boots. Almost instant boot time.
Both boots from legacy or UEFI both load these at about the same pace.
Takes about 3 seconds to load the kernel and virtual drive
About 4 seconds to get to the network loading
About 3 seconds to load the network
About 1s for the rest.
@Killklli If you have time to experiment it would be interesting to know if its the PXE booting process, iPXE, the motherboard, or something else. (this is not a forever solution) I did create a process where we could boot the FOS engine using a USB flash drive. This process does not use the iPXE kernel at all, but uses GRUB instead. https://forums.fogproject.org/topic/7727/building-usb-booting-fos-image I did also write a tutorial for usb booting the iPXE kernel in UEFI mode: https://forums.fogproject.org/topic/6400/usb-boot-uefi-client-into-fog-menu-harder-way In this tutorial I documented the steps to create an new iPXE kernel using rom-o-matic web site. Maybe there are specific iPXE kernel requirements that would make uefi pxe booting faster.
Where do you see the most time being consumed during the booting process in uefi mode? (TBH at my work we still use legacy (bios) mode for everything even new hardware).
It just seems rather strange with such a jump in time. I’m seeing the DHCP packet and download at relatively the same rate as legacy. It’s just the rate at IPXE boot. It just seems strange that the same device that it boots in legacy are adding such a large amount of time to the boot in UEFI.
While I would just not have it in the boot order and do it legacy just for imaging, I’m a student at a college in the Comp Sci department. We have a room of just our computers and at the rate these things get re imaged to different operating systems, its simpler to have in the boot order.
I feel like the next step I should try is disconnecting everything including the hard drive to see if I can see a discernible difference in boot time from either peripheral hardware or if its based off the board itself.
I’m working with the new version of dnsmasq in another thread: https://forums.fogproject.org/topic/8677/dnsmasq-bios-and-uefi And I’m finding that its the uefi firmware that is slower as compared to bios (legacy) mode. It takes 3-4 seconds to just start to send the initial dhcp request packet as compared to legacy mode. This is all firmware at this point not anything to do with a boot kernel in my experience. And then the next slow down comes as the boot kernel discovers all of the devices and associates drivers with the hardware.
At this point I’m not sure if there is anything that can be done with speeding up pxe booting to OS. In our case we don’t pxe boot through fog to boot the OS off the hard drive. This saves us on startup time. The down side is that someone has to physically sit at the computer to image it (which typically happens less than three times in the life of the target computer).