Table of Contents
What Is gPXE? in Brief
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.
Download Protocols
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 | 
SAN-Boot Protocols
gPXE features two SAN-booting technologies:
| iSCSI | 
| AoE | 
Name Resolution Protocols
gPXE features name resolution protocols:
| DNS | |
| NMB | Not by default | 
Booting Protocols
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 Shell
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 | 
gPXE Formats
The Prefix
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.
The Drivers
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 | 



