The final target of this post is to demonstrate how flexible is Ubuntu Karmic Koala Server environment. Build Xen 4.0-rc8 and the most recent stable pvops kernel 2.6.32.10 ( with DRM support). Loading Xen Instance followed by install Ubuntu’s Libvirt environment, providing utility virt-install for creating PV and HVM DomUs, virt-manager completely functional to manage any DomU been built via virt-install. Finally HVM image created by beta version Ubuntu 10.04 Lucid Lynx is utilized to bring up Ubuntu 10.04 Lucid Lynx PV DomU, regardless standard trick with “pygrub” due to Lucid grub2 notation set root=’(/dev/sda,1)’ instead of Karmic’s set root=(hd0,1) doesn’t work any longer. Xen’s 4.0-rc8 “pygrub” was not ready to parse such unexpectedness
First install required packages:
apt-get install libcurl4-openssl-dev \
xserver-xorg-dev \
python2.6-dev \
mercurial gitk \
build-essential \
libncurses5-dev \
uuid-dev gawk \
gettext texinfo bcc \
bridge-utils iasl
Second – build Xen from source
# cd /usr/src
# hg clone http://xenbits.xensource.com/xen-unstable.hg
# cd xen-unstable.hg
Set in Config.mk
PYTHON = python
PYTHON_PREFIX_ARG =
# make install-xen
# make install-tools
# make install-stubdom
Now checkout and build 2.6.32.10 pvops kernel
# git clone git://git.kernel.org/pub/scm/linux/kernel/git/jeremy/xen.git linux-2.6-xen
# cd linux-2.6-xen
# git checkout -b xen/stable-2.6.32.x origin/xen/stable-2.6.32.x
Notice :-
# git checkout origin/xen/master -b xen/master
will result building the most recent 2.31.12 version of pvops kernel. Branch above , actually is not required to be checked out . It’s default branch of “git clone”.However, APIC rework has been committed for 2.6.32.9.
# make menuconfig
and tune kernel to support Xen in Dom0
# make -j4
# make modules_install install
# mkinitramfs -o /boot/initrd-2.6.32.10.img 2.6.32.10
Tuning Config.mk results Xen packages to be placed into /usr/local/lib/python2.6/dist-packages
due to Changeset 19594 in xen-3.4-testing.hg. Otherwise, Xen packages would go to /usr/lib/python2.6/site-packages, which is not default location for python 2.6 on Ubuntu 9.10 ( vs F12 ). Thus you won’t be able to start xend in Dom0.
Add entry to /boot/grub/grab.cfg:-
menuentry “Xen 4.0-rc8 / Ubuntu 9.10 kernel 2.6.32.10 pvops” {
insmod ext2
set root=(hd1,8)
multiboot (hd1,8)/boot/xen.gz
module (hd1,8)/boot/vmlinuz-2.6.31.12 dummy=dummy root=/dev/sdb8 ro console=tty0
module (hd1,8)/boot/initrd-2.6.31.12.img
}
Reboot system and install libvirt environment :-
Two steps in procedure bellow make Xen default Hypervisor on Ubuntu 9.10.
First is commenting out (xend-unix-server yes) in /etc/xen/xend-config.sxp ,
second export variable export VIRSH_DEFAULT_CONNECT_URI=”xen:///”
in root’s .bashrc.
Then run:-
# apt-get install ubuntu-virt-server ubuntu-virt-mgmt
Now you should be able to install Ubuntu 10.04 Lucid Server HVM via virt-install :-
# virt-install -n LucidSRV -r 1024 –hvm –vnc -f /dev/sda8 -c /home/boris/Lucid.iso –debug
Start up LucidSRV HVM via virt-manager and scp to Dom0
vmlinuz-2.6.32-16-server and initrd.img-2.6.32-16-server
File bellow may be used for command :-
# virsh define Lucid-def.xml
***************
Lucid-def.xml
***************
<domain type='xen' id='3'>
<name>Ubuntu10.04</name>
<uuid>40721ad3-27fd-39a9-35d8-ffa9d12bd494</uuid>
<memory>2097152</memory>
<currentMemory>2097152</currentMemory>
<vcpu>2</vcpu>
<bootloader></bootloader>
<os>
<type>linux</type>
<kernel>/home/boris/lucid/vmlinuz-2.6.32-16-server</kernel>
<initrd>/home/boris/lucid/initrd.img-2.6.32-16-server</initrd>
<cmdline>root=/dev/xvda1 ro </cmdline>
</os>
<clock offset='utc'/>
<on_poweroff>destroy</on_poweroff>
<on_reboot>restart</on_reboot>
<on_crash>restart</on_crash>
<devices>
<emulator>/usr/lib/xen/bin/qemu-dm</emulator>
<disk type='block' device='disk'>
<driver name='phy'/>
<source dev='/dev/sda8'/>
<target dev='xvda' bus='xen'/>
</disk>
<interface type='bridge'>
<mac address='00:16:3e:04:6b:5a'/>
<source bridge='eth0'/>
<script path='/etc/xen/scripts/vif-bridge'/>
<target dev='vif3.0'/>
</interface>
<console type='pty' tty='/dev/pts/1'>
<source path='/dev/pts/1'/>
<target port='0'/>
</console>
<input type='mouse' bus='xen'/>
<graphics type='vnc' port='5900' autoport='yes'/>
</devices>
</domain>
At this point Lucid Server PV DomU may be started via virt-manager:-