======DomU creation======
=====Debian 6 (Squeeze)=====
====with KVM====
A convenient way to prepair an image is by using KVM on your workstion. Install from the Net or the netinst.iso Keep in mind:
* install minimal, (use expertmode).
* it installs with grub2 only, so you will you will need xen-4 on your Dom0 to use pygrub.
After the reboot test, before the shutdown and copy-over to the Xen dom0, a few modifications are needed:
To have a console (with xm console on the Dom0), including a login prompt, you need to have a line in /etc/inittab with:
1:2345:respawn:/sbin/getty 38400 hvc0
Adapt the filesystemlines in /etc/fstab from /dev/sda1 to /dev/vda1
Now shutdown, and copy over the image file to the dom0 system. KVM usually leaves its image files in /var/lib/libvirt/images/*.img
Use dd to place this disk-image file on a logicalvolume.
An example minimal config with pygrub:
name = "deb6"
memory = 1024
vcpus = 1
bootloader = "/usr/lib/xen-4.0/bin/pygrub"
disk = [ "phy:/dev/mapper/vg00-deb6disk0,xvda,w" ]
vif = [ "mac=00:16:3c:53:ba:f9,bridge=xenbr0" ]
extra = "clocksource=jiffies"
====with debbootstrap====
See below.
====upgrade from a Debian 5 (Lenny) domU ====
As preparation, adapt /etc/apt/sources and execute:
apt-get update
Now comes the more tricky part, execute the steps below, and do not reboot in between:
touch /etc/udev/kernel-upgrade
apt-get dist-upgrade -fu
Only when the Dom0 is xen-3 (i.e. pygrub is not grub-2 capable)
apt-get install grub-legacy
Adapt /boot/grub/menu.lst and append console=hvc0 to the kernel line, like this:
kernel /vmlinuz-2.6.... root=/..... ro console=hvc0 xencons=tty
When the Dom0 is xen-4 or later (i.e. pygrub is grub-2 capable)
upgrade-from-grub-legacy
rm -f /boot/grub/menu.lst*
In /etc/inittab you need at least this line:
1:2345:respawn:/sbin/getty 38400 hvc0
Done. Now you can safe reboot the domU system. You will have a working console.
===clock===
New clock behaviour in newer kernels. The result is 'clock went backwards' problems. Add the line below to the domU.conf start file:
extra="clocksource=jiffies"
* See: [[http://wiki.debian.org/Xen#A.27clocksource.2BAC8-0.3ATimewentbackwards.27]]
=====Opensolaris PV domU=====
In case your hardware does not match de Solaris-x86 hardware compatibility list, but you do want to run one or more Solaris machines, Xen is a solution. In this case, Linux is used for the dom0, so all drivers of Linux can be used to adress the hardware. The Xen hypervisor layer does the i/o translation :-)
Nexenta is a recently developed distribution of OpenSolaris, which combines the kernel and some great features like ZFS with the usability developed by Debian. A good direction for Solaris in my opinion.
The link below is describes the installation steps of the Solaris/Linux combination:
See: http://wiki.tardis.ed.ac.uk/index.php/OpenSolaris_Xen_domU
=====RedHat 6 PV domU =====
RHEL6 runs as Xen PV (paravirtual) domU using the pvops framework in the default kernel.
A convenient way to make the raw image for domU usage is with KVM. Install from the CDrom, the usual way.
To use this image as a domU, edit the /etc/grub.conf in the image (by using KVM) and add to the kernel line:
console=hvc0
After this, this machine will not have a console with KVM anymore when rebooted in KVM. So shut it down, and copy it over to the xen dom0 machine.
A minimal domU.conf file example is:
name = "rh6beta"
memory = 1024
vcpus = 2
bootloader = "/usr/lib/xen-4.0/bin/pygrub"
disk = [ "phy:/dev/mapper/vg00-rh6disk0,xvda,w" ]
vif = [ "mac=00:16:34:f2:3b:7f,bridge=xenbr3"]
extra = "clocksource=jiffies"
When the mac-adres of the domU has changed, update the configfiles:
* /etc/sysconfig/network-scripts/ifcfg-eth* (HWADDR=... )
* /etc/udev/rules.d/70-persistent-net.rules
=====Ubuntu-10.04 PV domU =====
A convenent way to make the raw image is with KVM. Install from the Net or the CDrom, the usual way, but keep in mind:
* install 10.04 with commandline only, and use expertmode.
* best choose for grub1 and not grub2, so you will end up with a normal /boot/grub/menu.lst so pygrub will work without hacking it.
After the reboot test, before the shutdown and copy-over to the Xen dom0, a few modifications are needed:
Install a kernel with the pv_ops externtions:
apt-get install linux-image-virtual
* To have the xm-console, including a login prompt, do:
# most important:
cp /etc/init/tty0.conf /etc/init/hvc0.conf
sed -i 's|tty0|hvc0|g' /etc/init/hvc0.conf
# to be complete:
mv /etc/init/tty1.conf /etc/init/tty1.conf.disabled
mv /etc/init/tty2.conf /etc/init/tty2.conf.disabled
mv /etc/init/tty3.conf /etc/init/tty3.conf.disabled
mv /etc/init/tty4.conf /etc/init/tty4.conf.disabled
mv /etc/init/tty5.conf /etc/init/tty5.conf.disabled
mv /etc/init/tty6.conf /etc/init/tty6.conf.disabled
* Optionally disable ureadahead:
mv /etc/init/ureadahead.conf /etc/init/ureadahead.conf.disable
mv ureadahead-other.conf ureadahead-other.conf.disable
Now shutdown, and copy over the image file to the dom0 system. KVM usually leaves its image files in /var/lib/libvirt/images/*.img
Use dd to place this disk-image file on a logicalvolume.
* Use this xm create config:
name = "ubu1004serv"
memory = 1024
vcpus = 1
#kernel = "/var/xen/kernels/ubuntu/vmlinuz-2.6.32-24-server"
#ramdisk = "/var/xen/kernels/ubuntu/initrd.img-2.6.32-24-server"
#root = "/dev/mapper/vg01-root ro"
#
bootloader = "/usr/lib/xen-3.4/bin/pygrub"
#extra = "console=hvc0 xencons=tty"
#
vfb = [ ]
on_poweroff = "destroy"
on_reboot = "restart"
on_crash = "restart"
#
disk = [ "phy:/dev/mapper/vg00-ubu1004disk0,xvda,w" ]
vif = [ "mac=00:16:3c:53:ba:f9,bridge=xenbr0"]
See also:
* [[http://www.panticz.de/Ubuntu-Lucid-domU-under-Debian-Lenny-Dom0]]
* [[https://help.ubuntu.com/community/Xen]]
=====Opensolaris PV domU=====
In case your hardware does not match de Solaris-x86 hardware compatibility list, but you do want to run one or more Solaris machines, Xen is a solution. In this case, Linux is used for the dom0, so all drivers of Linux can be used to adress the hardware. The Xen hypervisor layer does the i/o translation :-)
Nexenta is a recently developed distribution of OpenSolaris, which combines the kernel and some great features like ZFS with the usability developed by Debian. A good direction for Solaris in my opinion.
The link below is describes the installation steps of the Solaris/Linux combination:
See: http://wiki.tardis.ed.ac.uk/index.php/OpenSolaris_Xen_domU
======Debbootstrap creation======
=====Debian domU=====
====Create stock rootfs====
Install the debootstrap package on the dom0 if you don't already have that package. Now create a minimal system installation in a subdirectory to bootstrap:
apt-get install debootstrap
mkdir -p /opt/xen/stock/deb-etch
debootstrap --arch amd64 etch /opt/xen/stock/deb-etch ftp://ftp.debian.org/debian
(this will use the /etc/apt/sources.list file on the dom0 in order to be able to find the Debian repository)
chroot /opt/xen/stock/deb-etch
apt-get install xfsprogs xfsdump udev vim ethtool
If (and ONLY if!) your dom0 has a x86-32 kernel/hypervisor, install TLS friendly libraries instead of disabling them in the domU (remember, in the old Sarge days we had to rename the dir /lib/tls to /lib/tls.disabled):
apt-get install libc6-xen
Finally leave the chroot.
exit
**TODO**
Add more steps here to create the stock rootfs file, so it can be used during "Prepair a domU"
====Prepair a domU====
===kernel===
For administration maintenance copy the xen-kernel and its ramdisk from /boot in the dom0 to /opt/xen/kernels/
mkdir -p /opt/xen/kernels/amd64
cp /boot/vmlinuz-2.6.18-5-xen-amd64 /opt/xen/kernels/amd64
cp /boot/initrd.img-2.6.18-5-xen-amd64 /opt/xen/kernels/amd64
As you want to use this kernel for your domU's, they'll need the kernel-modules, so copy them
from /lib/modules in the dom0 to /lib/modules/ in your domU rootfs
cp -a /lib/modules/2.6.18-5-xen-amd64 /opt/xen/stock/deb-etch/lib/modules
===storage===
* Create a volume for / (lvcreate -n root -L
lvcreate -n mydomuroot -L 1G vg00
* Create a volume for swap
lvcreate -n mydomuswap -L 200M vg00
mkswap /dev/vg00/mydomuswap
* tar or dd one of the stock rootfs files to the newly created volume. Remember to resize and check the filesystem afterwards if you chose to use dd.
mkfs.xfs /dev/vg00/mydomuroot
mount /dev/vg00/mydomuroot /mnt
cd /opt/xen/stock/deb-etch
tar cf - . | (cd /mnt && tar xf -)
===userland config===
adjust these files in the domU's root filesystem.
* /etc/hostname (only hostname without domain)
* /etc/fstab
# /etc/fstab: static file system information.
#
#
proc /proc proc defaults 0 0
none /dev/pts devpts defaults 0 0
/dev/hda1 / xfs defaults 0 1
/dev/hda2 none swap sw 0 0
* timezone and localization (chroot /mnt tzconfig)
* if required configure the network in /etc/network/interfaces and /etc/resolv.conf
* configure mail delivery from local root (eg system message) to an existing address.
echo " > /root/.forward
install postfix and choose "satelite system"
* install ssh server for remote access
apt-get install openssh-server
* as of debian-5.0 (lenny):
apt-get install udev
===DomU config===
First create a subdirectory for the configuration files of your new guest.
mkdir -p /opt/xen/mydomu
The configuration file itself /opt/xen/mydomu/domu.conf (also known as the spec file) has this content.
The guest in our example has 128Mb memory, one nic with a static MAC-address (we prefer to administer them ourselves), one root partition and one swap partition.
kernel = "/opt/xen/kernels/amd64/vmlinuz-2.6.18-5-xen-amd64"
ramdisk = "/opt/xen/kernels/amd64/initrd.img-2.6.18-5-xen-amd64"
memory = 128
name = "mydomu"
vif = [ 'mac=00:16:3E:17:75:17,bridge=xenbr0' ]
disk = [ 'phy:mapper/vg00-mydomuroot,hda1,w' , \
'phy:mapper/vg00-mydomuswap,hda2,w' ]
root = "/dev/hda1 ro"
extra = "2"
#extra = "console=hvc0 xencons=tty" # 2.6.26-x-xen
Now create a file to boot the new guest, /opt/xen/mydomu/domu.sh
XEN_NAME=mydomu
XEN_HOME=/opt/xen/${XEN_NAME}
export XEN_NAME XEN_HOME
echo "Starting XEN ${XEN_NAME} ..."
/usr/sbin/xm create ${XEN_NAME} -f ${XEN_HOME}/domu.conf
Grant the proper permissions.
chmod 755 /opt/xen/mydomu/domu.sh
Now you finally should be able to succesfully start the new guest.
cd /opt/xen/mydomu
./domu.sh
======Automatic domU startup======
Create a directory /etc/xen/auto and put the domU configuration file in this directory (or create a symbolic link).
In case you have a lot of domU's, a problem might arise that networking fails when using automatic startup.
======extra software and config======
Configure locales to get rid of the message Setting locale failed
apt-get install locales
dpkg-reconfigure locales
In case you get this message: "Couldn't get a file descriptor referring to the console", you might remove the console packages within the domU's as the dom0 already provides the keymap.
apt-get remove --purge console-common console-data console-tools libconsole
To get rid of the en_US.UTF-8 warnings from apt/perl, add to /root/.profile
unset LANG
To disable the indentation (which is by now the default in debian), add the two lines below to /etc/vim/vimrc:
set noautoindent
set paste