Inhaltsverzeichnis

Erstellung von Gästen für Xen (DomU)

Die verschiedenen DomUs sind die virtuellen Maschinen („Gäste“) oberhalb der dom-0. Die Erstellung mit dem Xen-Tools sollte auf allen Systemen gleich sein. Eine manuelle Variante (ohne Xen-Tools) wird auch beschrieben.

Es wird (bisher) nur die Erstellung von Images (und die Benutzung mit loop) beschrieben. Es geht auch mit LVM.

fertige Xen-Images

Auf diesen Seiten gibt es fertige Xen-Images zum runterladen:

Die XenServer Produkte unterstützen das Xen Virtual Appliance (XVA) Format, das man mit einer grafischen Schnittstelle oder auf der Kommandozeile mit „xe“ importieren kann.

eine paravirtualisierte DomU erstellen (Xen-tools)

  1. In der Datei /etc/xen/xend-config.sxp die gewünschten Änderungen vornehmen, z.B. die Zeile (network-script network-dummy) durch (network-script network-bridge) ersetzen.
  2. Mit den Xen-Tools ist eine VM schnell erstellt:
    xen-create-image --hostname debian --dhcp --dir /srv/xen

    Das Beispiel erstellt zwei Images (eins für das swap-file, eins für das root-Dateisystem) im Verzeichnis /srv/xen (es wird automatisch das Unterverzeichnis domains angelegt) mit dem Namen debian. Die Konfiguration sieht dann nach Anpassung so aus (die letzte Zeile z.B. hinzugefügt werden).

Ohne DHCP und mit fester IP sieht der Anruf so aus:

xen-create-image --hostname debian --ip 192.168.0.1 --dir /srv/xen

:!: bei --dir sollte in der Pfadangabe hinten kein Slash (/) am Pfadnamen stehen.

#
#  Kernel + memory size
#
kernel      = '/boot/vmlinuz-2.6.22-14-xen'
ramdisk     = '/boot/initrd.img-2.6.22-14-xen'
memory      = '128'
#
#  Disk device(s).
#
root        = '/dev/sda1 ro'
disk        = [ 'file:/domains/debian/disk.img,sda1,w', 'file:/domains/debian/swap.img,sda2,w' ]

#
#  Hostname
#
name        = 'debian'

#
#  Networking
#
dhcp        = 'dhcp'
vif         = [ 'bridge=xenbr0' ]

#
#  Behaviour
#
on_poweroff = 'destroy'
on_reboot   = 'restart'
on_crash    = 'restart'
extra='xencons=tty'

eine vollvirtualisierte DomU erstellen (Windows, Xen-Tools)

Bei entsprechender Hardwareunterstützung können auch nicht angepasste Betriebssysteme, d.h. solche ohne eigenen Hypervisor (wie Windows), betrieben werden. Diese laufen allerdings nicht ganz so schnell, da die Treiber nicht angepasst sind. Novell (Virtual Machine Driver Pack) und XenSource (XenSource Windows Tools) bieten jeweils angepasste Treiber, die jedoch nicht kostenlos sind.

Zuerst sollte man sich ein Image erstellen (siehe oben: manuelle Erstellung) außerdem muss man eine Konfiguration anlegen:

# WinXP sample config
kernel      = '/usr/lib/xen-3.0.3-1/boot/hvmloader'
builder     = 'hvm'
memory      = '384'
name	    = 'winxp1'
device_model= '/usr/lib/xen-3.0.3-1/bin/qemu-dm'
boot        ='d'
disk        = [ 'file:/domains/winxp/winxp.img,ioemu:hda,w', 'file:/domains/WinXP.ISO,hdc:cdrom,r' ]

#
#  Networking
#
#dhcp        = 'dhcp'
vif         = [ 'type=ioemu, bridge=xenbr0' ]
vnc=1
vncpasswd='winxp'
vnclisten='0.0.0.0'
#
#  Behaviour
#
on_poweroff = 'destroy'
on_reboot   = 'restart'
on_crash    = 'restart'

Zu Erklärung:

:!: Nach der Installation

boot        ='d'

auf

boot        ='c'

setzen.

Abänderungen

manuelle Erstellung

Wenn die Xen-Tools nicht zur Verfügung stehen (oder man eine grundsätzliches Verständnis bekommen will) ist die manuelle Erstellung eine Alternative.

Dazu

  1. erzeugt man ein Image (die spätere Systempartition erstellen) mit dem Befehl
    dd if=/dev/zero of=IMAGENAME.IMG count=0 bs=1024k seek=5000

hier wird also die Datei IMAGENAME.IMG mit 5 GB Speicher angelegt. Dieser wird allerdings noch nicht voll belegt, da hier eine Sparse-Datei angelegt wurde. Da die Datei bisher leer ist, werden wir

  1. ein Dateisystem im Image anlegen:
    mkfs.ext3 IMAGENAME.IMG

    .

FIXME (weiter)

     xt-install-image Install a new distribution.
     xt-customize-image Run a collection of hook scripts to customise the freshly installed system.
     xt-create-xen-config Create a configuration file in /etc/xen so that xm can create the new image.

Images vergrößern (resize)

:!: Vorher sollte das Gastsystem runtergefahren werden.

Die Änderung ist schnell erledigt: Im ersten Schritt wird das Image durch anhängen von Nullen um 1GB vergrößert und anschließend auch das (ext3) Dateisystem.

dd if=/dev/zero bs=1024000 count=1024 >> disk.img
resize2fs -f disk.img

Wer mehr oder weniger als 1GB vergrößern muss natürlich die Zahlen entsprechend (so dass die Multiplikation der Zahlen von bs und count die gewünschte Kapazität ergibt) anpassen.

Anschließend ggf. das LVM anpassen.

Ubuntu

Für Ubuntu gibt es in Etch keine passenden Scripte von debootstrap. Zwar wird dapper als unterstützt angegeben, aber es ist trotzdem nix da.

Also laden wir uns ein aktuelles debootstrap von Ubuntu:

wget http://archive.ubuntulinux.org/ubuntu/pool/main/d/debootstrap/debootstrap_1.0.8_all.deb
dpkg -i debootstrap_1.0.8_all.deb
  We're trying to configure an installation of gutsy in
 /srv/xen - but there is no hook directory for us to use.

  This means we don't know how to configure this installation.

  We'd expect the hook directory to be : /usr/lib/xen-tools/gutsy.d

Im Verzeichnis /usr/lib/xen-tools legt man also noch einen Verweis auf ubuntu.d an:

ln -s ubuntu.d gutsy.d

Gentoo