====== 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|