iPXE discussion forum

Full Version: Stuck iPXE initialising devices - .efi pxe boot
You're currently viewing a stripped down version of our content. View the full version with proper formatting.
I am using Grub to boot ipxe, and then to load wimboot. On some newer Lenovo laptops, specifically the L470 ipxe stops at "iPXE initialising devices"

The pxe server is using grubnetx64.efi.signed as the net-boot server, and the dhcp comes from the router. This works fine for Grun booting most debian based OS's and tools over the network, and works fine with most of our hardware for ipxe.

I use rom-o-matic.eu to build and embed the script. In the driver for the L470 is an "Intel I219-V", which is listed in the rom-o-matic drivers list.

The script is:
#!ipxe
dhcp
kernel http://192.168.2.8/grub/config/win_pe/wimboot
initrd http://192.168.2.8/grub/config/win_pe/BCD
initrd http://192.168.2.8/grub/config/win_pe/boot.sdi
initrd http://192.168.2.8/grub/config/win_pe/boot.wim
boot

And launched from Grub with:
menuentry "Windows PE Test" {
location=$configpath/win_pe
chainloader $location/ipxe.efi
}

I tested to see if anything else boots with the "Intel I219-V", and some tools work fine, some debian based OS's fail to load with the error "Waiting for ethernet card(s) up... If this fails, maybe the ethernet card is not supported by the kernel 3.16.0-4-amd47"

Clonezilla boots fine on the L470, so i presume the BIOS config is fine. It's set up UEFI, CSM disabled and Secure Boot disabled.

I tried to do some small tests, such as "echo test" in the ipxe embeded script, again is still doesn't get past "iPXE initialising devices".

Can anyone help debug this with me? Or know how to resolve this?
You can find officially built versions on boot.ipxe.org try to use the efi.ipxe from there, I'm expecting you got get the same issue with the hang. And then try snponly.efi instead, you should hopefully get further, and you should be able to press Ctrl-B (or ESC-B if your firmware is buggy) to get into the iPXE shell and test things out, network might however not work with snponly depending on how much Grub destroy things.

It would also be a good idea to test booting ipxe.efi without first booting into grub.

These steps is to figure out a baseline and see what the actual issue is. But already it is somewhere between hardware/firmware, Grub or iPXE since you don't even get to wimboot.
Ok, i tried ipxe.efi from http://boot.ipxe.org/, and it has the same issue, it just stops at "iPXE initialising devices". snponly.efi boots, and i get the shell by pressing ctrl + b. But there are no network devices. ifstat does not show any device. I imagine the issue is still ipxe not being able to boot this particular network firmware. I can't see there is an issue with the Grub chainload, because on other devices it boots ipxe.efi fine, and on the shell ifstat shows the network devices.

I made a uefi ipxe usb with ipxe.efi, and that boots and ifstat shows the network adapter. So it seems to be related to network booting. Possibly with Grub's chainload which does something to the network adapter.

Is there another way to load ipxe from Grub? Or even boot Wimboot from Grub without ipxe?
In efi mode normally you have a SNP device available when doing network boot. My guess is that Grub does something with this device, to confirm you could test to boot snponly.efi without grub in between and see if that works, If it does we know for sure that Grub is causing issues in that scenario.

You boot ipxe.efi on different machines from Grub - is it the exact same version of Grub (exact same binary) ? If not maybe they have changed something between version that is causing this issue.

There are some reports now and then about similar hangs from firmware, that happens when iPXE is not allowed to take control over devices, in the case with grub it might be that grub claims something, and refuse to release it and thus iPXE "hangs" forever waiting for it. It would be good if we could narrow down exactly when this happens so issues can be raised on both ends a fix(es) released.

You can boot wimboot from grub, not sure about success tho, there is some posts about it I think.
Another thing to test if it works around the issue is to boot efishell from grub, and then from there boot ipxe.efi.
I've run into an issue with an ipxe.efi binary stopping/ failing on "initializing devices", but not with an snponly.efi build.

The Network card in question was a newer Broadcom/QLogic 20GbE adapter.

I suspect anything using the bnx/bnx2 driver family would have this problem; the driver code is not completely open source and I think the the failback mechanism in the ipxe.efi code can't cope with the hardware as a result; iPXE doesn't have a native driver as a result.
I never got any further with the grub to ipxe chain. One way to debug would be to hook the computers to a hub, and monitor the traffic with wireshark to see what happens with the network after it chains. But, at some point i wanted to scrub grub and just use ipxe for it's features.

I did that this week, booting the tftp server with the bootstrapx64 .efi file generated from https://rom-o-matic.eu. And it worked on the newer hardware we have here. I also had to inject the new drivers into the boot.wim file for WindowsPE to work. So problem solved i guess, just take out grub and use the benefits of ipxe.
Reference URL's