Build targets

iPXE is built using a command-line something like this:

  make bin/ipxe.pxe

The first part, bin in this case indicates platform. ipxe indicates driver, and .pxe indicates boot type.

  make [platform]/[driver].[extension]

There are some other special targets as well.

Platforms

Currently supported platforms are:

  • bin (alias for bin-i386-pcbios)
  • bin-i386-pcbios
  • bin-i386-efi
  • bin-i386-linux
  • bin-x86_64-efi
  • bin-x86_64-linux
  • bin-x86_64-pcbios
  • bin-arm32-efi
  • bin-arm64-efi

Driver

As the subtitle suggests this is the kind of driver to include in the build

  • ipxe builds one binary with (almost) all PCI based NIC drivers that iPXE has (for now not working on arm since some interfaces have not yet been implemented there, build specific drivers instead such as snp)
  • intel or other driver file found in the sources builds for that driver
  • 808610de binary with driver for specific PCI device with given pci-id. See list of hardware expected to work.
  • ecm--ncm double dash (--) adds multiple drivers to one file, in this case we pull in most USB based drivers (you can add double dash multiple times for more than two drivers)

Some commonly used variants and why:

  • ipxe all native drivers, commonly used for usb based boot media or where iPXE is not used in a chainloaded manner.
  • undionly driver used for building chainable iPXE for pcbios platforms (not included in ipxe since UNDI stack can't be reliably kept and still having device available for possible native iPXE driver) use with .kpxe extension
  • snponly similar to undionly but for efi uses snp (Simple Network Protocol) or nii (Network Interface

Identifier Protocol) provided by something else in EFI land, should only find and boot the specific NIC device it was chained from.

  • snp same as snponly but tries to boot all devices and not just the one it was chained via, this is also included in ipxe builds
  • tests the Linux test suite
  • tap the Linux tap driver, use with .linux boot type

Boot type

Determines what kind of header should be added to the binary and how entrypoints should be handled.

extension Valid platforms Description
.pxe pcbios Headerless X86 assembly code, PXE- or NBP-booted, sometimes renamed to .0 to work on older DHCP/TFTP servers
.efi efi EFI executable
.kpxe pcbios Same as .pxe but will Keep the original UNDI stack/driver present. This is needed for undionly ref
.kkpxe pcbios Same as .kpxe but will not unload (Keep) the PXE base code. only use with buggy BIOSes
.lkrn pcbios Builds with kernel header similar to Linux so it can be started by many bootloaders
.iso pcbios Builds .lkrn and adds ISOLINUX to create CD-ROM image, can be started by many bootloaders
.hd pcbios Direct executable i386 code put on a harddisk image (32KB blocks)
.dsk pcbios Direct executable i386 code put on a floppy disk image (512 Byte blocks)
.pdsk pcbios Padded .dsk to work with loaders that requires exact size such as iLO
.usb pcbios, efi Same as .dsk for pcbios, in efi mode it's an 1440K image with partition and [driver].efi added as /efi/boot/boot[arch].efi, mostly used for making USB stick images
.rom pcbios File intended to be flashed into PCI-based NIC ROM
.mrom pcbios File intended to be flashed into PCI-based NIC ROM. See notes for ''.mrom''
.pcirom pcbios Same as .rom
.isarom pcbios File intended to be flashed into ISA-based NIC ROM, must be used with e.g. VirtualBox
.efidrv efi Driver for NIC which can be used by other EFI firmware
.efirom efi File intended to be flashed into NIC ROM for EFI
.linux linux Linux ELF executable, use for tests and tap

Special targets

  • make Same as make all
  • make all Predefined list of most common targets and prints some helpfully suggestive message
  • make everything tries to build targets for multiple platforms
  • make vmware ROMs for VMware
  • make doc Same as make bin/doc
  • make [platform]/doc Builds doxygen documentation
  • make docview Tries to open doxygen documentation in browser
 
appnote/buildtargets.txt · Last modified: 2017/10/03 13:17 by mcb30
Recent changes RSS feed Donate Powered by PHP Valid XHTML 1.0 Valid CSS Driven by DokuWiki
All uses of this content must include an attribution to the iPXE project and the URL http://ipxe.org
References to "iPXE" may not be altered or removed.