3) Xen mit Suse Linux nutzen
3.1) Xen Basisinstallation
Suse kann Xen komfortabel über Yast2 installieren. Zunächst muss man das Paket "yast2-vm" installieren:
Code:
zypper install yast2-vm
Danach ist in Yast2 der Menüpunkt "Virtualisierung" vorhanden. Die weitere Installation erledigt dann menügeführt die Funktion "Hypervisor und Werkzeuge installieren".
Dadurch werden weitere Verwaltungswerkzeuge installiert:
- Yast2 / Virtualisierung / Virtual Machine Manager
- Yast2 / Virtualisierung / Virtuelle Computer erstellen
Außerdem wird ein spezieller Xen-Kernel installiert.
Nach der Installation muss der PC neu gestartet werden, wobei man im Bootmenü dann den Xen-Kernel wählen muss.
3.2) Xen und Nvidia Grafikkarten
3.2.1) Original Nvidia Treiber nutzen (Standard+Xen)
Standardmäßig gehen der Nvidia Treiber und Xen nicht zusammen. Mit etwas Handarbeit kriegt man das ganze dennoch zum Laufen.
Getestet mit:
- Nvidia Treiber 1.0-173.08, Suse 10.3-64 Bit, Kernel 2.6.22.17-0.1
- Nvidia Treiber 1.0-173.14.05, Suse 11.0-64 Bit, Kernel 2.6.25.4-8
Zunächst muss der Nvidia Treiber in der Standardumgebung, also kein Xen-Kernel, normal installiert werden. Siehe dazu: http://www.linuxforen.de/forums/show...threadid=86435
Wenn das läuft, wird der PC mit dem Xen-Kernel neu gestartet.
Im folgenden ist die Kernelversion (hier "2.6.22.17-0.1") anzupassen. Bei 32-Bit Distributionen ist "x86_64" durch "i386" zu ersetzen. Alle Befehle im folgenden mit root-Berechtigung ausführen!
Als nächstes einen eigenen Xen-Kernel-Source-Zweig anlegen anlegen
Code:
cp -r /usr/src/linux /usr/src/linux-xen
Falls ein Kernel vor 2.6.24 eingesetzt wird, muss danach im Kernelsource-Verzeichnis ein zusätzliches Includeverzeichnis erstellt werden:
Code:
cd /usr/src/linux-xen
mkdir include2
cd include2
ln -s /usr/src/linux-xen/include/asm-x86-64 asm
Nun muss der Xen-Kernel konfiguriert werden:
Suse 11.0/Kernel 2.6.25:
Code:
cd /usr/src/linux-xen
cp arch/x86_64/defconfig.xen .config
make oldconfig
make scripts
make prepare
Suse 11.1/Kernel 2.6.27:
Code:
cd /usr/src/linux-xen
cp /usr/src/linux-2.6.27*obj/x86_64/xen/.config .config
cp /usr/src/linux-2.6.27*obj/x86_64/xen/Module.symvers Module.symvers
make scripts
make prepare
Jetzt den Nvidia Treiber entpacken und in das entpackte Verzeichnis gehen:
Code:
sh N*173.08*run --extract-only
cd NVIDIA*pkg2/usr/src/nv
Dann kann das Kernelmodul des Treibers übersetzt werden:
Code:
export IGNORE_XEN_PRESENCE=1
export SYSSRC=/usr/src/linux-xen
make module
Zuletzt das Modul umkopieren und testweise den X-Server starten:
Code:
cp nvidia.ko /lib/modules/2.6.22.17-0.1-xen/kernel/drivers/video
depmod -a
insmod ./nvidia.ko
startx
Wenn jetzt der X-Server startet, ist alles in Ordnung. Danach einfach den PC mit Xen-Kernel neu starten.
Links:
http://www.nvnews.net/vbulletin/showthread.php?t=106395
http://en.opensuse.org/Use_Nvidia_driver_with_Xen
3.2.2) In Xen den "nv" Treiber nutzen, sonst den Original Nvidia
Mit der folgenden Lösung startet der PC bei Auswahl des Xen-Kernels mit dem nv-Treiber, sonst mit dem nvidia-Treiber.
Dazu müssen zunächst 2 xorg.conf-Dateien vorhanden sein:
- /etc/X11/xorg.conf.nvidia => nvidia-3D-Treiber
- /etc/X11/xorg.conf.nv => nv-2D-Treiber
Über den Autostart wird abhängig von einem Boot-Parameter ein Link "xorg.conf" auf die jeweilige Konfiguration gesetzt.
Code:
rm /etc/X11/xorg.conf
if [[ ${X_DRIVER} != "nv" ]] ; then
echo 'NVIDIA-3D-Treiber'
ln -s /etc/X11/xorg.conf.nvidia /etc/X11/xorg.conf
else
echo 'NV-2D-Treiber'
ln -s /etc/X11/xorg.conf.nv /etc/X11/xorg.conf
fi
Dieses Script bei Suse in die Datei "/etc/rc.d/boot.local" schreiben.
Beim Start mit dem xen-Kernel muss der Bootparameter "X_DRIVER" gesetzt werden. Auszug aus der Datei "/boot/grub/menu.lst":
Code:
title Xen -- openSUSE 11.1 - 2.6.27.7-9
root (hd0,1)
kernel /boot/xen.gz
module /boot/vmlinuz-2.6.27.7-9-xen ... X_DRIVER=nv
module /boot/initrd-2.6.27.7-9-xen
4) Xen Verwaltung, Gäste installieren (voll-virtualisiert)
ConVirt
Im folgenden wird zur Konfiguration, Installation und Starten von Gästen das Programm ConVirt vorausgesetzt. Mit ConVirt lassen sich per GUI Gäste installieren und starten.
Homepage: http://gnomefiles.org/app.php/ConVirt
Zum Start des Programms eine Konsole öffnen, per "su" als root anmelden und dann "convirt" eingeben.
Natürlich kann auch das Standard-Tool virt-manager verwendet werden (siehe 4.4).
Weiterhin kann Xen über das Kommando xm an der Kommandozeile administriert werden.
4.1) Neuinstallation eines Windows Gastes
- Zunächst muss man unter "Image Store" den Punkt "Windows_CD_Install" markieren.
- Über das Kontextmenü (rechte Maustaste) "Edit Settings wählen".
- Im folgenden Dialog unter "Provisioning" den Parameter "VM_DISKS_DIR" anpassen.
- Verzeichnis eingeben, wo die Images liefen sollen. Dann "OK".
- Über das Kontextmenü dann "Provision" wählen.
- Im folgenden Dialog "localhost" wählen.
- Danach startet der Gast-Einstellungsdialog.
- Hier folgende Einstellungen setzen/kontrollieren:
Code:
- General / VM Name => z. B. WinXP
- General / Memory => bei Vista mindestens 768 MB, bei XP 512, bei 2 K 256
- General / Connetced Disks => Kontrolle CDROM-Device (Standard /dev/cdrom)
- Miscellaneous / acpi => bei Vista "1", bei XP / 2 K egal
- Miscellaneous / apic => bei Vista "1", bei XP / 2 K egal
- Miscellaneous / sdl => "1" (siehe untern SDL <=> VNC)
- Miscellaneous / vnc => "0" (siehe untern SDL <=> VNC)
- Im Anschluss wird der Gast mit einem leeren Image angelegt.
- Dann die passende Windows CD einlegen und den "Start" Button drücken.
Im Anschluss erfolgt eine Windows Installation analog zur echten Blechbüchse inkl. Neustart des Gastes zwischendurch.
Nach Abschluss der Installation muss man den Gast noch so umstellen, dass von dem Image und nicht mehr der CD gebootet wird.
- Gast markieren
- "Change VM Settings" per Kontextmenü wählen
- "Miscellaneous" / "boot" => "c" einstellen.
4.2) Linux Gäste, voll virtualisiert
Auch ein Linux Gast lässt sich mit Vollvirtualisierung installieren. Für ältere Distributionen ohne modifizierten Xen-Kernel ist dies sogar die einzige Möglichkeit.
Der Ablauf ist analog zum Windows Gast, allerdings muss bei ConVirt/ImageStore der Punkt "Linux_CD_Install" gewählt werden.
Bezüglich Sound/Maus siehe unten, Tipps&Tricks.
4.3) Images übernehmen, Images verwalten
Im folgenden wird ein parallel installiertes Qemu vorausgesetzt, um den Befehl "qemu-img" nutzen zu können. Im Paket "xen-tools" sind zwar auch entsprechende Kommandos enthalten (img2qcow, qcow-create, qcow2raw), allerdings bei weitem nicht so mächtig wie qemu-img.
Tipps zu qemu-img siehe auch: http://www.linuxforen.de/forums/show...9&postcount=10
4.3.1) Qemu-Images übernehmen
Windows Gäste laufen wie bereits erwähnt in einem virtuellen PC aus Qemu Komponenten. Daher können Qemu-Gäste problemlos übernommen werden:
- Zunächst wie zuvor einen Windows Gast anlegen
- Hierbei wird ein leeres Image für den neuen Gast angelegt
- Vor dem ersten Start einfach das vorhandene Qemu-Image über das neue drüberkopieren:
Code:
cp /home/qemu/images/winxp.img /home/xen/images/winxp.disk.xm
- Dann die Gastkonfiguration ändern (Gast markieren, "Change VM Settings")
- Im Reiter "Miscellaneous" zuletzt auf "boot-c" umstellen
- Weitere Einstellungen siehe oben.
4.3.2) qcow-Images
Normalerweise legt convirt immer raw-Images an. Ein Image mit max. 20 GB belegt hier von Anfang an 20 GB. Allerdings kann auch das Qemu-Format "qcow" verwendet werden. Hier belegt das Image maximal so viel Platz wie der Gast aktuell belegt. Bei Bedarf wächst dieses Image bis zur Maximalgröße.
Umwandlung eines raw-Images in ein qcow-Image:
Code:
qemu-img convert winxp_raw.disk.xm -O qcow winxp_qcow.disk.xm
Anlegen eines 20 GB großen qcow Images:
Code:
qemu-img create -f qcow winxp_qcow.disk.xm 20G
convirt legt als Standard immer raw-Images an. Will man lieber ein anderes Format oder auch eine andere Größe, müsste man entweder das Create-Script von convirt anpassen oder nach vorheriger Vorgehensweise nach Anlegen der Gastkonfiguration einfach ein mit qemu-img erzeugtes Image unterjubeln.
In convirt muss man auch entsprechend beim Zuordnen des Images den Typ "qcow" auswählen. In der Gastkonfiguration sieht das z. B. so aus:
Code:
disk=['tap:qcow:/home/vms/xen/images/win2k.qcow,hda,w']
4.3.3) VMWARE-Images übernehmen
Unter der Voraussetzung, dass das VMWARE Image eine zusammenhängende Datei ist, kann man auch dieses übernehmen:
- Mit Hilfe des VMWARE Tools "vmware-vdiskmanager" (Workstation, Server) lässt sich zunächst ein passendes VMWARE Image schaffen, wenn es nicht eine zusammenhängende Datei ist.
- Umwandlung z. B.:
Code:
qemu-img convert -f vmdk winxp.vmdk -O raw winxp.disk.xm
Weitere Anleitung: http://ian.blenke.com/vmware/vmdk/xen/hvm/qemu
4.4) Virt-Manager
Hinter "Yast2 / Virtualisierung / Virtual Machine Manager" verbirgt sich letztlich das Tool "virt-manager".
Ab Version 0.60 kann das Tool auch neue Gäste anlegen inkl. Soundkarte. Daher sollte man sich zunächst eine neue Version installieren. Download und Installation z. B. über http://software.opensuse.org/search
Xen erfordert Rootrechte. Damit man das Tool als User über sudo nutzen kann, ohne dauernd das Kennwort einzugeben, sind folgende Änderungen notwendig:
- beim Hochfahren von Gnome/KDE im Autostart ein Script starten mit folgendem Befehl:
- die Datei "/etc/sudoers" erweitern/ergänzen (Fettdruck):
Code:
Defaults env_keep = "LANG LC_ADDRESS LC_CTYPE LC_COLLATE LC_IDENTIFICATION LC_MEASUREMENT LC_MESSAGES LC_MONETARY LC_NAME LC_NUMERIC LC_PAPER LC_TELEPHONE LC_TIME LC_ALL LANGUAGE LINGUAS XDG_SESSION_COOKIE DISPLAY"
...
Username ALL=NOPASSWD:/usr/bin/virt-manager
- einen Starter auf den Desktop legen, Befehl "sudo virt-manager"
Alternativen:
- Start als Anwender, bei Bedarf wird dann das root-Kennwort abgefragt
- Kommadozeile öffnen, Root-Login mit "su -"
- grafisches-Login als root
Nach dem Start der Anwendung zunächst einen Doppelklick auf die Zeile "localhost" machen, das baut die Verbindung zu Xen auf. Es werden dann alle bereits vorhanden Domänen angezeigt.
Ein Doppelklick auf eine Domäne (DOM1-n) öffnet dann ein weiteres Fenster mit Eigenschaften (Hardware) und einer VNC-Konsole zur Anzeige.
Um einen neuen Gast anzulegen, in der Zeile "localhost" über die rechte Maustaste das Kontextmenü öffnen, die Funktion "Neu" auswählen. Im folgenden Assistenten kann ein neuer Gast dialoggeführt "zusammengebaut" werden.
Zum Anlegen eines neuen Gastes nach dem Start einen Doppelklick
Homepage: http://virt-manager.et.redhat.com/
4.5) "xm" in der Kommandozeile
In einer Konsole mit Root-Login (xterm, su) kann über das Kommando "xm" Xen verwaltet werden.
Durch Eingabe von "xm --help" erhält man eine Liste der Optionen. Eine ausführliche Hilfe zeigt das Kommando "man xm".
5) Tipps & Tricks für vollvirtualisierte Gäste
Erweiterung / Änderung der Gastkonfiguration
Bei ConVirt dazu den Gast markieren und "Edit VM Config File" starten. Einige Einstellungen lassen sich auch mit der Funktion "Change VM Settings" ändern.
Bei virt-manager muss das jeweilige Gastfenster geöffnet werden, die Änderungen erfolgen im Reiter "Hardware".
Deutsche Tastaturbelegung
Damit die Gäste eine deutsche Tastaturbelegung erhalten, muss in der Datei "/etc/xen/xend-config.sxp" folgende Zeile stehen:
Falls der Parameter "keymap" bereits mit einer anderen Belegung gesetzt ist, diese Zeile entsprechend abändern.
Falls man "virt-manager" benutzt und obige Einstellung nicht hilft:
- Gastfenster öffnen, Reiter "Hardware"
- In der Liste "Anzeige" öffnen, entfernen
- "Add Hardware", Hardware-Typ "Graphics Device"
- Im folgenden Fenster bei Tastaturlayout: "Gleich wie Host" abwählen, bei "Andere" "de" eingeben
SDL <=> VNC
Normalerweise läuft ein Windows Gast in einem VNC-Fenster. Man kann wie auch bei Qemu den Gast in einem SDL-Fenster laufen lassen. Dazu müssen folgende Einstellungen in der Gastkonfiguration eingetragen bzw. geändert werden:
Code:
sdl=1
vnc=0
vncviewer=0
Bei SDL startet der Gast in einem SDL Fenster. Mit Beendung des Fensters beendet sich auch der Gast. Außerdem kann der Gast dann nur bei laufendem X-Server starten.
Bei VNC läuft der Gast im Hintergrund und auch ohne X-Server. Bei ConVirt kann man so zum Gast schalten:
- Auswahl "localhost"
- Gast markieren
- Button "Console" drücken
- Bei VNC läuft der Gast auch nach Beendigung des Fensters "Console" im Hintergrund weiter.
Übergangslose Maus (SDL) bzw. Mauszeiger Host/Gast nicht synchron (VNC)
Falls die Mauszeiger von Host und Gast nicht deckungsgleich übereinander liegen oder wenn man bei einem SDL-Fenster in Vollvirtualisierung eine übergangslose Maus haben will, hilft das Hinzufügen folgender Zeilen in die Gastkonfiguration:
Code:
# USB wird aktiviert
usb = 1
# als Maus wird Tablet genommen
usbdevice = 'tablet'
Bei einem Linux Gast muss noch der "evtouch"-Treiber installiert werden:
http://stz-softwaretechnik.com/~ke/t...n/evtouch.html
Danach muss man herausfinden, welches Event-Interface man nehmen muss (Kommandozeile im Gast, root):
Code:
cat /proc/bus/input/devices
Das gewünschte Interface ist "... QEMU USB TABLET". Steht dort "event3", kann man einen Eintrag in die "xorg.conf" als Ersatz für die bisherige Maus vornehmen, bei "Option Device" die zuvor bestimmte Schnittstelle eintragen:
Code:
Section "InputDevice"
Identifier "Mouse1"
Driver "evtouch"
Option "Protocol" "usb"
Option "Device" "/dev/input/event3"
Option "DeviceName" "touchscreen"
Option "SendCoreEvents"
Option "CorePointer"
Option "MinX" "0"
Option "MinY" "0"
Option "MaxX" "32767"
Option "MaxY" "32767"
Option "ReportingMode" "Raw"
EndSection
Nach einem Neustart des X-Servers sollte die übergangslose Maus einwandfrei funktionieren.
Bei einem Windows Gast ist nichts weiter einzurichten.
Sound aktivieren
Durch folgende Zeile in der Gastkonfiguration erhält der Gast eine es1370-Soundkarte:
Gast im Fullscreen laufen lassen
Hierzu einfach im laufenden Gast [Strg]-[Alt]-[F] drücken, zurück zur normalen Anzeige mit der gleichen Tastenkombination.
Vista Gäste
Bei Vista muss "acpi=1" und "apic=1" eingestellt werden ("Change VM Setiings" / "Miscellaneous").
3D im Gast
Über die Software vmgl wird im Gast 3D Funktionalität ermöglicht, ohne dem Gast eine eigene Grafikkarte zuzuweisen: http://www.cs.toronto.edu/~andreslc/vmgl/
Das ganze allerdings nur für Linux/*BSD Host und Gast mit xorg bzw. x11-X-Server.
Das Programm muss sowohl am Host als auch im Gast installiert werden. OpenGL Aufrufe werden dann von vmgl vom Gast an den Host weitergegeben und dort ausgeführt.
Linux-CD-Installation sehr langsam bei Vollvirtualisierung
Falls die Installation eines Linux bei Voll-Virtualisierung zu langsam ist, sollte man ACPI und APIC in der Gastkonfiguration deaktivieren (Wert "0") (Change VM Settings / Miscellaneous).
Nach der Installation kann man beides wieder zuschalten (Wert "1").
Windows Gast Tools für paravirtualisierten Zugriff
Auch für Windows Gäste gibt es spezielle Gasttools, mit deren Hilfe der Netzwerk und Festplattenzugriff beschleunigt wird. Bedingung: Der Gast muss mit ACPI installiert sein.
Links:
http://wiki.xensource.com/xenwiki/XenWindowsGplPv
http://wiki.xensource.com/xenwiki/Xe...lPv/Installing
http://www.meadowcourt.org/downloads/
Zeit vom Host übernehmen
Damit der Gast die gleiche Uhrzeit hat wie der Host, einfach folgenden Parameter in die Gast-Konfigurationsdatei einfügen:
HVM Konsole
Wie bei Qemu kann man per [Strg]-[Alt]-[2] im Gastfenster zur Konsole wechseln. Dazu muss aber folgender Parameter in die Gast-Konfigurationsdatei eingefügt werden:
Über [Strg]-[Alt]-[1] kann man wieder zum Gastfenster umschalten.
6) Tipps & Tricks für paravirtualisierte Gäste
Mauszeiger Host/Gast nicht synchron (Linux-Gast)
Hier muss auf den evdev-Maustreiber umgestellt werden:
Code:
Section "InputDevice"
...
Driver "evdev"
Option "Device" "/dev/input/event1"
...
EndSection
Prüfung, welches Event-Interface man nehmen muss (Kommandozeile im Gast, root):
Code:
cat /proc/bus/input/devices
Grafikauflösung bei Nutzung des xenfb-Framebufferdevices
Aktuell kann der Gast bei Nutzung des Framebufferdevices nur bis zu einer Auflösung von 800x600 eingestellt werden. Höhere Auflösungen sind erst ab Xen 3.2 möglich.
Hierzu muss in die Gast-Konfigurationsdatei folgende Zeile eingefügt werden (bzw. ergänzt, wenn "extra=" bereits vorhanden:
Code:
extra='xenfb.video=16,1024,900'
Im Beispiel steht "16" für 16 MB Videospeicher, 1024x900 ist die gewählte Auflösung. Es lassen sich hier beliebige Werte eintragen.
Sound
Sound wäre nur über ein Durchreichen der Soundkarte als PC-Device möglich. Man kann jedoch auch per Netzwerk über den esd-Soundserver auf die Soundkarte des Hosts zugreifen.
Im Host muss der Soundserver so gestartet werden (5001=TCP-Port für Soundweiterleitung):
Code:
esd -tcp -public -port 5001
Im Gast muss man vor der Anmeldung folgende Systemvariable setzen (bei Suse z. B. in "/etc/bash.bashrc"):
Code:
export ESPEAKER=a.b.c.d:5001
(a.b.c.d=IP-Adresse des Xen-Hosts)
Programme, die mit dem esd-Soundserver zusammenarbeiten, können dann so Sound ausgeben.
7) Installation von paravirtualisierten Gästen
Xen ist sehr wählerisch, was das Zusammenspiel der Dom0 mit den DomUs anbelangt. Nicht jede beliebige Kombination Host / Gast bzw. Xen Host- / Xen Gastkernel lassen sich zum Laufen bewegen. Ebenso kann nicht jede CD/DVD zur Neuinstallation verwendet werden. Problematisch sind z. B. Live CDs.
Ein paravirtualisierter Xen Gast kann sowohl in einem raw-Image als auch auf einer echten Partition angelegt werden.
7.1) Installation eines Suse Gastes auf Suse Host bei gleicher Distributionsversion
Sofern man die gleiche Distribution in der gleichen Version als Gast installieren will, ist die Installation bei Suse geradezu ein Kinderspiel.
Hierzu folgende Vorgehensweise:
- Yast2 / Virtualisierung / Virtuelle Computer erstellen
- Option "Es muss ein Betriebssystem neu installiert werden" / Vor
- SUSE / openSUSE
- Platten: Plattengröße anpassen (falls inkl. X-Server, eher 10 GB wählen)
- Platten: CDROM hinzufügen als Image oder das physikalische Laufwerk
- "OK" startet dann die Installation
Zunächst wird das Image angelegt, einige Minuten später startet die Installation.
Getestet mit: Suse 10.3, Host 64 Bit, Gast 32 Bit, Xen 3.1x
7.2) Vorhandene Images nutzen bzw. Vorbereitung der Installation als HVM-Gast
Sobald Host / Gast bzw. Versionen voneinander abweichen, ist es in den meisten Fällen einfacher, zunächst eine lauffähige HVM-Version des Gastes (also vollvirtualisiert) zu erstellen.
Später kann man dann die Verzeichnisstruktur eines so angelegten Gastes für einen neu angelegten Gast übernehmen.
Grundlage kann also sein:
- Eine VMWARE-Appliance, also eine fertige VMWARE Maschine (Umwandlung in ein raw-Image per "qemu-img", siehe oben)
- Qemu Images (falls cow-Image, per "qemu-img" umwandeln, siehe oben)
- Ein Xen-HVM-Gast
Damit ein Gast überhaupt paravirtualisiert als DomU starten kann, sollte im Gast vorab noch folgendes installiert werden:
- xen-Kernel
- xen / xen-tools-domU
Sobald das Gastimage als Basis komplett ist, wird ein neues Image angelegt, um den Dateibaum aus dem Basisimage in den künftigen Xen Gast zu übertragen.
Die weitere Vorgehensweise als grober Ablauf:
- Anlegen eines leeren Gastimages (inkl. partitionieren, formatieren, bootbar machen)
- Verzeichnisbaum aus Basisimage umkopieren in neues Gastimage
- Anpassung einer Konfigurationsdateien im neuen Gast (z. B. "/etc/fstab")
- Anlegen eines swap-Images
- Erstellung der Xen-Konfiguration
Ausführliche Links hierzu:
- Xen Handbuch: http://www.cl.cam.ac.uk/research/srg.../readmes/user/ (Kapitel A.3.2 Using disk image files)
- http://www.linuxforen.de/forums/show...68&postcount=2
7.3) Fertige Xen Images
http://jailtime.org/
http://wiki.computerwoche.de/doku.ph...ual-appliances