Xen-test-debian
Xen HOWTOS for Debian
Contents
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 = [ 'file:/root/xen-test/domains/test/disk.img,sda1,w', 'file:/root/xen-test/domains/test/swap.img,sda2,w' ] 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 = [ 'file:/usr/share/vnuml/filesystems/root_fs_tutorial-0.4.1-xen,sda1,w', 'file:/root/xen-test/domains/test/swap.img,sda2,w' ]
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).
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
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?