====== Boot scripts ======
You can use any of the commands found in the [[commandline|gPXE command line reference]] as instructions in a script file to boot your OS.
For example, [[http://etherboot.org/gtest/gtest.gpxe]] contains the following gPXE commands:
#!gpxe
kernel http://etherboot.org/gtest/bz2bzImage root=100
initrd http://etherboot.org/gtest/initrd.bz2
boot
or using the 'chain' command, this would be equivalent to:
#!gpxe
initrd http://etherboot.org/gtest/initrd.bz2
chain http://etherboot.org/gtest/bz2bzImage root=100
or this will boot from iSCSI:
#!gpxe
sanboot iscsi:192.168.2.23::::iqn.1994-04.org.netbsd.iscsi-target:target1
=== Embedded images ===
gPXE normally fetches images over the network using TFTP, HTTP, iSCSI, or other network protocols. It is also possible to //embed// an image file inside gPXE and make it available without fetching over the network.
By embedding gPXE scripts, you can customize gPXE's behavior before its first network access. For example, static network configuration can be done by embedding a gPXE script.
Images are embedded when building gPXE with ''make'':
$ make EMBEDDED_IMAGE=../contrib/scripts/static.gpxe
This builds a gPXE image which executes the ''static.gpxe'' script on startup. The ''static.gpxe'' sample script works with QEMU's user network stack:
#!gpxe
ifopen net0
set net0/ip 10.0.2.15
set net0/netmask 255.255.255.0
set net0/gateway 10.0.2.2
set net0/dns 10.0.2.3
kernel http://etherboot.org/gtest/gtest.gpxe
boot
Multiple images can be embedded:
$ make EMBEDDED_IMAGE=../contrib/scripts/gpxelinux.gpxe,/usr/lib/syslinux/pxelinux.0
This builds a gPXE image which executes the ''gpxelinux.gpxe'' script on startup. The ''gpxelinux.gpxe'' script performs DHCP before loading the embedded ''pxelinux.0'' image and executing it:
#!gpxe
dhcp net0
imgload img1
boot
See the [[:appnotes:autobootchainurl|patched autoboot invocation]] for cases when the right interface to boot need to be found automatically.
see [[soc/2008/stefanha/journal/week8#sat_19_2008|Stefanha's Summer of Code 2008 Week 8 journal]]