Das Perfekte Xen 3.1.0 Setup für Debian Etch (i386) - Seite 4

5.2 Einen dom0 Kernel erstellen

Nun erstellen wir einen 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"

Im Kernel-Konfigurationsmenü, das sich öffnet, aktivieren wir quota, iptables und den dummy Netzwerk Driver als Module. Hier aktivierst Du diese Module:

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)

[*] bedeutet: statisch in den Kernel einkompilieren.
<M> bedeutet: als Kernel Modul bauen.

Als Nächstes bauen und installieren wir den dom0 Kernel:

make linux-2.6-xen0-build
make linux-2.6-xen0-install
depmod 2.6.18-xen0

Danach aktualisieren wir den GRUB, unseren Bootloader:

update-grub

Starte nun das System neu:

shutdown -r now

In der Kommandozeile sollte Grub nun den xen0 Kernel am Anfang der Liste aufführen und ihn automatisch starten. Wenn keine Problemmeldungen auftauche, dann ist alles Bestens!

5.3 Einen domU Kernel erstellen

Danach erstellen wir einen Kernel für domU (die virtuellen Maschinen):

cd /usr/src/xen-3.1.0-src/
make clean
make linux-2.6-xenU-config CONFIGMODE=menuconfig KERNELS="linux-2.6-xenU"

Im Kernel-Konfigurationsmenü, das sich öffnet, müssen wir quota und iptables als Module (es ist wichtig, dass sie Module sind. Ich konnte iptables nicht dazu bringen in einer virtuellen Maschine zu arbeiten, als ich es statisch in den Kernel einkompiliert habe!) aktivieren. Hier aktivierst Du diese Module:

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)

[*] bedeutet: statisch in den Kernel einkompilieren.
<M> bedeutet: als Kernel Modul bauen.

Nachdem Du das Kernel-Konfigurationsmenü verlassen hast, führe Folgendes aus um den domU Kernel zu bauen und zu installieren:

make linux-2.6-xenU-build
make linux-2.6-xenU-install
depmod 2.6.18-xenU

5.4 Virtuelle Maschinen (domU) erstellen

(In diesem Kapitel gehe ich davon aus, dass Du einen domU Kernel erstellt hast um ihn mit virtuellen Maschinen (/boot/vmlinuz-2.6.18-xenU) zu verwenden. Wenn nicht, dann ersetze bitte alle Referenzen auf /boot/vmlinuz-2.6.18-xenU mit /boot/vmlinuz-2.6.18-xen!)

Wir werden xen-tools verwenden um virtuelle Maschinen zu erstellen. xen-tools vereinfacht es sehr virtuelle Maschinen zu erstellen - bitte lies folgende Anleitung um mehr zu erfahren: http://www.howtoforge.com/xen_tools_xen_shell_argo. xen-tools sind als Debian Etch Paket verfügbar, also installieren wir das gleich jetzt:

apt-get install xen-tools

Als Nächstes bearbeiten wir die Datei /etc/xen-tools/xen-tools.conf. Diese Datei beinhaltet die Standardwerte, die vom xen-create-image Skript verwendet werden, sofern Du keine anderen Werte in der Kommandozeile festgelegt hast. Folgende Werte habe ich verändert, alles andere habe ich unbefühert gelassen:

vi /etc/xen-tools/xen-tools.conf


[...]
gateway = 192.168.0.1 netmask = 255.255.255.0 passwd = 1 kernel = /boot/vmlinuz-2.6.18-xenU #initrd = /boot/initrd.img-2.6.16-2-xen-686 mirror = http://ftp2.de.debian.org/debian/ [...]
Bitte vergewissere Dich, dass Du die initrd Zeile auskommentiest! Zumindest bei meinen Installationen habe ich nie eine Ramdisk für virtuelle Maschinen gebraucht.

Die Zeile passwd = 1 bewirkt, dass Du ein Root Passwort anlegen kannst, wenn Du eine neue Gast Domain einrichtest. In the kernel line you must specify the domU kernel that you want to use for your guest domains. In the mirror line specify a Debian mirror close to you.

Vergewissere Dich, dass Du ein Gateway und eine Netzmaske festlegst. Wenn Du kein Gateway und keine Netzmaske in der Kommandozeile festlegst und Du xen-create-image verwendest, werden Dein Gast-Domains keinen Netzwerkbetrieb haben, auch nicht wenn Du eine IP Adresse bestimmt hast!

Lass uns nun unsere erste Gast-Domain xen1.example.com anlegen, mit der IP Adresse 192.168.0.101:

xen-create-image --hostname=xen1.example.com --size=2Gb --swap=256Mb --ide
--ip=192.168.0.101 --netmask=255.255.255.0 --gateway=192.168.0.1 --force
--dir=/vserver --memory=32Mb --arch=i386 --kernel=/boot/vmlinuz-2.6.18-xenU
--debootstrap --dist=etch --mirror=http://ftp2.de.debian.org/debian/ --passwd

Eine Menge Parameter sind hier überflüssig, da wir die gleichen Angaben in /etc/xen-tools/xen-tools.conf festgelegt haben, aber es zeigt, dass Du die gewünschten Einstellungen entweder in der Kommandozeile oder in /etc/xen-tools/xen-tools.conf festlegen kannst. Bitte stelle sicher, dass Du --ide bestimmst, sonst kann es sein, dass Deine virtuelle Maschine nicht startet!

(Wenn Du mehr über die verfügbaren Optionen erfahren möchtest, sieh Dir die xen-create-image man Seite an:

man xen-create-image

)

Der xen-create-image Befehl wird nun die xen1.example.com virtuelle Maschine für uns erstellen. Das kann ein paar Minuten in Anspruch nehmen. Die Ausgabe sollte so ähnlich wie diese sein:

server1:/usr/src/xen-3.1.0-src# xen-create-image --hostname=xen1.example.com --size=2Gb --swap=256Mb --ide
> --ip=192.168.0.101 --netmask=255.255.255.0 --gateway=192.168.0.1 --force
> --dir=/vserver --memory=32Mb --arch=i386 --kernel=/boot/vmlinuz-2.6.18-xenU
> --debootstrap --dist=etch --mirror=http://ftp2.de.debian.org/debian/ --passwd

General Infomation
--------------------
Hostname : xen1.example.com
Distribution : etch
Fileystem Type : ext3

Size Information
----------------
Image size : 2Gb
Swap size : 256Mb
Image type : sparse
Memory size : 32Mb
Kernel path : /boot/vmlinuz-2.6.18-xenU

Networking Information
----------------------
IP Address 1 : 192.168.0.101
Netmask : 255.255.255.0
Gateway : 192.168.0.1

WARNING
-------
Loopback module not loaded and you're using loopback images
Run the following to load the module:

modprobe loop loop_max=255


Creating swap image: /vserver/domains/xen1.example.com/swap.img
Done

Creating disk image: /vserver/domains/xen1.example.com/disk.img
Done

Creating ext3 filesystem on /vserver/domains/xen1.example.com/disk.img
Done

Installing your system with debootstrap mirror http://ftp2.de.debian.org/debian/
Done

Running hooks
Done

No role script specified. Skipping


Creating Xen configuration file
Done
Setting up root password
Enter new UNIX password:
Retype new UNIX password:
passwd: password updated successfully
All done

Logfile produced at:
/var/log/xen-tools/xen1.example.com.log
server1:/usr/src/xen-3.1.0-src#

(Diese Warnung kannst Du ignorieren:

WARNING
-------
Loopback module not loaded and you're using loopback images
Run the following to load the module:

modprobe loop loop_max=255

Die virtuelle Maschine wird trotzdem funktionieren.)

Es sollte nun eine xen1.example.com Konfigurationsdatei vorhanden sein - /etc/xen/xen1.example.com.cfg. Sieh sie Dir an um Dich mit den Konfigurationsdatein virtueller Maschinen vertraut zu machen:

cat /etc/xen/xen1.example.com.cfg


#
# Configuration file for the Xen instance xen1.example.com, created on # Tue May 29 01:21:54 2007. # # # Kernel + memory size # kernel = '/boot/vmlinuz-2.6.18-xenU' memory = '32' # # Disk device(s). # root = '/dev/hda1 ro' disk = [ 'file:/vserver/domains/xen1.example.com/disk.img,hda1,w', 'file:/vserver/domains/xen1.example.com/swap.img,hda2,w' ] # # Hostname # name = 'xen1.example.com' # # Networking # vif = [ 'ip=192.168.0.101' ] # # Behaviour # on_poweroff = 'destroy' on_reboot = 'restart' on_crash = 'restart'
Um die virtuelle Maschine zu starten, führe Folgendes aus

xm create /etc/xen/xen1.example.com.cfg

Führe dies aus

xm console xen1.example.com

um Dich auf dieser virtuellen Maschine anzumelden (tippe CTRL+] wenn Du auf der Konsole bist, oder CTRL+5 wenn Du PuTTY verwendest um zu dom0 zurückzukehren), oder verwende einen SSH Client um Dich mit ihr zu verbinden (192.168.0.101).

Um eine Liste laufender virtueller Maschinen zu erhalten, tippe

xm list

Die Ausgabe sollte wie folgt aussehen:

server1:~# xm list
Name ID Mem VCPUs State Time(s)
Domain-0 0 301 1 r----- 1191.0
xen1.example.com 1 32 1 -b---- 50.6
server1:~#

Um xen1.example.com runter zu fahren, führe Folgendes aus:

xm shutdown xen1.example.com

Wenn Du möchtest, dass vm01 beim nächsten Hochfahren automatisch startet, führe dies aus:

ln -s /etc/xen/xen1.example.com.cfg /etc/xen/auto

Dies sind die wichtigsten Xen Befehle:

xm create -c /path/to/config - Start a virtual machine.
xm shutdown <name> - Stop a virtual machine.
xm destroy <name> - Stop a virtual machine immediately without shutting it down. It's as if you switch off the power button.
xm list - List all running systems.
xm console <name> - Log in on a virtual machine.
xm help - List of all commands.

Lass uns eine zweite virtuelle Maschine (vm) xen2.example.com mit der IP Adresse 192.168.0.102 erstellen:

xen-create-image --hostname=xen2.example.com --size=2Gb --swap=256Mb --ide
--ip=192.168.0.102 --netmask=255.255.255.0 --gateway=192.168.0.1 --force
--dir=/vserver --memory=32Mb --arch=i386 --kernel=/boot/vmlinuz-2.6.18-xenU
--debootstrap --dist=etch --mirror=http://ftp2.de.debian.org/debian/ --passwd

Danach kannst Du xen2.example.com wie folgt starten:

xm create /etc/xen/xen2.example.com.cfg

und so runterfahren:

xm shutdown xen2.example.com

Eine Liste aller virtueller Maschinen, die mit dem xen-create-image Befehl erstellt worden sind, ist verfügbar unter

xen-list-images


server1:~# xen-list-images
Name: xen1.example.com
Memory: 32
IP: 192.168.0.101

Name: xen2.example.com
Memory: 32
IP: 192.168.0.102
server1:~#

Wenn Du mehr darüber erfahren möchtest, was mit xen-tools tun kannst, sieh Dir diese Anleitung an: http://www.howtoforge.com/xen_tools_xen_shell_argo
Indem Du Folgendes ausführst, kannst Du überprüfen, welchen Kernel Du verwendest

uname -a

Du kannst dies sowohl auf dom0 und domU ausführen. Zum Beispiel sieht die Ausgabe auf meiner xen1.example.com virtuellen Maschine, für die ich einen speziellen domU kernel erstellt habe, so aus:

xen1:~# uname -a
Linux xen1.example.com 2.6.18-xenU #2 SMP Tue May 29 00:53:13 CEST 2007 i686 GNU/Linux
xen1:~#

1 Kommentar(e)

Zum Posten von Kommentaren bitte

Kommentare

Von: sniffer3000

Hallo

Bei mir funktioniert bis auf eine (sehr wichtige:-) Kleinigkeit wirklich alles.
Sobald Xen installiert ist und der Rechner rebootet hat (noch vor "apt-get install xen-tools"), ist die Netzwerkverbindung absolut tot.

Wenn ich im GRUB das Debian ohne Xen auswähle, funktioniert alles einwandfrei. Aber sobald ich Debian als DomU (ich hoffe das ist der richtige Begriff) ausführe, kann ich nicht einmal mehr ne IP anoingen.

z.B. bei "ping 192.168.1.1" gibt er folgende Meldung aus:
"connect: Network is unreachable"

An was kann das liegen? Ich wäre wirklich sehr happy, wenn jemand einen Tip für mich hätte.
(Ich beschäftige mich noch nicht lang mit Linux)

Danke im Voraus