Xen from Backports on Debian Sarge

Posted by Aike on Fri 21 Jul 2006 at 15:38

There is a great howto about installing Xen on Debian Unstable. It is really easy to do and it runs fine. Nevertheless, on production servers, that's not an optimal solution. Debian Unstable has too many updates and things change too often. On production machines, a Xen host system should be stable, secure and should not need much attention. That is where Sarge comes in. If you pull the Xen packages from backports and install them on Debian stable you've got the best of both worlds. Let's do so!

Before you start with this howto, you need to find yourself some hardware and install Sarge the way you like it. I used a Sun Fire X2100 with 4GB of ram and 2 SATA disks in software raid1.

Add backports to your apt sources and set the right preferences.

# vi /etc/apt/sources.list
deb http://www.backports.org/debian/ sarge-backports main

If /etc/apt/preferences does not exist, create it.

# vi /etc/apt/preferences
Package: *
Pin: release a=sarge-backports
Pin-Priority: 200

Package: xen-3.0
Pin: release a=sarge-backports
Pin-Priority: 999

Package: linux-2.6
Pin: release a=sarge-backports
Pin-Priority: 999

Package: xen-tools
Pin: release a=sarge-backports
Pin-Priority: 999

Package: udev
Pin: release a=sarge-backports
Pin-Priority: 999

Package: lsb
Pin: release a=sarge-backports
Pin-Priority: 999

Package: module-init-tools
Pin: release a=sarge-backports
Pin-Priority: 999

Package: grub
Pin: release a=sarge-backports
Pin-Priority: 999

Now update your sources:

# apt-get update && apt-get dist-upgrade

If that works, you're ready to start installing packages. If it doesn't, there is more information about backports on their website: http://www.backports.org.

Since there are some dependency problems with grub and mdadm we pull them, and some other packages, from backports.

# apt-get install grub/sarge-backports
# apt-get install makedev/sarge-backports
# apt-get install lsb-base/sarge-backports
# apt-get install mdadm/sarge-backports

The next things to install are the Xen-hypervisor and the xen-utils.

# apt-get install xen-hypervisor-3.0-i386 xen-utils-3.0

Pick the right kernel. A 686 for P4 and Xeon machines and K7 for Athlon and Opteron machines.

# apt-get install linux-image-2.6.16-2-xen-686

Remove hotplug because we're changing to udev!

# dpkg --purge hotplug
# apt-get install bridge-utils xen-tools/sarge-backports sysfsutils
# mv /lib/tls/ /lib/tls.disabled

You need a new initrd. mkinitramfs can do that trick for you.

# cd /boot
# mkinitramfs -o /boot/initrd.img-2.6.16-2-xen-686 2.6.16-2-xen-686

For this machine, we need a k7 kernel:

# apt-get install linux-image-2.6.16-2-xen-k7
# cd /boot
# mkinitramfs -o /boot/initrd.img-2.6.16-2-xen-k7 2.6.16-2-xen-k7

We need to setup our bootloader to use the new Xen kernel. Add something like the following to your /boot/grub/menu.lst file:

# vi /boot/grub/menu.lst
title Xen 3.0 / XenLinux 2.6-686
kernel /boot/xen-3.0-i386.gz
module /boot/vmlinuz-2.6.16-2-xen-686 root=/dev/md0 ro
module /boot/initrd.img-2.6.16-2-xen-686

or the with k7 if you have an Athlon or Opteron machine:

title Xen 3.0 / XenLinux 2.6-k7
kernel /boot/xen-3.0-i386.gz
module /boot/vmlinuz-2.6.16-2-xen-k7 root=/dev/md0 ro
module /boot/initrd.img-2.6.16-2-xen-k7

The xen daemon needs some tweaks, open the config file and make sure that you enable (network-script network-bridge) (line 73), (vif-script vif-bridge) (line 104).

# vi /etc/xen/xend-config.sxp

Restart the Xen daemon to check if the new settings are accepted:

# invoke-rc.d xend restart

# reboot

In most cases the bridge will work after a reboot, but it's easy to check. Peth0 and vif0.0 should be in the interfaces list. Peth0 is the physical network device and vif0.0

# brctl show

You are ready to setup and start your xens! Setting up xens has been covered many times all over the net. The easiest way is probably to use the xen-tools created by Steve. Although they are pretty straightforward, there is some documentation on how to use them at the end of this article: http://www.debian-administration.org/articles/396

There are a few things you need to pay attention to when setting up xens. The first is to copy the modules to the xen guest. For instance, you could mount your first xen on /mnt/xen1 and copy the modules:

# cp -a /lib/modules/2.6.16-2-xen-k7/ /mnt/xen1/lib/modules/

The config file is the second thing. The ramdisk option is turned off by default but required to start a xen! For example:

# vi /etc/xen/xen1.cfg
kernel = '/boot/vmlinuz-2.6.16-2-xen-k7'
memory = 128
name = 'xen1'
disk = [ 'phy:/dev/mapper/xens-xen1,sda1,w' ]
root = "/dev/sda1 ro"
extra = '4'
ramdisk = "/boot/initrd.img-2.6.16-2-xen-k7"
vif = [ 'vifname=vif_xen1,bridge=xenbr0' ]

If you need to upgrade the Xen kernel, don't forget to update the configuration files for the guests, the initrds and the modules on the Xen guests!

There is a copy of this howto on my company's website: http://www.virtualconcepts.nl/xenbackports.php

Good luck!


This article can be found online at the Debian Administration website at the following bookmarkable URL:

This article is copyright 2006 Aike - please ask for permission to republish or translate.