Building my own Xen images

In light of a few issues I’ve discovered with this post, I wouldn’t suggest that you use it as a guide. However, I’m leaving it up anyway, in case it is of use to someone. Instead, I recommend running pre-built cloud images from the OS vendor. I also recommend running using KVM for Enterprise Linux instead of Xen.

In my last post on Xen, I discussed using pre-built cloud images from Debian and AlmaLinux to create Xen virtual machines. These are convenient to use, but might not be ideal for certain use cases. For example, you might want certain packages to be included or excluded from your image, minimizing or even eliminating the role of cloud-init. Or for security reasons, you might not want to run an image from the internet on your local network. In this post, I will discuss how I built Xen images for AlmaLinux and Debian.

Continue reading

Xen Paravirtualization Part 2 – Debian

Introduction

In my last post, I explored running the Xen hypervisor on two deprecated versions of CentOS. In this post, I return to the present, setting up Xen on Debian 12 and 13, while using some of the techniques learned in the previous post. As is the case with a lot of my posts, this will involve a variety of topics, including Linux, networking, Perl, cloud-init, and more.

Continue reading

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 also haven’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 these operating systems, 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