this is obsolete doc -- see http://doc.nethence.com/ instead

RHEL5 XEN dom0 

with XEN3 hypervisor 

 

 

Installation 

During installation, check the Virtualization and Gnome sets. Note. Gnome provides the gtk theme for virt-manager. But you can still install the group manually, 

#yum grouplist
yum -y groupinstall Virtualization

 

#yum search kernel | grep ^kernel
yum -y install \
kernel \
kernel-headers \
kernel-devel \
kernel-xen-devel
yum -y update \
kernel \
kernel-headers \
kernel-devel \
kernel-xen-devel

 

Check you've got the same version for, kernel, devel and headers, 

rpm -qa | grep kernel

e.g., 

kernel-xen-2.6.18-194.32.1.el5
kernel-xen-devel-2.6.18-194.32.1.el5
kernel-headers-2.6.18-194.32.1.el5

and check the corresponding kernel modules are there, 

ls -l /lib/modules/

note. e.g. 2.6.18-194.32.1.el5xen 

 

Make sure GRUB boots the XEN kernel by default, 

cd /boot/grub/
cp grub.conf grub.conf.dist
vi grub.conf

e.g., 

default=1
timeout=1

 

title CentOS (2.6.18-194.32.1.el5)
        root (hd0,0)
        kernel /vmlinuz-2.6.18-194.32.1.el5 root=/dev/hda3 md=
        initrd /initrd-2.6.18-194.32.1.el5.img
title CentOS (2.6.18-194.32.1.el5xen)
        root (hd0,0)
        kernel /xen.gz-2.6.18-194.32.1.el5 dom0_mem=128M
        module /vmlinuz-2.6.18-194.32.1.el5xen root=/dev/hda3 md=
        module /initrd-2.6.18-194.32.1.el5xen.img

Note. adding dom0_mem=128M to the kernel /xen line 

Note. no need for dom0-min-mem, which will be defined into xend-config.sxp 

 

 

Configuration 

Clean up the config file, 

cd /etc/xen/
mv xend-config.sxp xend-config.sxp.dist
sed '/^#/d; /^$/d' xend-config.sxp.dist > xend-config.sxp
vi xend-config.sxp

change dom0-min-mem and dom0-cups, 

(dom0-min-mem 64)
(dom0-cpus 1)

 

For domU but also for dom0, disable intel microcode, 

chkconfig --list | grep microcode_ctl
chkconfig microcode_ctl off

 

Make sure 'xend' and 'xendomains' are enabled, 

chkconfig --list | grep xen

 

Eventually disable iptables and selinux, 

yum install system-config-securitylevel-tui
system-config-securitylevel-tui
chkconfig ip6tables off
chkconfig iptables off

and make sure there's no desktop-style network manager at work, 

chkconfig --list | grep -i networkmanager

 

 

Ready to go 

You can now reboot the host as a xen capable dom0, 

sync
shutdown -r now

 

 

System configuration 

Once booted try to ping the dom0 from the network. Note. if you're using XEN inside VMware ESX, make sure you configured the virtual switch and lan with promiscuous mode enabled. 

 

Check peth0 and vif0.0 are in bridge 'br0', and check port 1 of the ARP table which should correspond to peth0 (empty MAC with arp disabled) and eth0 (MAC copied to it by the bridge script), 

brctl show
brctl showmacs br0 | grep '^  1'

 

Check status of IP forwarding, 

cat /proc/sys/net/ipv4/ip_forward

either disable it or let the iptable rules showed above. 

Note. you can't just save those rules to sysconfig/iptables which are retro compatible with a non bridge configuration. Just like sysconfig/network-scripts/ifcfg-eth*. 

 

Make sure you're running a XEN kernel, the XEN daemon, udev and HAL daemons are running, 

uname -r
service xend status
ps aux | grep udevd
#ps aux | grep hald

note. the latter should return two lines, hald and hald-runner 

also check for hotplug script rules, which for "tap", "vbd" and "vif" devices, 

ll /etc/udev/rules.d/xen-backend.rules

 

Make sure you have a large mount point or shared disk filesystem (GFS, OCFS) to store the virtual disks, 

df -h

Note. we're using "/data". 

 

Higher the possible loop devices (defaults to 8 on Redhat systems), 

vi /etc/modprobe.conf

like, 

options loop max_loop=50

apply, 

rmmod loop
modprobe loop

 

Set the time on dom0, 

ntpdate ntp.obspm.fr

or, 

date -s YYYYMMDD
date -s HH:MM

Note. domU's date is synced w/ dom0's one, even instantly if changed, at least on paravirtualized guests. 

 

Check the XEN daemon logs, 

tail -F /var/log/xen/xend.log

and for screen, 

cat >> ~/.screenrc <<EOF9
screen -t "xen" 1 tail -F /var/log/xen/xend.log
EOF9