iPXE discussion forum

Full Version: Need to support as many devices as possible!
You're currently viewing a stripped down version of our content. View the full version with proper formatting.
Hi, I am wondering how I can configure iPXE to support as many different laptops / machines as possible. I repair Laptops & PC's so often the first thing I like to do is boot them from the network and run various tools such as anti-virus scanners, Hardware tests (Memtest, etc), or disk cloning software.

It's been a couple of years since I last played around with iPXE but I still have it all configured and working well with my custom menu and applications (like the ones mentioned above). I think the reason I stopped using it was because I found that I was unable to boot many types of laptops using iPXE so had to resort to using USB flash drives / DVD media for running the tools I needed.

Can anyone advise how I might be able to configure iPXE to support as broad a range of NIC's as possible?

I am using undionly.kpxe built using an embedded basic script which chainloads iPXE. This is the contents of the script:



I use DNSMasq for my DHCP and have the following configured as an additional option:


Many thanks in advance,
I started using PXE and later iPXE for the exact same purpose. Running memtest and posting the result to b800.org for automatic logging to the service log for example.

In legacy mode Using undionly.kpxe will work on all machines with almost no exceptions. There was/is some buggy Realtek chips, but those might not even work inside windows unless you are using the exact drivers that they used during production, so not really a iPXE issue.
For some known working nics I have added chaining into full ipxe.pxe since it works better:
iseq ${netX/chip} undionly && || goto notundi

echo ${esc}32;1mWe have UNDI: should try upgrade${esc}22;37m
iseq ${netX/busid:hex} 01:14:e4:16:92 && chain -ar ${boot-url}/ipxe.pxe ||
iseq ${netX/busid:hex} 01:14:e4:16:b5 && chain -ar ${boot-url}/ipxe.pxe ||
#iseq ${netX/busid:hex} 01:10:ec:81:68 && chain -ar ${boot-url}/ipxe.pxe ||
#iseq ${netX/busid:hex} 00:14:e4:16:92 && chain -ar ${boot-url}/ipxe.pxe ||

If you go for efi it becomes a different beast. ipxe.efi works best on most machines, but there is a few buggy firmware implementations where snponly.efi is needed instead, and then there is a few other machines where snponly.efi does not work. still using ipxe.efi is in my experience the best choice.

In any case, make sure you upgrade to the latest version if you have any issues, and spend a bit extra time for both creating backups when building, and having the build process as automatic as possible.
Thanks for your reply, that is encouraging! Yes, I am only concerned with using it in Legacy mode. And yes, it was also my understanding that should work with pretty much any NIC.

Anyway, it seems that I have just been unlucky because the two laptops that I have in front on me at the moment that I cannot boot with iPXE both have the same NIC: Atheros AR8132. I found this thread so will try to get it working.
If you use the native nic/bios PXE stack to chain undionly.kpxe then it is totally up to that nic/bios rom to do the right thing. The linked post is rather about running ipxe.usb which uses the drivers in ipxe, and does not use the bios firmware at all.

If you have the same behavior as the poster with undionly.kpxe just hangs then you have a firmware bug. Sometimes it works with undionly.kkpxe in those cases (note the double k) however that leaves a couple of leaks and should not be used in normal operations.
Reference URL's