HowtoForge

Installing Xen 3.3 With Kernel 2.6.27 On Ubuntu 8.10 (x86_64)

Installing Xen 3.3 With Kernel 2.6.27 On Ubuntu 8.10 (x86_64)

Version 1.0
Author: Falko Timme

This tutorial shows how you can install Xen 3.3 on an Ubuntu 8.10 host (dom0). Xen 3.3 is available from the Ubuntu 8.10 repositories, but the Ubuntu 8.10 kernels (2.6.27-x) are domU kernels, i.e., they work for Xen guests (domU), but not for the host (dom0). Therefore we need to build our own dom0 kernel. This guide explains how to do this with a 2.6.27 kernel.

I do not issue any guarantee that this will work for you!

 

1 Preliminary Note

I'm using an Ubuntu 8.10 x86_64 system with the hostname server1.example.com and the IP address 192.168.0.100 as the host system (dom0). I will use Debian Lenny for the virtual machines (domU).

This guide will explain how to set up image-based virtual machines and also LVM-based virtual machines.

I'm running all the steps in this tutorial with root privileges, so make sure you're logged in as root:

sudo su

 

2 Installing Xen

First upgrade your system...

apt-get upgrade

... and install the latest kernel from the Ubuntu repositories:

apt-get install linux-image-server linux-server

Next we install Xen 3.3 and the prerequisites for building our dom0 kernel:

apt-get install ubuntu-xen-server build-essential libncurses5-dev gawk mercurial

Now we download the sources of the 2.6.27 Xen kernel...

mkdir -p ~/build/linux-2.6.27-xen
cd /usr/src/
hg clone http://xenbits.xensource.com/ext/linux-2.6.27-xen.hg

... and configure the kernel:

cd linux-2.6.27-xen.hg
make O=~/build/linux-2.6.27-xen/ menuconfig

In the kernel configuration menu, make sure that you select the following options:

General setup ---> Choose SLAB allocator (SLUB (Unqueued Allocator)) ---> (X) SLAB
Processor type and features ---> Subarchitecture Type (PC-compatible) ---> (X) Enable Xen compatible kernel
Bus options (PCI etc.)  ---> [*] PCI support
                             [*]   Xen PCI Frontend
                             [ ]     Xen PCI Frontend Debugging (NEW)

Change <M> 802.1d Ethernet Bridging to <*> 802.1d Ethernet Bridging:

Networking support ---> Networking options ---> <*> 802.1d Ethernet Bridging

Disable 10000 Mbit Ethernet (otherwise the build process will most likely fail):

Device Drivers ---> [*] Network device support ---> [ ] Ethernet (10000 Mbit) --->

Make the Xen section look as follows (make sure you select Xen version compatibility (3.0.4 and later) instead of Xen version compatibility (3.0.2 and later)):

Device Drivers  ---> XEN  ---> [*] Privileged Guest (domain 0)
                               <*> Backend driver support (NEW)
                               <*>   Block-device backend driver (NEW)
                               <*>   Block-device tap backend driver (NEW)
                               <*>   Network-device backend driver (NEW)
                               (8)     Maximum simultaneous transmit requests (as a power of 2) (NEW)
                               [ ]     Pipelined transmitter (DANGEROUS) (NEW)
                               < >     Network-device loopback driver (NEW)
                               <*>   PCI-device backend driver (NEW)
                                       PCI Backend Mode (Virtual PCI)  --->
                               [ ]     PCI Backend Debugging (NEW)
                               < >   TPM-device backend driver (NEW)
                               <M>   SCSI backend driver (NEW)
                               <M> Block-device frontend driver
                               <M> Network-device frontend driver
                               <M>   Network-device frontend driver acceleration for Solarflare NICs (NEW)
                               <M> SCSI frontend driver (NEW)
                               <*> User-space granted page access driver (NEW)
                               <*> Framebuffer-device frontend driver (NEW)
                               <*>   Keyboard-device frontend driver (NEW)
                               [*] Disable serial port drivers (NEW)
                               <*> Export Xen attributes in sysfs (NEW)
                               (256) Number of guest devices (NEW)
                                   Xen version compatibility (3.0.4 and later)  --->

Afterwards we build and install the kernel as follows:

make O=~/build/linux-2.6.27-xen/
make O=~/build/linux-2.6.27-xen/ modules_install install

Now take a look at the /boot directory:

ls -l /boot/
root@server1:~# ls -l /boot
total 78364
-rw-r--r-- 1 root root   504280 2009-01-29 22:23 abi-2.6.27-11-server
-rw-r--r-- 1 root root   503560 2008-11-04 22:22 abi-2.6.27-7-server
-rw-r--r-- 1 root root    85313 2009-01-29 22:23 config-2.6.27-11-server
-rw-r--r-- 1 root root    87256 2009-02-12 20:51 config-2.6.27.5
-rw-r--r-- 1 root root    85319 2008-11-04 22:22 config-2.6.27-7-server
drwxr-xr-x 2 root root     4096 2009-02-12 22:28 grub
-rw-r--r-- 1 root root  8983433 2009-02-12 22:28 initrd.img-2.6.27-11-server
-rw-r--r-- 1 root root  8979323 2009-02-12 22:26 initrd.img-2.6.27-7-server
drwx------ 2 root root    16384 2009-02-12 19:30 lost+found
-rw-r--r-- 1 root root   124152 2008-09-11 22:11 memtest86+.bin
-rw-r--r-- 1 root root  1354638 2009-01-29 22:23 System.map-2.6.27-11-server
-rw-r--r-- 1 root root  1258568 2009-02-12 20:51 System.map-2.6.27.5
-rw-r--r-- 1 root root  1351952 2008-11-04 22:22 System.map-2.6.27-7-server
-rw-r--r-- 1 root root     1130 2009-01-29 22:27 vmcoreinfo-2.6.27-11-server
-rw-r--r-- 1 root root     1129 2008-11-04 22:25 vmcoreinfo-2.6.27-7-server
-rw-r--r-- 1 root root  2341536 2009-01-29 22:23 vmlinuz-2.6.27-11-server
-rw-r--r-- 1 root root  2192827 2009-02-12 20:51 vmlinuz-2.6.27.5
-rw-r--r-- 1 root root  2338976 2008-11-04 22:22 vmlinuz-2.6.27-7-server
-rw-r--r-- 1 root root   470144 2008-10-06 20:15 xen-3.3.gz
root@server1:~#

As you see, there's a new kernel, 2.6.27.5, but no ramdisk for it; therefore we build one...

depmod 2.6.27.5
update-initramfs -c -k 2.6.27.5

... and update our bootloader:

update-grub

Afterwards we open /etc/modules and make sure that we have the line loop max_loop=64 in it (this step is needed only if you want to create image-based virtual machines - you can skip it if you want to create LVM-based virtual machines):

vi /etc/modules
[...]
loop max_loop=64

Then reboot the system:

reboot

Run

uname -r

after the reboot and your new Xen kernel should show up:

root@server1:~# uname -r
2.6.27.5
root@server1:~#
Installing Xen 3.3 With Kernel 2.6.27 On Ubuntu 8.10 (x86_64)