HTTP booting

Booting from HTTP with gPXE is as simple as replacing the DHCP filename field with an http:// URL. For example, if you currently have /etc/dhcpd.conf containing

  next-server my.tftp.server;
  filename "/pxe.0";

then you can just copy pxe.0 to your web server and edit /etc/dhcpd.conf to contain

  filename "http://my.web.server/pxe.0";

Linux booting via HTTP

Scalability

HTTP can handle much larger files than TFTP, and scale to much larger distances. You can easily download multi-megabyte files, such as a Linux kernel and a root filesystem, and you can download from servers that are not on your local area network. We have successfully tested booting across the Atlantic using HTTP!

Using PXELINUX

PXELINUX versions >= 3.70 can use gPXE-provided HTTP. (See syslinux/NEWS “Changes in 3.70”)

By default, PXELINUX will look for its configuration file using TFTP. To override this behaviour, you can specify DHCP options 209 and/or 210. (See syslinux/doc/rfc5071.txt)

You can specify these options with your DHCP service or you can specify them in a gPXE script:

  #!gpxe
  echo Performing DHCP on first network interface
  dhcp net0
  set 209:string pxelinux.cfg/default
  set 210:string http://example.com/
  chain ${210:string}pxelinux.0

The 'chain' command above will be expanded by gPXE to:

chain http://example.com/pxelinux.0

and the chained-to PXELINUX will look for its configuration file using the 210 prefix. All relative paths specified in the PXELINUX configuration file will also have this prefix prepended to them.

Using gpxelinux.0

Since SYSLINUX 3.85 there is also the option of using gpxelinux.0 with pxelinux.0 embedded, example:

#!gpxe
echo Performing DHCP on first network interface
dhcp net0
set 209:string pxelinux.cfg/default
set 210:string http://example.com/
imgload pxelinux.0
boot pxelinux.0