PXE Boot Adventures

The installfest for VTLUUG was this past weekend, and I was tasked with setting up a PXE boot server. For those unfamiliar with this, PXE (Preboot eXecution Environment) is a built-in feature on most newer motherboards that allows users to obtain a bootloader over the network for remote OS installations. The only requirements on the network side are a router capable of directing DHCP clients to a TFTP server and assigning a file path. Client machines can then download a bootloader (e.g. syslinux) image which provides a menu of kernels to choose from. Typically, only the minimum number of required files are stored on the TFTP server, so that clients can download the rest via faster protocols such as NFS or HTTP.

Setting up the server was not all that difficult, but there were a few setbacks. I started with a 64-bit Debian VM on my laptop with atftp-server and followed a basic tutorial I found online. Setup for this was fairly straightforward for the more common distributions with text installers- -you only needed to mount the netinstall ISO, copy the files to the TFTP root (/var/lib/tftp in my case) and make a bootloader entry pointing to the kernel for each OS.

Unfortunately, this did not always work. Distros like Ubuntu with fancy graphical installers could not be served entirely of of TFTP and required an NFS share for the rest of the content on the ISO. This was fairly easy to do with a "nfsroot=192.168.0.154:/srv/nfs" string appended to the kernel line in the syslinux configuration. Eventually, I was able to get most common distributions (Ubuntu, CentOS, Fedora, Debian, etc) up and running on my VM, but Arch would not boot.

Since I needed a PXE server for another organization, I had everything up and running a few weeks in advance, and just rsynced all of my data to another Debian x64 server on campus. I figured I'd just open the TFTP port for the duration of installfest so everyone could boot remotely. The night before installfest, I found out that TFTP booting would not work at all over NATs, becaus e the UDP ports used were chosen randomly and therefore can't be forwarded in advance.

With less than 12 hours remaining, our options were limited to:
  • Setting up an iPXE server and handing out USB drives
  • Making another PXE boot server
  • Hauling a server across campus and up serveral flights of stairs
  • Learning IPsec and setting up a point-to-point VPN
  • Using the original (albeit outdated) VM on my laptop
We ended up picking a combination of these and had a rather interesting network configuration. I brought a router to assign DHCP leases and pointed the TFTP boot server to a bridged interface to my VM. We also setup an iPXE server elsewhere on campus, which was much easier to install (yet unsupported by nearly all motherboards). To solve this, I was able to set a menu entry on my PXE VM to point to the iPXE kernel, and we had a few flash drives with the iPXE bootloader to hand out. Unfortunately, the iPXE installation had intermittent connectivity issues, possibly due to DHCP timeouts on my router's dnsmasq server.

Installfest was a much larger success than in years past, probably due to our promotion at Gobblerfest and spamming of all the listservs. We ended up with 27 successful installations in a few hours, mainly composed of Fedora, Ubuntu, and Arch Linux. Less popular distros included Sabayon, OpenBSD, FreeBSD, DragonflyBSD, and Rebecca Black Linux (yes, that's a thing).



The little PXE boot server that could

A few days ago, the Virginia Tech Linux/UNIX Users Group held its semiannual installfest. Overall, the turnout was excellent; we installed Linux in over 25 environments (in a dual-boot or virtualized environment). This is way up from the astounding four or five installations we had last semester. Though, it didn't all go as smoothly as you would expect. We had many challenges with getting into the room (due to lack of Hokie Passport access), as well as challenges getting the router and DHCP server set up properly. However, once we were able to fix the issues we were having along those lines, we were able to turn our efforts to installing Linux and UNIX on peoples' machines.

There were quite a few people who came, a few of which who were experienced in Linux/UNIX, but were having a few weird problems. For instance, a guy simply had a desktop with a solid state drive, but neither Ubuntu nor Arch would recognize it. After a while of troubleshooting, loading drivers, etc. one of our members was able to solve the problem and successfully install Ubuntu. I, personally, took more of a teaching role throughout the installfest. 

A freshman came in around 30 minutes after we opened shop, and I put Arch on his machine as per his requests (and a few recommendations by Calvin and myself). However, he's never even interfaced with Linux or the shell. So, I took a few hours to show him some of the cool parts of Linux (i.e. user-modifiable config files, mounting partitions under directories, and pipes). He was amazed at the level of freedom that Linux offered, and said that he'd definitely come to our meeting on Thursday.

Overall, I believe the VTLUUG installfest was a big success. We had over 6 times as many installations this semester as last, and everyone seemed to be happy with the outcome. The only issue that we had was lack of pizza; there was promise of free pizza, but because there were so many people there, the 6 or 7 boxes of pizza were literally all consumed within five minutes of the pizza arriving. Aside from that, though everyone had fun, and we were able to help out the Virginia Tech community in our own unique way. :)

The little PXE boot server that could

A few days ago, the Virginia Tech Linux/UNIX Users Group held its semiannual installfest. Overall, the turnout was excellent; we installed Linux in over 25 environments (in a dual-boot or virtualized environment). This is way up from the astounding four or five installations we had last semester. Though, it didn't all go as smoothly as you would expect. We had many challenges with getting into the room (due to lack of Hokie Passport access), as well as challenges getting the router and DHCP server set up properly. However, once we were able to fix the issues we were having along those lines, we were able to turn our efforts to installing Linux and UNIX on peoples' machines.

There were quite a few people who came, a few of which who were experienced in Linux/UNIX, but were having a few weird problems. For instance, a guy simply had a desktop with a solid state drive, but neither Ubuntu nor Arch would recognize it. After a while of troubleshooting, loading drivers, etc. one of our members was able to solve the problem and successfully install Ubuntu. I, personally, took more of a teaching role throughout the installfest. 

A freshman came in around 30 minutes after we opened shop, and I put Arch on his machine as per his requests (and a few recommendations by Calvin and myself). However, he's never even interfaced with Linux or the shell. So, I took a few hours to show him some of the cool parts of Linux (i.e. user-modifiable config files, mounting partitions under directories, and pipes). He was amazed at the level of freedom that Linux offered, and said that he'd definitely come to our meeting on Thursday.

Overall, I believe the VTLUUG installfest was a big success. We had over 6 times as many installations this semester as last, and everyone seemed to be happy with the outcome. The only issue that we had was lack of pizza; there was promise of free pizza, but because there were so many people there, the 6 or 7 boxes of pizza were literally all consumed within five minutes of the pizza arriving. Aside from that, though everyone had fun, and we were able to help out the Virginia Tech community in our own unique way. :)