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";
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!
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://webserver.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.