The Perfect Xen 3.1.0 Setup For Debian Etch (i386) - Page 5
5 Installing From The Sources
Run the following commands:
apt-get remove exim4 exim4-base lpr nfs-common portmap pidentd pcmcia-cs pppoe pppoeconf ppp pppconfig
apt-get install iproute bridge-utils python-twisted binutils zlib1g-dev python-dev transfig bzip2 screen ssh debootstrap libcurl3-dev libncurses5-dev x-dev build-essential gettext
5.1 Install Xen
Now we download xen-3.1.0-src.tgz from http://www.xensource.com/download/dl_31tarballs.html and unpack it:
cd /usr/src
wget http://bits.xensource.com/oss-xen/release/3.1.0/src.tgz/xen-3.1.0-src.tgz
tar -xvzf xen-3.1.0-src.tgz
Then we compile Xen. This will create one Xen kernel (2.6.18-xen). We have to do this before we can create individual kernels for dom0 and domU. This can take a long time so be patient:
cd xen-3.1.0-src/
make world
make install
mv /lib/tls /lib/tls.disabled
Now Xen is installed. In order to start the Xen services at boot time, do the following:
update-rc.d xend defaults 20 21
update-rc.d xendomains defaults 21 20
We need a ramdisk for our new Xen kernel, therefore we do the following:
depmod 2.6.18-xen
apt-get install yaird
To create the ramdisk, we run
mkinitrd.yaird -o /boot/initrd.img-2.6.18-xen 2.6.18-xen
The last command creates the ramdisk /boot/initrd.img-2.6.18-xen.
Next we add our new kernel to Grub, our bootloader. We can do this with one simple command:
update-grub
Now reboot the system:
shutdown -r now
At the boot prompt, Grub should now list Xen 3.1.0 / Debian GNU/Linux, kernel 2.6.18-xen as the first kernel and boot it automatically:
If your system comes up without problems, then everything is fine!
You can now use the 2.6.18-xen kernel for both the host system and the virtual machines (as in the Xen binary installation where we also use one kernel for both systems), or you compile a dom0 kernel and a domU kernel (which allows you to create special kernels for each use case) which I will show you in the following two chapters.
5.2 Compile A dom0 Kernel
Now we compile a dom0 kernel:
cd /usr/src/xen-3.1.0-src/
make clean
make linux-2.6-xen0-config CONFIGMODE=menuconfig KERNELS="linux-2.6-xen0"
In the kernel comfiguration menu that shows up we enable quota, iptables and the dummy network driver as modules. This is where you enable these modules:
File systems --> [*] Quota support
<M> Old quota format support
<M> Quota format v2 support
Device Drivers ---> Network device support ---> <M> Dummy net driver support
Networking ---> Networking options ---> [*] Network packet filtering (replaces ipchains) ---> Core Netfilter Configuration ---> <M> Netfilter Xtables support (required for ip_tables)
Networking ---> Networking options ---> [*] Network packet filtering (replaces ipchains) ---> IP: Netfilter Configuration ---> <M> IP tables support (required for filtering/masq/NAT)
[*] means: build into the kernel statically.
<M> means: build as a kernel module.
Next we build and install the dom0 kernel:
make linux-2.6-xen0-build
make linux-2.6-xen0-install
depmod 2.6.18-xen0
Afterwards we update GRUB, our bootloader:
update-grub
Now reboot the system:
shutdown -r now
At the boot prompt, Grub should now list the xen0 kernel at the top of the list and boot it automatically. If your system comes up without problems, then everything is fine!
5.3 Compile A domU Kernel
Afterwards we compile a kernel for domU (the virtual machines):
cd /usr/src/xen-3.1.0-src/
make clean
make linux-2.6-xenU-config CONFIGMODE=menuconfig KERNELS="linux-2.6-xenU"
In the kernel comfiguration menu that shows up we have to enable quota and iptables as modules (it is important that they are modules. I could not get iptables to work in a virtual machine when I compiled it into the kernel statically!). This is where you enable these modules:
File systems --> [*] Quota support
<M> Old quota format support
<M> Quota format v2 support
Networking ---> Networking options ---> [*] Network packet filtering (replaces ipchains) ---> Core Netfilter Configuration ---> <M> Netfilter Xtables support (required for ip_tables)
Networking ---> Networking options ---> [*] Network packet filtering (replaces ipchains) ---> IP: Netfilter Configuration ---> <M> IP tables support (required for filtering/masq/NAT)
[*] means: build into the kernel statically.
<M> means: build as a kernel module.
After you have left the kernel configuration menu, do the following to build and install the domU kernel:
make linux-2.6-xenU-build
make linux-2.6-xenU-install
depmod 2.6.18-xenU