Ben Hutchings announced that the Debian kernel team are now building Xen flavoured kernels for Debian/Unstable [1]. Thanks to Max Attems and the rest of the kernel team for this and all their other great work! Thanks Ben for announcing it. The same release included OpenVZ, updated DRM, and the kernel mode part of Nouveau – but Xen is what interests me most.
I’ve upgraded the Xen server that I use for my SE Linux Play Machine [2] to test this out.
To get this working you first need to remove xen-tools as the Testing version of bash-completion has an undeclared conflict, see Debian bug report #550590.
Then you need to upgrade to Unstable, this requires upgrading the kernel first as udev won’t upgrade without it.
If you have an existing system you need to install xen-hypervisor-3.4-i386 and purge xen-hypervisor-3.2-1-i386 as the older Xen hypervisor won’t boot the newer kernel. This also requires installing xen-utils-3.4 and removing xen-utils-3.2-1 as the utilities have to match the kernel. You don’t strictly need to remove the old hypervisor and utils packages as it should be possible to have dual-boot configured with old and new versions of Xen and matching Linux kernels. But this would be painful to manage as update-grub doesn’t know how to match Xen and Linux kernel versions so you will get Grub entries that are not bootable – it’s best to just do a clean break and keep a non-Xen version of the older kernel installed in case it doesn’t initially boot.
A apt-get dist-upgrade operation will result in installing the grub-pc package. The update-grub2 command doesn’t generate Xen entries. I’ve filed Debian bug report #574666 about this.
Because the Linux kernel doesn’t want to reduce in size to low values I use “xenhopt=dom0_mem=142000” in my GRUB 0.98 configuration so that the kernel doesn’t allocate as much RAM to it’s internal data structures. In the past I’ve encountered a kernel memory management bug related to significantly reducing the size of the Dom0 memory after boot [3].
Before I upgraded I had the dom0_mem size set to 122880 but when running Testing that seems to get me a kernel Out Of Memory condition from udev in the early stages of boot which prevents LVM volumes from being scanned and therefore prevents swap from being enabled so the system doesn’t work correctly (if at all). I had this problem with 138000M of RAM so I chose 142000 as a safe number. Now I admit that the system would probably boot with less RAM if I disabled SE Linux, but the SE Linux policy size of the configuration I’m using in the Dom0 has dropped from 692K to 619K so it seems likely that the increase in required memory is not caused by SE Linux.
The Xen Dom0 support on i386 in Debian/Unstable seems to work quite well. I wouldn’t recommend it for any serious use, but for something that’s inherently designed for testing (such as a SE Linux Play Machine) then it works well. My Play Machine has been offline for the last few days while I’ve been working on it. It didn’t take much time to get Xen working, it took a bit of time to get the SE Linux policy for Unstable working well enough to run Xen utilities in enforcing mode, and it took three days because I had to take time off to work on other projects.
It’s worth pointing out that one can just install the new Xen hypervisor the new paravirt_ops xen kernel, without upgrading the rest of the userland and risking causing various other problems.
Instead of “xenhopt=dom0_mem=142000†you can use “xenhopt=dom0_mem=142M” (“xenhopt=dom0_mem=138M”?) for better reading.
Also in my lenny setup i set “(dom0-min-mem 0)” in /etc/xen/xend-config.sxp to be save there will no down sizing of ram.
Josip: If you install the new hypervisor then you need the new xen-utils-3.4 package which depends on libgcrypt11, libxenstore3.0, zlib1g, python-central, and xen-utils-common that are newer than the Lenny versions. After that you are well on the way to a full upgrade to Testing.
Markus: I can’t use dom0-min-mem 0, for my Play Machine I’m running Xen with 256M of physical RAM. It’s impossible to give the DomU enough RAM for good performance without having less RAM for the Dom0 than is sufficient for booting the system. For my more serious Xen servers I usually leave the dom0-min-mem at it’s default setting which prevents it from decreasing too much.