Virtualisierung · 9 min read · Dec 09, 2025

Paravirtualisierung mit Xen 4.0 auf Debian Squeeze (AMD64)

Paravirtualisierung mit Xen 4.0 auf Debian Squeeze (AMD64)

Version 1.0
Autor: Falko Timme
Folge mir auf Twitter

Dieses Tutorial bietet Schritt-für-Schritt-Anleitungen zur Installation von Xen 4.0 auf einem Debian Squeeze (6.0) System (AMD64) und zur Erstellung von paravirtualisierten Gästen (verwechseln Sie dies nicht mit vollständig virtualisierten Gästen, d.h. Hardware-Virtualisierung (HVM)).

Xen ermöglicht es Ihnen, Gastbetriebssysteme (nix-Betriebssysteme wie Linux und FreeBSD), sogenannte “virtuelle Maschinen” oder domU s, unter einem Hostbetriebssystem (dom0) zu erstellen. Mit Xen können Sie Ihre Anwendungen in verschiedene virtuelle Maschinen aufteilen, die völlig unabhängig voneinander sind (z.B. eine virtuelle Maschine für einen Mailserver, eine virtuelle Maschine für eine stark frequentierte Website, eine andere virtuelle Maschine, die die Websites Ihrer Kunden bedient, eine virtuelle Maschine für DNS usw.), aber dennoch dieselbe Hardware verwenden. Dies spart Geld und ist, was noch wichtiger ist, sicherer. Wenn die virtuelle Maschine Ihres DNS-Servers gehackt wird, hat dies keine Auswirkungen auf Ihre anderen virtuellen Maschinen. Außerdem können Sie virtuelle Maschinen von einem Xen-Server auf den nächsten verschieben.

Ich gebe keine Garantie, dass dies bei Ihnen funktioniert!

1 Vorbemerkung

Ich verwende ein Debian Squeeze System (x86_64) mit dem Hostnamen server1.example.com und der IP-Adresse 192.168.0.100 als Hostsystem (dom0). (Die Einrichtung kann leicht abweichen, wenn Sie sich auf einem i386-System befinden.) Ich werde auch Debian Squeeze für die virtuellen Maschinen (domU) verwenden (aber auch die Änderungen zeigen, die Sie vornehmen müssen, wenn Sie einen Ubuntu Maverick-Gast installieren möchten).

Dieser Leitfaden erklärt, wie man bildbasierte virtuelle Maschinen und auch LVM-basierte virtuelle Maschinen einrichtet.

2 Installation von Xen

Um Xen zu installieren, führen wir einfach aus

apt-get install xen-hypervisor xen-linux-system xen-utils xenstore-utils xenwatch xen-tools

Danach öffnen wir /etc/modules und stellen sicher, dass wir die Zeile loop max_loop=64 darin haben (dieser Schritt ist nur erforderlich, wenn Sie bildbasierte virtuelle Maschinen erstellen möchten - Sie können ihn überspringen, wenn Sie LVM-basierte virtuelle Maschinen erstellen möchten):

vi /etc/modules

| [...] loop max_loop=64 |

Als nächstes öffnen wir /etc/xen/xend-config.sxp…

vi /etc/xen/xend-config.sxp

… und kommentieren fügen die Zeile (network-script ‘network-bridge antispoof=yes’) hinzu und kommentieren alle anderen (network-script …) Zeilen aus (antispoof=yes aktiviert die Xen-Firewall, die verhindert, dass eine VM eine IP-Adresse verwenden kann, die sie nicht verwenden darf, wie z.B. Ihre Gateway-IP). Stellen Sie außerdem sicher, dass die Zeile (vif-script vif-bridge) aktiviert ist:

| [...] (network-script 'network-bridge antispoof=yes') [...] (vif-script vif-bridge) [...] |

Dann starten Sie das System neu:

reboot

Führen Sie aus

uname -r

und Ihr neuer Xen-Kernel sollte angezeigt werden:

root@server1:~# uname -r
2.6.32-5-xen-amd64
root@server1:~#

Jetzt führen Sie aus

xm dmesg 

Wenn Sie eine Ausgabe wie diese erhalten…

root@server1:~# xm dmesg
WARNING! Can’t find hypervisor information in sysfs!
Error: Unable to connect to xend: No such file or directory. Is xend running?
root@server1:~#

… bedeutet dies, dass Sie nur auf einem Xen-bereiten Kernel laufen, aber nicht auf dem Xen-Hypervisor selbst (was bedeutet, dass Sie keine virtuellen Maschinen booten können). Um dies zu ändern, ändern Sie die Bootreihenfolge Ihrer Kerne wie folgt und aktualisieren Sie den GRUB-Bootloader:

mv /etc/grub.d/10_linux /etc/grub.d/50_linux
update-grub2

Dies stellt sicher, dass beim nächsten Booten der Xen-Hypervisor geladen wird.

Starten Sie erneut neu:

reboot

Danach sollte

xm dmesg

zeigen, dass der Hypervisor läuft:

root@server1:~# xm dmesg
(XEN) Xen version 4.0.1 (Debian 4.0.1-2) ( [email protected]) (gcc version 4.4.5 (Debian 4.4.5-10) ) Wed Jan 12 14:04:06 UTC 2011
(XEN) Bootloader: GRUB 1.98+20100804-14
(XEN) Command line: placeholder
(XEN) Video information:
(XEN)  VGA is text mode 80x25, font 8x16
(XEN)  VBE/DDC methods: V2; EDID transfer time: 1 seconds
(XEN) Disc information:
(XEN)  Found 1 MBR signatures
(XEN)  Found 1 EDD information structures
(XEN) Xen-e820 RAM map:
(XEN)  0000000000000000 - 000000000009f000 (usable)
(XEN)  000000000009f000 - 00000000000a0000 (reserved)
(XEN)  00000000000e0000 - 0000000000100000 (reserved)
(XEN)  0000000000100000 - 00000000affa0000 (usable)
(XEN)  00000000affa0000 - 00000000affae000 (ACPI data)
(XEN)  00000000affae000 - 00000000afff0000 (reserved)
(XEN)  00000000afff0000 - 00000000b0000000 (reserved)
(XEN)  00000000fec00000 - 00000000fec01000 (reserved)
(XEN)  00000000fee00000 - 00000000fef00000 (reserved)
(XEN)  00000000ff700000 - 0000000100000000 (reserved)
(XEN)  0000000100000000 - 0000000140000000 (usable)
(XEN) ACPI: RSDP 000FA310, 0014 (r0 ACPIAM)
(XEN) ACPI: RSDT AFFA0000, 0044 (r1 052608 RSDT1415 20080526 MSFT       97)
(XEN) ACPI: FACP AFFA0200, 0084 (r1 052608 FACP1415 20080526 MSFT       97)
(XEN) ACPI: DSDT AFFA0450, 960C (r1  1AAAA 1AAAA000        0 INTL 20051117)
(XEN) ACPI: FACS AFFAE000, 0040
(XEN) ACPI: APIC AFFA0390, 0080 (r1 052608 APIC1415 20080526 MSFT       97)
(XEN) ACPI: MCFG AFFA0410, 003C (r1 052608 OEMMCFG  20080526 MSFT       97)
(XEN) ACPI: OEMB AFFAE040, 0073 (r1 052608 OEMB1415 20080526 MSFT       97)
(XEN) ACPI: HPET AFFA9A60, 0038 (r1 052608 OEMHPET0 20080526 MSFT       97)
(XEN) ACPI: INFO AFFAE0C0, 0124 (r1 052608 AMDINFO  20080526 MSFT       97)
(XEN) ACPI: NVHD AFFAE1F0, 0284 (r1 052608  NVHDCP  20080526 MSFT       97)
(XEN) ACPI: SSDT AFFA9AA0, 028A (r1 A M I  POWERNOW        1 AMD         1)
(XEN) System RAM: 3839MB (3931388kB)
(XEN) Domain heap initialised
(XEN) Processor #0 15:11 APIC version 16
(XEN) Processor #1 15:11 APIC version 16
(XEN) IOAPIC[0]: apic_id 2, version 17, address 0xfec00000, GSI 0-23
(XEN) Enabling APIC mode:  Flat.  Using 1 I/O APICs
(XEN) Using scheduler: SMP Credit Scheduler (credit)
(XEN) Detected 2600.088 MHz processor.
(XEN) Initing memory sharing.
(XEN) HVM: ASIDs enabled.
(XEN) HVM: SVM enabled
(XEN) AMD-Vi: IOMMU not found!
(XEN) I/O virtualisation disabled
(XEN) AMD: Disabling C1 Clock Ramping Node #0
(XEN) Total of 2 processors activated.
(XEN) ENABLING IO-APIC IRQs
(XEN)  -> Using new ACK method
(XEN) checking TSC synchronization across 2 CPUs:
(XEN) CPU#0 had -2 usecs TSC skew, fixed it up.
(XEN) CPU#1 had 2 usecs TSC skew, fixed it up.
(XEN) Platform timer is 25.000MHz HPET
(XEN) Allocated console ring of 16 KiB.
(XEN) Brought up 2 CPUs
(XEN)  LOADING DOMAIN 0 
(XEN)  Xen  kernel: 64-bit, lsb, compat32
(XEN)  Dom0 kernel: 64-bit, PAE, lsb, paddr 0x1000000 -> 0x16ba000
(XEN) PHYSICAL MEMORY ARRANGEMENT:
(XEN)  Dom0 alloc.:   0000000138000000->000000013c000000 (921455 pages to be allocated)
(XEN) VIRTUAL MEMORY ARRANGEMENT:
(XEN)  Loaded kernel: ffffffff81000000->ffffffff816ba000
(XEN)  Init. ramdisk: ffffffff816ba000->ffffffff8323b600
(XEN)  Phys-Mach map: ffffffff8323c000->ffffffff83963b78
(XEN)  Start info:    ffffffff83964000->ffffffff839644b4
(XEN)  Page tables:   ffffffff83965000->ffffffff83986000
(XEN)  Boot stack:    ffffffff83986000->ffffffff83987000
(XEN)  TOTAL:         ffffffff80000000->ffffffff83c00000
(XEN)  ENTRY ADDRESS: ffffffff81509200
(XEN) Dom0 hat maximal 2 VCPUs
(XEN) Scrubbing Free RAM: .done.
(XEN) Xen trace buffers: disabled
(XEN) Std. Loglevel: Errors and warnings
(XEN) Guest Loglevel: Nothing (Rate-limited: Errors and warnings)
(XEN) Xen gibt VGA Konsole auf.
(XEN) * Serielle Eingabe -> DOM0 (type ’CTRL-a’ drei Mal um die Eingabe zu Xen zu wechseln)
(XEN) Freed 176kB init memory.
(XEN) MCE: MSR 417 is not MCA MSR
(XEN) MCE: MSR 417 is not MCA MSR
root@server1:~#

3 Erstellen von bildbasierten virtuellen Maschinen

Wir werden xen-tools verwenden, um virtuelle Maschinen zu erstellen. xen-tools machen es sehr einfach, virtuelle Maschinen zu erstellen - bitte lesen Sie dieses Tutorial, um mehr zu erfahren: https://www.howtoforge.com/xen_tools_xen_shell_argo. Wir haben bereits xen-tools im vorherigen Schritt (Kapitel 2) installiert.

Jetzt bearbeiten wir /etc/xen-tools/xen-tools.conf. Diese Datei enthält die Standardwerte, die vom xen-create-image-Skript verwendet werden, es sei denn, Sie geben andere Werte in der Befehlszeile an. Ich habe die folgenden Werte geändert und den Rest unberührt gelassen:

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

| [...] dir = /home/xen [...] # lvm = vg0 [...] dist = `xt-guess-suite-and-mirror --suite` # Standarddistribution zur Installation. [...] gateway = 192.168.0.1 netmask = 255.255.255.0 broadcast = 192.168.0.255 [...] passwd = 1 [...] kernel = /boot/vmlinuz-`uname -r` initrd = /boot/initrd.img-`uname -r` [...] mirror = `xt-guess-suite-and-mirror --mirror` [...] serial_device = hvc0 #standard [...] disk_device = xvda #standard [...] |

Die Zeile dir gibt an, wo die Bilder der virtuellen Maschinen gespeichert werden. Stellen Sie sicher, dass gleichzeitig lvm auskommentiert ist (diese Einstellungen sind gegenseitig ausschließend!).

dist gibt die Distribution an, die in den virtuellen Maschinen installiert werden soll (wenn Sie den Befehl

xt-guess-suite-and-mirror --suite

in der Befehlszeile ausführen, sehen Sie, dass er in squeeze übersetzt, sodass in diesem Fall Debian Squeeze installiert wird, es sei denn, Sie geben etwas anderes in der Befehlszeile an).

Um herauszufinden, welche Distributionen Sie in einer virtuellen Maschine installieren können, führen Sie aus:

gunzip /usr/share/doc/xen-tools/README.gz
cat /usr/share/doc/xen-tools/README

Die Zeile passwd = 1 sorgt dafür, dass Sie ein Root-Passwort angeben können, wenn Sie eine neue Gastdomäne erstellen.

Die Zeilen kernel und initrd geben den Kernel und das Ramdisk an, die in einer virtuellen Maschine installiert werden. Wenn Sie Debian Squeeze installieren möchten, verwenden Sie bitte die oben gezeigten Einstellungen (ansonsten könnte der Debian Squeeze-Gast nicht booten). Wenn Sie beispielsweise Ubuntu Maverick installieren möchten, können Sie die gleichen Einstellungen verwenden oder beide Zeilen auskommentieren, in diesem Fall würde der Standard-Ubuntu-Kernel verwendet (ja, Xen 4.0 erlaubt es Ihnen, Nicht-Xen-Kerne in einem Gast zu verwenden!).

Stellen Sie sicher, dass Sie ein Gateway, eine Netzmaske und eine Broadcast-Adresse angeben. Wenn Sie dies nicht tun und Sie kein Gateway und keine Netzmaske in der Befehlszeile angeben, wenn Sie xen-create-image verwenden, haben Ihre Gastdomänen kein Netzwerk, selbst wenn Sie eine IP-Adresse angegeben haben!

Die Zeile mirror gibt das zu verwendende Mirror an (der Befehl

xt-guess-suite-and-mirror --mirror

übersetzt standardmäßig in ein Debian-Mirror. Natürlich können Sie ein anderes Mirror angeben, z.B. wie folgt:

mirror = http://ftp.de.debian.org/debian/

oder

mirror = http://archive.ubuntu.com/ubuntu (für Ubuntu; in diesem Fall stellen Sie sicher, dass Sie eine Ubuntu-Version in der Zeile dist angeben, z.B. dist = maverick) )

Es ist sehr wichtig, dass Sie die Zeile serial_device = hvc0 hinzufügen, da Ihre virtuellen Maschinen sonst möglicherweise nicht richtig booten!

disk_device = xvda sorgt dafür, dass die virtualisierten Festplatten xvda1, xvda2 usw. genannt werden. Dies ist die richtige Einstellung für einen Debian Squeeze-Gast; Ubuntu-Gäste, insbesondere bei Verwendung eines Nicht-Xen-Kernels, könnten mit dieser Einstellung nicht booten, aber Sie können dies mit dem –scsi-Schalter, den Sie dem xen-create-image-Befehl übergeben, überschreiben - in diesem Fall werden die virtualisierten Festplatten sda1, sda2 usw. genannt.

Zusammenfassend sind die obigen Einstellungen perfekt für Debian Squeeze-Gäste; wenn Sie stattdessen Ubuntu Maverick installieren möchten, müssen Sie einige der Einstellungen in /etc/xen-tools/xen-tools.conf überschreiben (–dist, –mirror, –scsi-Schalter; vielleicht auch kernel und initrd auskommentieren) - dazu komme ich gleich.

Bevor wir fortfahren, müssen wir das Verzeichnis erstellen, in dem die Bilder der virtuellen Maschinen gespeichert werden sollen:

mkdir /home/xen 

Jetzt erstellen wir unsere erste Gastdomäne, xen1.example.com, mit der IP-Adresse 192.168.0.101:

xen-create-image --hostname=xen1.example.com --size=4Gb --swap=256Mb --ip=192.168.0.101 --memory=256Mb --arch=amd64 --role=udev

Optionen, die Sie in der Befehlszeile angeben, überschreiben die Einstellungen in /etc/xen-tools/xen-tools.conf. Optionen, die nicht in der Befehlszeile angegeben sind, werden aus /etc/xen-tools/xen-tools.conf übernommen. Bitte stellen Sie sicher, dass Sie –role=udev hinzufügen, da Ihre virtuelle Maschine sonst möglicherweise nicht richtig bootet!

(Um mehr über die verfügbaren Optionen zu erfahren, werfen Sie einen Blick in die Man-Seite von xen-create-image:

man xen-create-image

)

Der Befehl xen-create-image wird nun die virtuelle Maschine xen1.example.com für uns erstellen. Dies kann einige Minuten dauern. Die Ausgabe sollte ähnlich wie folgt aussehen:

root@server1:~# xen-create-image –hostname=xen1.example.com –size=4Gb –swap=256Mb –ip=192.168.0.101 –memory=256Mb –arch=amd64 –role=udev

Allgemeine Informationen

Hostname       :  xen1.example.com
Distribution   :  squeeze
Mirror         :  http://ftp.de.debian.org/debian/
Partitionen     :  swap            256Mb (swap)
/               4Gb   (ext3)
Bildtyp        :  sparse
Speichergröße   :  256Mb
Kernelpfad     :  /boot/vmlinuz-2.6.32-5-xen-amd64
Initrdpfad     :  /boot/initrd.img-2.6.32-5-xen-amd64

Netzwerkinformationen

IP-Adresse 1   : 192.168.0.101 [MAC: 00:16:3E:E8:61:97]
Netzmaske      : 255.255.255.0
Broadcast      : 192.168.0.255
Gateway        : 192.168.0.1

Erstellen des Partition Bildes: /home/xen/domains/xen1.example.com/swap.img
Fertig

Erstellen von Swap auf /home/xen/domains/xen1.example.com/swap.img
Fertig

Erstellen des Partition Bildes: /home/xen/domains/xen1.example.com/disk.img
Fertig

Erstellen des ext3 Dateisystems auf /home/xen/domains/xen1.example.com/disk.img
Fertig
Installationsmethode: debootstrap
Fertig

Ausführen von Hooks
Fertig

Rolle: udev
Datei: /etc/xen-tools/role.d/udev
Rolle Skript abgeschlossen.

Erstellen der Xen Konfigurationsdatei
Fertig
Einrichten des Root-Passworts
Neues UNIX-Passwort eingeben:
Neues UNIX-Passwort wiederholen:
passwd: Passwort erfolgreich aktualisiert
Alles fertig

Protokolldatei erstellt unter:
/var/log/xen-tools/xen1.example.com.log

Installationsübersicht

Hostname        :  xen1.example.com
Distribution    :  squeeze
IP-Adresse(n)  :  192.168.0.101
RSA Fingerprint :  81:d1:7a:44:3b:07:41:3a:0f:46:d5:d5:30:bc:26:43
Root-Passwort   :  N/A

root@server1:~#

Für einen Ubuntu Maverick-Gast sollten Sie stattdessen diesen Befehl verwenden:

xen-create-image --hostname=xen1.example.com --size=4Gb --swap=256Mb --ip=192.168.0.101 --memory=256Mb --arch=amd64 --role=udev --scsi --dist maverick --mirror=http://archive.ubuntu.com/ubuntu 

(Um den Standard-Ubuntu-Kernel anstelle des Debian-Xen-Kernels im Gast zu verwenden, können Sie auch die Kernel- und Initrd-Zeilen in /etc/xen-tools/xen-tools.conf auskommentieren.)

Es sollte jetzt eine Konfigurationsdatei für xen1.example.com geben - /etc/xen/xen1.example.com.cfg. Werfen Sie einen Blick darauf, um sich mit den Konfigurationsdateien für virtuelle Maschinen vertraut zu machen:

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

| # # Konfigurationsdatei für die Xen-Instanz xen1.example.com, erstellt # von xen-tools 4.2 am Fri Mar 25 15:56:51 2011. # # Kernel + Speichergröße # kernel = '/boot/vmlinuz-2.6.32-5-xen-amd64' ramdisk = '/boot/initrd.img-2.6.32-5-xen-amd64' vcpus = '1' memory = '256' # Festplattengerät(e). # root = '/dev/xvda2 ro' disk = [ 'file:/home/xen/domains/xen1.example.com/disk.img,xvda2,w', 'file:/home/xen/domains/xen1.example.com/swap.img,xvda1,w', ] # # Physikalische Volumes # # # Hostname # name = 'xen1.example.com' # # Netzwerk # vif = [ 'ip=192.168.0.101,mac=00:16:3E:E8:61:97' ] # # Verhalten # on_poweroff = 'destroy' on_reboot = 'restart' on_crash = 'restart' |

(Bitte beachten Sie: Wenn Sie einen Dual-Core- oder Quad-Core-CPU haben und möchten, dass die virtuelle Maschine alle CPU-Kerne verwendet, ändern Sie die Zeile vcpus in vcpus = ‘2’ oder vcpus = ‘4’.)

Um die virtuelle Maschine zu starten, führen Sie aus

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

root@server1:~# xm create /etc/xen/xen1.example.com.cfg
Verwende Konfigurationsdatei “/etc/xen/xen1.example.com.cfg”.
Domain xen1.example.com (id=1) gestartet
root@server1:~#

Führen Sie aus

xm console xen1.example.com

um sich bei dieser virtuellen Maschine anzumelden (tippen Sie CTRL+] ein, wenn Sie an der Konsole sind, oder CTRL+5, wenn Sie PuTTY verwenden, um zu dom0 zurückzukehren), oder verwenden Sie einen SSH-Client, um sich mit ihr zu verbinden (192.168.0.101).

Um eine Liste der laufenden virtuellen Maschinen zu erhalten, geben Sie ein

xm list 

Die Ausgabe sollte so aussehen:

root@server1:~# xm list
Name                                        ID   Mem VCPUs      State   Time(s)
Domain-0                                     0  2811     2     r—–    137.2
xen1.example.com                             1   256     1     -b—-      1.7
root@server1:~#

Um xen1.example.com herunterzufahren, tun Sie dies:

xm shutdown xen1.example.com 

Wenn Sie möchten, dass xen1.example.com beim nächsten Booten des Systems automatisch startet, tun Sie dies:

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

Hier sind die wichtigsten Xen-Befehle:

xm create -c /path/to/config - Starten Sie eine virtuelle Maschine.
xm shutdown - Stoppen Sie eine virtuelle Maschine.
xm destroy - Stoppen Sie eine virtuelle Maschine sofort, ohne sie herunterzufahren. Es ist, als würden Sie den Netzschalter ausschalten.
xm list - Listet alle laufenden Systeme auf.
xm console - Melden Sie sich bei einer virtuellen Maschine an.
xm help - Liste aller Befehle.

Eine Liste aller virtuellen Maschinen, die mit dem Befehl xen-create-image erstellt wurden, ist unter

xen-list-images

root@server1:~# xen-list-images
Name: xen1.example.com
Speicher: 256
IP: 192.168.0.101
root@server1:~#

Um mehr darüber zu erfahren, was Sie mit xen-tools tun können, werfen Sie einen Blick auf dieses Tutorial: https://www.howtoforge.com/xen_tools_xen_shell_argo

Share: X/Twitter LinkedIn

Erhalte neue Beiträge in deinem Posteingang.

Kein Spam. Jederzeit abmelden.