Using Etherboot as a PXE 2nd-stage loader

Several NICS on the market have a firmware on them, containing PXE code.

So, what is PXE anyway?

PXE stands for Preboot Execution Environment. It has been designed by Intel(?, others too?) and specifies how a system should behave on boot as part of Intel's “Wired For Management” initiative.

Mainly it allows for code to be downloaded and executed via a second stage loader - the “Network Bootstrap Program” (NBP) to do the real work, like pxelinux. Etherboot can be used as a NBP as well. Up until recently, just by unloading the PXE stack immediately and then loading the kernel as if it were installed in EPROM with a NIC specific driver; from version 5.3.3, Etherboot as an NBP can use the PXE UNDI driver abstraction, which makes an Etherboot more portable, at the risk of the unreliable PXE firmware.

Besides, Etherboot itself can be run as the first-stage loader - see the pxe page for details.

How can I use Etherboot as a 2nd-stage-loader?

You may want to look into

Information about using PXE with the PXELinux NBP can be found at

The two stage loading might be difficult in NT-server-only environments (or restrictive configurations/setups where the dhcp-daemon is not as powerful as ISC dhcp3) - there is an unofficial workaround for this here: pxefilenamehack. This patch makes etherboot just ignore trailing “.zpxe” on the filename received, to simplify DHCP configuration: so if you have a “bootfile.nbi” to boot from, just call your second-stage-loader “bootfile.nbi.zpxe”, and use this last file name as your DHCP boot file name: the second-stage-loader will download the right “bootfile.nbi”.

You can find a precompiled and well-tested second-stage-loader that includes this unofficial patch in the “Contribs” section of

See also: sampleconfigs