Xen-test-debian

Installing Xen basic packages in Debian
Udpate the APT repository

apt-get update

Install the Xen hypervisor. Note that the version may have changed: search for the current one using 'apt-get search xen-hypervisor'. Default hypervisor supports up to 4GB of physical RAM, the -pae version up to 64GB of physical RAM (we are considering the former here).

apt-get install xen-hypervisor-3.0.3-1-i386

Install the Xen kernel:

apt-get install linux-image-xen-686

Install Xen tools:

apt-get install xen-tools

Install the libc6-xen (I'm not sure what it's for or even if this installation could be omitted):

apt-get install libc6-xen

All packages in the same command:

apt-get install xen-hypervisor-3.0.3-1-i386 linux-image-xen-686 xen-tools libc6-xen

Create the first virtual machine
Create a working directory (e.g., /root/xen.test)

mkdir /root/xen-test

Edit the /etc/xen-tools/xen-tools.conf file. The gateway= value used here could be not appropiated for you.

dir   = /root/xen-test size  = 1Gb memory = 32Mb swap  = 128Mb fs    = ext3 dist  = sarge image = sparse gateway = 192.168.247.2 netmask = 255.255.255.0 passwd = 1 kernel = /boot/vmlinuz-2.6.18-3-xen-686 initrd = /boot/initrd.img-2.6.18-3-xen-686 mirror = http://ftp.us.debian.org/debian/

Create the first virtual machine (it will take a LONG time). Use a proper IP for you.

xen-create-image --hostname=test --ip=192.168.247.140 --passwd --debootstrap

This creates the necesary files under /root/xen-test. However, the key file descring the virtual machine is /etc/xen/test.cfg. What xen-create-image has put in test.cfg is the following:

kernel = '/boot/vmlinuz-2.6.18-3-xen-686' ramdisk = '/boot/initrd.img-2.6.18-3-xen-686' memory = '32' root   = '/dev/sda1 ro' disk   = name   = 'test' vif    = [ 'ip=192.168.247.140' ] on_poweroff = 'destroy' on_reboot  = 'restart' on_crash   = 'restart'

In order to boot the machine (note that you don't have to specify the complete pathname of test.cfg, it seems that xm looks in /etc/xen by default).

xm create test.cfg -c

It also can take a while to boot the virtual machine. The '-c' is to get the booting output and loging in the same console where xm is invoked (this is very useful to know when the virtual machine has been booted). To come back to the host enviroment just press Ctrl+].

Uselful management operations
To list active domains:

xm list

To connect to the virtual machine console:

xm console test

To finish with the virtual machine:

xm destroy test

Using VNUML filesystems
Root filesystem prepared to work with VNUML also work with Xen. In order to use a VNUML filesystem just edit the disk line in /etc/xen/test.cfg so it looks like:

disk   =

WARNING: in order to avoid changes in the root_fs file, I recommend you to use a copy and not directly the one you are using for your COW-ed based VNUML scenarios.

Maybe you get a lot of warning messages like the following one:

4gb seg fixup, process syslogd (pid 1107), cs:ip 73:b7efc5f0 4gb seg fixup, process syslogd (pid 1107), cs:ip 73:b7efc570 4gb seg fixup, process klogd (pid 1113), cs:ip 73:b7e2e5f0 4gb seg fixup, process klogd (pid 1113), cs:ip 73:b7eafd10 printk: 38 messages suppressed. 4gb seg fixup, process named (pid 1128), cs:ip 73:b7bc5c1c

In order to avoid them, see the Troubleshooting section below (TODO)

Troubleshooting


If you have problems related with memory when booting virtual machines, you may find useful the dom0_mem kernel switch. Edit your GRUB configuration so your kernel line looks like this:

kernel /boot/xen-3.0.3-1-i386.gz dom0_mem=512M

changing 512 for the desired memory in your case, of course. NOte that if you use a dom0_mem value to close to your actual physical RAM memory you will get a panic error when booting the host: as a hint dom0_mem<= phy_mem-32M (assuming the Xen hypervirso consumes less than 32MB).

If you run Xen in a VMware virtual machine using NAT, you should use an special MAC prefix for your Xen virtual machine: 00:0C:29. Edit the /etc/xen/test.cfg file and edit the vif line so looks (for example):

vif = [ 'mac=00:0C:29:11:22:33, ip=192.168.247.140']

the problem is quite similar to the one described in the following post in the vnuml-users list: https://lists.dit.upm.es/pipermail/vnuml-users/2005-September/000204.html

Although the xen-create-image command --ip options maps to

vif = [ 'ip=192.168.247.140' ]

the interface is not brought up (neither assigned an IP address) during the 'xm create'. Actually, the 'man xmdomain.cfg' shows:

vif An array of virtual interface stanzas in the form: vif = [ "stanza1", "stanza2", ... ]          Each stanza specifies a set of name = value options separated by           commas, in the form: "name1=value1, name2=value2, ..." OPTIONS bridge The network bridge to be used for this device. This is espe- cially needed if multiple bridges exist on the machine. mac The MAC address for the virtual interface. If mac is not spec- ified, one will be randomly chosen by xen with the 00:16:3e vendor id prefix.

In summary, that ip is not a valid option in vif. Maybe is was used in a previous Xen version but xen-create-image has not been correctly updated to the new options set?



Uselful references
http://www.debian-administration.org/articles/396 http://wiki.xensource.com/xenwiki/XenNetworking