A Retrospective: Xen Paravirtualization Part 1 – CentOS 5 and 6

Introduction

A blog post about CentOS 5 or 6 isn’t going to excite anyone or show up in many intentional Google searches. CentOS 5 and 6 are 18 and 14 years old respectively in 2025 and are mostly viewed as insecure at this point; they hasn’t reached the point of being “retro cool” yet (and may never be). However, for me there will always be a certain amount of nostalgia for them, CentOS 5 in particular: it and related Enterprise Linux 5 variants were the first Linux distributions I used in my work—previously I had only used Ubuntu, Debian, and Fedora on the desktop. My first home server also ran CentOS 5, with 6-8 VMs running on a Xen hypervisor in paravirtualized mode. Paravirtualization at the time provided better performance than full virtualization (VMWare ESXi, KVM, VirtualBox, etc.) and allowed running VMs on CPUs that didn’t have virtualization extensions. My main home server at the time supported hardware virtualization, but I was also able to run Xen on some spare systems that did not, such as a Pentium D desktop with only 2GB of RAM. My impressions at the time were that Xen was lightweight, resilient, and easy to configure. The bridged network functioned right out of the box and the machine config files consisted of only a few lines. Thus it was with some reluctance that I eventually rebuilt my lab with CentOS 6 and KVM. Since then, I’ve always been a KVM user and my experience with it has been mostly positive. Still, my perpetual dislike of libvirt’s XML files and excessive number of virsh subcommands has made me nostalgic for my first lab setup with Xen. In this post I will fire up Xen once again on both CentOS 5 and 6, while doing a little bit of scripting to make it more interesting.

Continue reading

Configuring Ubuntu and Debian as a router

Recently, for my home network, I transitioned from using a standard home router running DD-WRT to a setup with a separate managed switch, wireless access point, and a combination router/server running Ubuntu 24.04. The “router” is a basic x86-64 mini-PC with two network interfaces, purchased for about $100. The internal interface hosts three VLANs (internal, lab, and guest) and provides DHCP, DNS, and LDAP services. I prefer this setup to something like OPNsense, because I can manage everything with the command line and Ansible. If the cheap PC dies an early death or I want to switch to something newer, I can simply install Ubuntu on the replacement system, configure the NICs, and run the Ansible project to configure everything else. It also gives me a low-power-usage PC that I can run other services on in containers or even virtual machines. In this blog post I run through the steps for configuring a router like this, with both Ubuntu and Debian.

Continue reading

Installing Debian on an old Buffalo NAS

A while back I took home a 2011-vintage Buffalo TeraStation TS-XEL that was destined to be e-wasted. I initially used it in its stock configuration, deploying it as a “junk” NFS server to store software and act as a storage back-end for a test Proxmox cluster. I quickly grew tired of it, however, as the OS on it was outdated and used deprecated protocols. I also prefer to manage systems through the command line and this NAS only could be managed through its web interface. After the initial novelty of having a “new” piece of hardware to play with wore off, I deposited it in the closet with the other pieces of hardware that get taken out every few years.

Continue reading

Exploring Red Hat Linux 6.2 in 2025

Linux back when a 1999 Camry wasn’t a beater

Recently I found some ISOs out on the Internet Archive for Red Hat Linux 6.2—not the Red Hat Enterprise Linux we’re more familiar with today, but instead the the original version released by Red Hat. The reason I was happy to find this version was because it was the last one released for the SPARC architecture. Since I’ve been experimenting a lot with Sun Microsystems products, I was eager to try this out in the QEMU SPARC emulator (which I recently used to run Solaris 8/9 in). However, I first installed the x86 version of this OS in Virtual Box.
Continue reading

Running Solaris 8 and 9 under the QEMU SPARC32 Emulator

One of the really cool features of QEMU (Quick Emulator) is that it can emulate CPU architectures other than x86-64, such as PowerPC, AArch64, and SPARC. In my experimentation with Solaris, I’ve really wanted to try the SPARC and SPARC64 emulators with Solaris, and do something similar to this article: Build your own SPARC workstation with QEMU and Solaris. However, I really wanted to do this with Solaris 8/9/10, as 2.6 is more limited in what you can do with it. In particular, I wanted to run Solaris 8 in this, as installing 8 in VirtualBox is a hassle, with barely-functional graphics. In the end, I was only able to run Solaris in the 32-bit emulator, which emulates a SPARCstation 5 by default. The SPARC64 emulator can only run BSD and Linux variants, and not Solaris. In the future, I intend on writing another post on the SPARC64 emulator.

Continue reading

Installing AlmaLinux 9 on a DL360 G7 and other stuff

Recently I borrowed a pair of HP DL360 G7 servers from the office that had been decommissioned and are eventually destined for the e-waste bin. The servers are from 2011 and have little practical use in 2025, either in production or as lab systems, as they are slow and power-hungry. Still, I thought they would be fun to tinker with at home for at least a little while.

The latest and greatest from 2011

The top server has two CPUs and 72GB of RAM, while the bottom one has one CPU and only 4GB of RAM. The top one has a bunch of old laptop SATA drives in it (two of which are dead), while the bottom one has HP Enterprise SAS drives, all of which still function, in a RAID 1+0 array. I started with the bottom one.

Continue reading