[ipxe-devel] iPXE without DHCP 66/67 Settings

Michael Brown mbrown at fensystems.co.uk
Mon Dec 20 21:04:25 UTC 2010

On Monday 20 Dec 2010 19:43:57 Albert Hernandez wrote:
> We are not in control of our DHCP servers and we want to use iPXE to push
>  out software distributions to our servers.  We want to create a single
>  bootable ISO so we can use to deploy the image to the systems.
> I have been able to press CTRL-B and been able to set the minimum variable
>  FILENAME and NEXT-SERVER then issue the AUTBOOT command and the imaging
>  process begins.  Although this is acceptable in a lab configuration, it is
>  not for a production environment.
> Also we have to have a list of NEXT-SERVERS and have the boot process try
>  each one until the list is exhausted.  Once the list is exhausted then
>  fail.  This list is would be sequentially process and if the connection
>  returns any error, then skip that server and proceed to the next.

I would suggest using an embedded script.  You can do this using

  make bin/ipxe.iso EMBEDDED_IMAGE=stjoe.ipxe

where stjoe.ipxe is a text file containing:

  chain tftp://my-server1/my-filename ||
  chain tftp://my-server2/my-filename ||
  chain tftp://my-server3/my-filename ||
  echo Boot failed
  exit 1

This will try each server in turn, falling through to the next entry in the 
list if it fails for any reason.  Note the trailing "||", which is required to 
prevent the script from immediately aborting if the "chain" command fails.

Note that this method will *not* set the "next-server" and "filename" 
variables.  It is possible that your PXE NBP may require these variables to be 
set.  If this is the case, you can use a slightly longer version of the above 

  set filename my-filename
  set next-server my-server1
  chain ${next-server}/${filename} ||
  set next-server my-server2
  chain ${next-server}/${filename} ||
  set next-server my-server3
  chain ${next-server}/${filename} ||
  echo Boot failed
  exit 1


More information about the ipxe-devel mailing list