Upgrading from Xen 4.4 to Xen 4.5 on Arch Linux

UPDATE 4/26/15: After upgrading my system with pacman -Syu, xen quit working due to incompatibility with gnutls and nettle, among other things. 

Attempting to load xen gave me a confusing error message about failure to load a device model. My /var/log/xen/qemu-dm-*.log files showed that qemu was looking for outdated libraries.

I downgraded the packages with: pacman -U /var/cache/pacman/pkg/pkgname-olderpkgver.pkg.tar.gz

About two months ago, Xen 4.5 was released. Since I’ve had a few nagging problems with Xen 4.4, namely the inability to reboot my Windows guest without a crash, and the inability to assign > 2GB memory to my system, I thought I’d give things a shot. Plus, this post from tritron4 indicates upgrading to the Xen 4.5 git tree worked for him.

Unfortunately, the Xen 4.5 release isn’t available on AUR yet, and when I tried the xen-git and xen-4.5-git AUR packages, neither one worked for me.

UPDATE 4/26/15: Xen 4.5 is now available on AUR, but some users are reporting compatibility problems with gnutls, and a patch is not yet included in the PKGBUILD.

So I decided to do things the old-fashioned way, downloading the source from xen.org and compiling it myself. I was a bit  apprehensive, since I know that the Arch Xen packages include a lot of patches, and testing notes from kantras and others indicated that some changes had to be made to make things “perfect” for Arch, whatever that means.

But in the end, I threw caution to the wind, and was rewarded with a working Xen 4.5 distribution, without too much difficulty. Aside from following the instructions in the Xen source archive, Here’s what I had to do to upgrade Xen, overwriting my 4.4 installation. Most of this is taken straight out of the xen-git PKGBUILD:

  1. I had to set PYTHON=/usr/bin/python2 for all configure and make lines.
  2. I used the following configure options – not even sure if this was necessary:
    ./configure --prefix=/usr --localstatedir=/run --disable-multilib --enable-spice --enable-usb-redir --enable-stubdom  --enable-debug  --enable-xen-pci-passthrough --enable-bluez --enable-libiscsi --enable-vhost-net --enable-linux-aio --enable-vde --enable-nptl --enable-libiscsi --enable-smartcard-nss --enable-targets=X86_64-pep
  3. I had to update GRUB.
  4. After rebooting, I wasn’t able to load my DomU because Xen couldn’t access my windows partition. I had to manually enable these services in systemctl:
  5. systemctl enable xen-qemu-dom0-disk-backend.service
  6. systemctl enable xen-init-dom0.service

 

After these steps, I was able to load my Windows 8.1 guest just as before; except that now, I was able to assign 8GB of memory without the system freezing, and most of the time, I can shut down/restart/reset windows without having any problems.

All my games worked great, just like before – except for one: Flight Simulator X. In the next post, I talk about how I fixed this.