====== 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. {{ :clipart:nic.jpeg?237x222|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 [[:licensing|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 ===== {{ :clipart:bootrom.jpeg?120x96|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 [[http://www.flashrom.org/|flashrom]], which is a generic flashing utility for a wide variety of cards and chips. It is described in more detail [[:howto:romburning:flashrom|here]]. Individual instructions are available for: * [[:howto:romburning:intel|Most Intel adapters]] * [[:howto:romburning:tg3|Broadcom 57xx based adapters (tg3)]] * [[:howto:vmware|VMware virtual adapters]]