Boot scripts

You can use any of the commands found in the 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 patched autoboot invocation for cases when the right interface to boot need to be found automatically.

see Stefanha's Summer of Code 2008 Week 8 journal


QR Code
QR Code scripting (generated for current page)