Skip to main content
Rackdog supports iPXE chainloading so you can control how a server boots. Instead of using a stock OS install, point Rackdog at your own iPXE script and take over the boot and provisioning process. To use it, select the Custom iPXE OS option when ordering a server and provide your iPXE URL.

How it works

When you provide an iPXE URL, Rackdog wraps it in a chainloading script that runs at boot:
#!ipxe
dhcp || echo "dhcp failed (continuing)"

echo Booting user chain: <your-url>
chain --autofree <your-url> || goto chain_failed

:chain_failed
echo Chain failed. Dropping to shell...
shell
Your URL is substituted into this template at provision time.

What you provide

Supply a publicly reachable URL that returns a valid iPXE script, for example:
https://example.com/boot.ipxe
Some flows also accept an inline script body in place of a URL.

Example script

A minimal script that boots a Linux kernel:
#!ipxe
kernel https://boot.example.com/vmlinuz initrd=initrd.img
initrd https://boot.example.com/initrd.img
boot

When to use it

Reach for iPXE when you need a custom OS image, a preconfigured environment, integration with your own provisioning system, ephemeral or stateless workloads, or just direct control over the boot process. For standard images and faster setup, stick with normal provisioning.

Requirements

  • The iPXE URL must be reachable from the Rackdog network.
  • The script must be valid iPXE syntax.
  • Every asset referenced by the script (kernel, initrd, and so on) must be reachable from the server at boot.

What happens on failure

If chainloading fails, the server prints the error and drops into the iPXE shell. From there you can debug interactively:
ifstat                              # check network state
dhcp                                # retry DHCP
chain https://example.com/boot.ipxe # try a chain by hand

Good habits

  • Host your scripts on infrastructure you trust to be available when servers boot.
  • Keep scripts short and deterministic so boots are predictable.
  • Version or log your boot scripts so you can trace what a server ran.
  • Validate a script locally before pointing production servers at it.