Since my drivers are not signed, you will need to temporarily disable signature checking for yum.
# vi /etc/yum.conf
Make sure it says gpgcheck=0
Download the file and untar it.
# tar xvzf xen-3.2.0-CentOS5.2.tar.gz
xen-3.2.0-CentOS5.2/
xen-3.2.0-CentOS5.2/xen-3.2.0-0xs.x86_64.rpm
xen-3.2.0-CentOS5.2/xen-libs-3.2.0-0xs.x86_64.rpm
xen-3.2.0-CentOS5.2/xen-devel-3.2.0-0xs.x86_64.rpm
# cd xen-3.2.0-CentOS5.2
Install the RPMs.
#yum install -y xen-3.2.0-0xs.x86_64.rpm xen-libs-3.2.0-0xs.x86_64.rpm xen-devel-3.2.0-0xs.x86_64.rpm
It will download a bunch of dependencies and install them. Among them will be a new kernel - kernel-xen.
# vi /etc/yum.conf
Set gpgcheck back to the old value: gpgcheck=1 if it was originally 1.
The only problem at this point is that yum for some reason doesn't update the boot entry, so we have to do this manually.
# vi /boot/grub/menu.lst
# grub.conf generated by anaconda
#
# Note that you do not have to rerun grub after making changes to this file
# NOTICE: You have a /boot partition. This means that
# all kernel and initrd paths are relative to /boot/, eg.
# root (hd0,0)
# kernel /vmlinuz-version ro root=/dev/VolGroup00/LogVol00
# initrd /initrd-version.img
#boot=/dev/sda
default=1
timeout=5
splashimage=(hd0,0)/grub/splash.xpm.gz
hiddenmenu
title CentOS (2.6.18-92.1.6.el5xen)
root (hd0,0)
kernel /xen.gz-2.6.18-92.1.6.el5
module /vmlinuz-2.6.18-92.1.6.el5xen ro root=/dev/VolGroup00/LogVol00
module /initrd-2.6.18-92.1.6.el5xen.img
title CentOS (2.6.18-92.el5)
root (hd0,0)
kernel /vmlinuz-2.6.18-92.el5 ro root=/dev/VolGroup00/LogVol00
initrd /initrd-2.6.18-92.el5.img
We want to update the CentOS (2.6.18-53.1.21.el5xen) entry, and set it to use the proper kernel - xen.gz-3.2
This is what my updated menu.lst looks like - yours may differ. I have also set the default to 0, so that it boots my xen kernel automatically.
# grub.conf generated by anaconda
#
# Note that you do not have to rerun grub after making changes to this file
# NOTICE: You have a /boot partition. This means that
# all kernel and initrd paths are relative to /boot/, eg.
# root (hd0,0)
# kernel /vmlinuz-version ro root=/dev/VolGroup00/LogVol00
# initrd /initrd-version.img
#boot=/dev/sda
default=0
timeout=5
splashimage=(hd0,0)/grub/splash.xpm.gz
hiddenmenu
title CentOS (2.6.18-92.1.6.el5xen)
root (hd0,0)
kernel /xen.gz-3.2
module /vmlinuz-2.6.18-92.1.6.el5xen ro root=/dev/VolGroup00/LogVol00
module /initrd-2.6.18-92.1.6.el5xen.img
title CentOS (2.6.18-92.el5)
root (hd0,0)
kernel /vmlinuz-2.6.18-92.el5 ro root=/dev/VolGroup00/LogVol00
initrd /initrd-2.6.18-92.el5.img
Once you reboot you should automatically boot into the xen kernel and be able to create virtual machines.