One day I got an old 1-unit Intel server from my friends. It’s dual Xeon 2.8 GHz 32-bit machine from early 2000s and it supports only 4 GB RAM. There is a hardware RAID with 2 HDDs which were quite fast for that time. The server was used in some serious networking tests, and I was told that the hardware is nearing the end of it’s life.

Ragnar server

I thought I’d try to turn it into a virtual host machine, maybe test some VoIP stuff or at least just play with it. But I never had quite enough time to do anything about it and the server ended up dusting in my closet for over a year.

So, last week I finally got my hands on it. I never tried to boot this monster and was not even sure if it actually works. It worked, but there was no OS on it. “Ubuntu!”, I thought, stuck a bootable flash-drive into a USB port. After several minutes of constantly rebooting and banging my head against its BIOS, I finally gave up. It looked like the server could not recognize my USB 2.0 drive at all.

“Alright, maybe it can do PXE-boot”, I thought while looking at its boot messages. I used PXE boot back in the university to boot same OS on all computers in a lab.

In theory in order to boot a system with PXE you need a local DHCP-server which can provide a bootable image upon client’s request. I did not want to go over the lengthy path that they propose in Ubuntu wiki. I have an Asus RT-AC66 router flashed with a custom Asuswrt-Merlin firmware and it supports not only DHCP, TFTP but also it provides PXE boot for network devices!

So all I needed to do:

  • download the most recent image of Ubuntu suitable for network boot, put it on my flash drive,
  • plug that flash drive into my router
  • enable PXE boot in router configs

In case anyone wants to repeat my setup, here is what exactly you need to do to configure the router:

  1. Make sure you enable JFFS on your router.
  2. Login to your router with SSH
  3. Create file /jffs/configs/dnsmasq.conf.add and paste this:
# index file which will start boot
dhcp-boot=pxelinux.0

# Enable dnsmasq's built-in TFTP server
enable-tftp

# put here the full path to your netboot image on a flash-drive
tftp-root=/tmp/mnt/UUI/netboot

Note that the flash-drive is automatically mounted in /tmp/mnt, and in my case, UUI is the name of the flash-drive. Change this path accordingly.

That’s all! Now you can boot anything on your network, provided there is support for PXE on your devices.

My server happily accepted network boot option and I installed Ubuntu from a flash-drive plugged into my router!

The only problem is that it’s so noisy that I hardly can sit in the same room when it’s on. >_<