gPXE is a boot-loader: a program that allows your computer to load either another boot-loader or your Operating System. gPXE, however, is a very special kind of boot-loader that allows the computer to boot via a network, rather than a disk. gPXE is the direct descendant of Etherboot; both are part of the Etherboot project, though Etherboot is no longer maintained.
gPXE features several download protocols:
| TFTP | |
| NFS | Not by default |
| HTTP | |
| HTTPS | Not by default |
| FTP | Not by default |
| TFTM | Not by default |
| SLAM | Not by default |
| FSP | Not by default |
gPXE features two SAN-booting technologies:
| iSCSI |
| AoE |
gPXE features name resolution protocols:
| DNS | |
| NMB | Not by default |
gPXE is a boot-loader that is capable of booting programs of several different formats:
| NBI (Network Boot Image) | |
| ELF | |
| FreeBSD Kernel | |
| Multiboot Specification-Conformant Image | |
| a.out | |
| WinCE | |
| PXE | |
| gPXE Script | |
| Linux bzImage (Kernel) | |
| COMBOOT/COM32 | Not COM32R (Syslinux v4.00+); Use Syslinux 3.86 |
| EFI | Only Applicable on EFI Platform |
gPXE has a command-line interface (CLI), also called a shell, which allows you some manual control over what gPXE does. Shell commands can be grouped together, one per line, into a file called a script. In order for a script to be recognized by gPXE as a bootable image, you must put the following as the first line in the script:
#!gpxe
Some of the command categories are:
| Automatic Booting |
| Non-Volatile Option Storage (NVO) |
| Option Configuration |
| Network Interface Management |
| Network Routing Table Management |
| Bootable Image Management |
| DHCP Configuration |
| SAN-Booting |
In order to allow a variety of methods for loading and running gPXE, the core of the program is prefixed by another program which is specific to a particular booting scenario or bootable media. These different prefices are:
| ROM | For flashing gPXE onto a chip or as a loadable module from BIOS |
| PXE | TODO |
| KPXE | For loading gPXE from a PXE boot-loader via a network |
| ELF | TODO |
| ELFD | TODO |
| LMELF | TODO |
| LMELFD | TODO |
| LKRN | For loading gPXE as a pseudo-“Linux Kernel”-format file in a compliant boot-loader (LILO, SYSLINUX, EXTLINUX, ISOLINUX, PXELINUX, GRUB, etc.) |
| bImage | TODO |
| DSK | For loading gPXE from a floppy disk with no filesystem on it |
| NBI | For loading gPXE from a PXE boot-loader via a network |
| HD | For loading gPXE from a hard disk drive with no filesystem(s) on it |
| RAW | TODO |
| COM | For loading gPXE from a DOS prompt (Jan-7-2009: Broken) |
| EXE | For loading gPXE from a DOS prompt (Jan-7-2009: Broken) |
Each of these different formats for gPXE are available as compressed or uncompressed.
gPXE can be compiled to contain network interface drivers in three different ways:
| A Single Network Interface Driver | make bin/eepro100.lkrn; make bin/VVVVDDDD.lkrn |
| All Network Interface Drivers | make bin/gpxe.lkrn |
| A Single Driver that Uses the Network Interface's Built-In UNDI | make bin/undionly.lkrn |