PXE Boot Server Guide: Magic Dust for Network Boot

Boot DevStack from a PXE server to a RAM disk.

Prerequisites Hardware & OpenWRT


The whole point of this exercise is to have a highly portable boot server, so using a small router with a USB port is the desired platform. This guide uses a Buffalo WZR-HP-G300NH as an example, but it is easily generalized for other supported platforms. See for more.


Any recent ‘Backfire’ build of OpenWRT will work for the boot server project. We build from trunk and have made the images available at

Installation bit blasting

Install the Image

This process follows the OpenWRT doc OEM Install to tftp the new image onto the router. You need a computer to set up the router, we assume it is a recent Linux or OS/X installation.

  • Get openwrt-ar71xx-wzr-hp-g300nh-squashfs-tftp.bin

  • Connect computer to LAN port 4 (closest to WAN port)

  • Set computer interface to IP address in the

  • Add static arp entry for router

    arp -s <mac-address>
  • Start TFTP transfer attempt

    rexmt 1
    timeout 60
    put openwrt-ar71xx-wzr-hp-g300nh-squashfs-tftp.bin
  • Power on router. Router will reboot and initialize on

  • Delete static arp entry for router

    arp -d
  • Set computer to DHCP, connect and telnet to router and set root password.

Configure the Router

  • Update /etc/opkg.conf to point to our repo:

    src/gz packages
  • Configure anon mounts:

    uci delete fstab.@mount[0]
    uci commit fstab
    /etc/init.d/fstab restart
  • Reset the DHCP address range. DevStack will claim the upper /25 of the router’s LAN address space for floating IPs so the default DHCP address range needs to be moved:

    uci set dhcp.lan.start=65
    uci set dhcp.lan.limit=60
    uci commit dhcp
  • Enable TFTP:

    uci set dhcp.@dnsmasq[0].enable_tftp=1
    uci set dhcp.@dnsmasq[0].tftp_root=/mnt/sda1/tftpboot
    uci set dhcp.@dnsmasq[0].dhcp_boot=pxelinux.0
    uci commit dhcp
    /etc/init.d/dnsmasq restart

Set Up tftpboot

  • Create the /tmp/tftpboot structure and populate it:

    cd ~/devstack
    tools/ /tmp

    This calls tools/ to create a 2GB ramdisk containing a complete development Oneiric OS plus the OpenStack code checkouts.

  • Copy tftpboot to a USB drive:

    mount /dev/sdb1 /mnt/tmp
    rsync -a /tmp/tftpboot/ /mnt/tmp/tftpboot/
    umount /mnt/tmp
  • Plug USB drive into router. It will be automounted and is ready to serve content.

Now return to the RAM disk Guide to kick off your DevStack experience.