Burning iPXE into ROM

For a permanent deployment of iPXE, you can burn it into your network card's expansion ROM, as a replacement for the card's legacy PXE ROM. Most modern network cards store their expansion ROMs in flash memory, and most manufacturers will provide a utility to allow you to reflash the expansion ROM.

A network card

The iPXE ROM will show up as a boot device in the BIOS boot menu. Some BIOSes do not show specific devices in the boot menu, but instead show a generic option such as “Boot from LAN”. If there is no such entry in the boot menu nor the BIOS configuration menu and iPXE is not booted automatically you may have to use the NONPNP_HOOK_INT19 build-time option.

The iPXE ROM will become a permanent fixture of your network card; if you move the card to another machine then the iPXE ROM will be available in the new machine.

Network card Original Equipment Manufacturers (OEMs) can burn iPXE into their cards at the point of manufacture. There are no licensing fees for providing cards containing iPXE ROMs, but please be aware that you must comply with iPXE's GPL license terms. The easiest way to do this is by publishing your tree on http://git.ipxe.org, including any code or configuration changes that you make. To arrange to publish your tree in this way, please contact vendor-support@ipxe.org.

Building the ROM image

You will need to build an iPXE ROM image for your specific network card. For this, you need to know the relevant PCI vendor and device IDs. You can use lspci -nn to find the relevant IDs of your network card:

  [user@machine ~]# lspci -nn
  00:00.0 Host bridge [0600]: Intel Corporation 440BX/ZX/DX - 82443BX/ZX/DX Host bridge [8086:7190] (rev 03)
  00:01.0 PCI bridge [0604]: Intel Corporation 440BX/ZX/DX - 82443BX/ZX/DX AGP bridge [8086:7191] (rev 03)
  ...
  00:0d.0 Ethernet controller [0200]: 3Com Corporation 3c900B-TPO Etherlink XL [Cyclone] [10b7:9004] (rev 04)
                                                                                         /^^^^^^^^^
                                                  this is the PCI vendor and device ID _/
  ...

In this example, we see that the PCI vendor ID is 10b7 and the PCI device ID is 9004. You can now build an iPXE ROM for your network card using:

  make bin/vvvvdddd.rom

where vvvv and dddd are the PCI vendor and device IDs of your network card. For the above example, with a PCI vendor ID of 10b7 and a PCI device ID of 9004, you would use:

  make bin/10b79004.rom

Make a note of the ROM image file (bin/10b79004.rom in the above example).

Burning the image into ROM

An expansion ROM

To burn the image file into flash, you will need to use a utility that supports your network card specifically. Usually vendors provide such a tool (often a DOS executable only) for their cards. You might also consider the use of flashrom, which is a generic flashing utility for a wide variety of cards and chips. It is described in more detail here.

Individual instructions are available for: