There’s lots of instructions out there explaining how to set up PXE booting – but most of them assume you’re happy to mess with a perfectly good DHCP configuration. There’s lots of reasons you might not want to do this, but that doesn’t mean you have to forego the convenience of just hitting a key at boot and booting PCs or servers from the network. In this tutorial, we’ll be looking at setting up network booting from a Linux box without touching your existing DHCP infrastructure. This will work even if you’re using something else entirely for DHCP.
These instructions were originally written for Debian, though they should work equally well with minor tweaks on Ubuntu.
First, you want to install dnsmasq:
apt-get install dnsmasq
(use sudo if you’re not logged in as root!)
Once you’ve done that, you need to configure dnsmasq to act as a Proxy DHCP server. I’ve put this in a separate configuration file in /etc/dnsmasq.d/pxe.conf:
# Put your own DHCP range in here. dhcp-range=192.168.42.0,proxy pxe-prompt="Press F8 for menu", 20 pxe-service=x86PC, "Boot from local disk" pxe-service=x86PC, "Install Linux", pxelinux enable-tftp # This can be anywhere you like. tftp-root=/srv/tftp tftp-secure
Make sure /srv/tftp exists:
mkdir -p /srv/tftp
That’s the hard work out of the way. All we need now is something that can be served up via tftp, and the nice people behind Debian provide that for us:
cd /srv/tftp wget ftp://ftp.debian.org/debian/dists/stable/main/installer-i386/current/images/netboot/netboot.tar.gz tar zxf netboot.tar.gz rm netboot.tar.gz chown -R dnsmasq /srv/tftp
Restart dnsmasq, check it’s started up using ps:
service dnsmasq restart ps -ef | grep dnsmasq
Now you can test. Boot a PC from the network; if it all goes according to plan, you should see something like this:
Press F8 as per the instructions and you’ll be prompted to choose between booting from the local disk or installing Linux. Choose install Linux and you’ll drop into the Debian installer menu:
From here, you can install Debian as per usual.