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 |