Archiv verlassen und diese Seite im Standarddesign anzeigen : Xen 2.0.6 Installation aus dem Sourcecode mit angepasstem Kernel 2.6.10.11
Eine pdf-Version gab es mal. Jetzt aber nicht mehr ;-)
felix
ps. Gefundene Fehler, Kritik und Sonstiges per PN an mich!
1. Vorwort
2. benötigte Pakte
3. Xen 2.0.6 kompilieren
4. Anpassen des Kernels xen0
5. GRUB anpassen
5.1. Xen Standardkernel
5.2. selbst angepasster Kernel
6. Benchmarks
7. Installation und Konfiguration von Debian 'sarge' 3.1 als Gastsystem
l. Links
ll. Lizenz und Copyrightbestimungen
Xen 2.0 stellt die Möglichkeit innerhalb eines Betriebssystems weitere (para-)virtuelle Betriebssysteme zu betreiben. Dazu sind Modifikationen sowohl am Kernel des Hostbetriebssystems, sowie auch am Kernel des Gastbetriebssystems nötig, was das Betreiben von closedsource Betriebssystemen ausschließt.
Zur Zeit besteht die Möglichkeit GNU/Linux 2.4.x, 2.6.x und NetBSD 2 zu nutzen. Dieses Howto beschränkt sich allerdings auf GNU/Linux 2.6.11.
Als Informationsquellen dienten mir die offizielle Installationsanleitung der Xen-Entwickler [1] und eine weitere Anleitung zum patchen des Kernels für Xen [2].
Eine Installation von Xen 2.0.6 aus den Binaryfiles ist wesentlich einfacher, allerdings bietet der mitgelieferte Kernel keine optimale Hardwareunterstützung für das eigene System (Netzwerk und Sound waren bei mir mit dem mitgelieferten xen0-kernel nicht funktionstüchtig).
Ich behaupte nicht, dass der hier beschriebene Weg zu einem Xen 2.0.6 System mit eigenen Kernel irgendwie elegant ist, bzw. dass es nicht auch einfacher geht. Aber der hier beschriebene Weg ist der einzige Weg, der bei mir nach langem Probieren zum Ziel geführt hat.
Als Hostsystem dient mir Debian 'sarge' 3.1.
Zur Installation und Kompilierung der Xen-Programme/Tools und des Xen-Kernels werden folgende Programmpakete benötigt:
iproute2, bridge-utils, python-twisted, gcc-3.3, binutils, make, libcurl3-dev, zlib1g-dev, python-dev, transfig, bzip2, latex
Diese sollten sich bequem über das distributionseigene Paketmanagmentsystem installieren lassen. Für apt lautet der Befehl:
# sudo apt-get install iproute bridge-utils python-twisted gcc-3.3 binutils make libcurl3-dev zlib1g-dev python-dev transfig bzip2
Es empfiehlt sich in seinem home-Verzeichnis einen eigenen Ordner für die Xen-Installation anzulegen.
# cd ~
# mkdir xen
# cd xen
Danach werden die Quellarchive in einen eigenen Ordner geladen.
# mkdir archive
# cd archive
# wget http://www.kernel.org/pub/linux/kernel/v2.6/linux-2.6.11.10.tar.bz2
# wget http://www.cl.cam.ac.uk/Research/SRG/netos/xen/downloads/xen-2.0.6-src.tgz
# cd ..
Falls die URLs nicht mehr stimmen sollten, ist der Kernel 2.6.11.10 unter [3] zu finden und die Xen-Sourcen unter [4].
Jetzt werden die Quellarchive jeweils entpackt.
# tar -xvzf archive/xen-2.0.6-src.tgz
# tar -xvjf archive/linux-2.6.11.10.tar.bz2
Im Nächsten Schritt wird Xen 2.0 kompiliert.
# cd xen-2.0
# make world
Während dieses Schrittes werden die von Xen benötigten Tools und ein 2.6.10 Standardkernel kompiliert. Dieser Kernel lässt sich zwar booten, bietet aber keine weitere Hardwareunterstützung, so dass es nötig ist, später noch einen angepassten Kernel zu kompilieren.
Jetzt muss Xen noch installiert werden:
# sudo make install
# sudo sh ./install.sh
oder
# su
# make install
# sh ./install.sh
# exit
und man Ende wieder in das Installationsverzeichnis ~/xen wechseln.
# cd ..
Um die Performance des xen0-kernels zu erhöhen wird auf [1] empfohlen Thread Local Storage im Hostsystem auszuschalten.
# mv /lib/tls /lib/tls.disabled
Thread Local Storage kann jederzeit mit
# mv /lib/tls.disabled /lib/tls
wieder aktiviert werden.
Hinweis:
Wer keine angepassten Kernel nutzen möchte kann direkt mit Kapitel 5.1 GRUB Xen 2.0 Standardkernel fortfahren.
Wir befinden uns im Installationsverzeichnis ~/xen. Es wird ein neuer Ordner erstellt, dessen Dateien allerdings nur mit den Originalen in linux-2.6.11.10 verlinkt sind.
Ich habe mit tm635 einen Hinweis auf die verwendete Hardware (Acer Travelmate 635Lc) in den Kernelnamen eingebaut.
# cp -al linux-2.6.11.10 linux-2.6.11.10-tm635-xen0
Dann werden die neuen Kernelsourcen an Xen angepasst.
# cd xen-2.0/linux-2.6.11-xen-sparse/
# ./mkbuildtree ../../linux-2.6.11.10-tm635-xen0/
# cd ../..
# echo "-tm635-xen0" > linux-2.6.11.10-tm635-xen0/localversion-xen
# diff -Naur linux-2.6.11.10 linux-2.6.11.10-tm635-xen0 > archive/linux-2.6.11.10-tm635-xen0.patch
Kernel patchen:
# patch -p1 < ../archive/linux-2.6.11.10-tm635-xen0.patch
Jetzt kann kann der Kernel kompiliert werden. Das Ergebnis wird zunächst in einem extra Verzeichnis gespeichert und nicht sofort ins System kopiert.
Verzeichnis für Installationsergebnis erstellen und ins Kernelverzeichnis wechseln:
# mkdir install
# cd linux-2.6.11.10-tm635-xen0
Ein .config-file mit Xen-Standardkonfiguration ins Kernelverzeichnis kopieren:
# cp arch/xen/configs/xen0_defconfig .config
Definiert die Umgebungsvariablen, so dass der neue Kernel und seine Module im Verzeichnis install landen:
# ARCH=xen; INSTALL_PATH=../install; INSTALL_MOD_PATH=../install
# export ARCH INSTALL_PATH INSTALL_MOD_PATH
Kernel konfigurieren:
# make oldconfig
Weitere Kerneleinstellungen können mit
# make menuconfig
vorgenommen werden.
Hinweis:
Ein gutes Howto zur Kernelkonfiguration gibt's unter [5].
Kernel und Module kompilieren und installieren:
# make modules
# make modules_install
# make install
Danach müssen nur noch die Dateien/Ordner aus ~/xen/install in die entsprechenden Verzeichnisse kopiert werden.
# cd ../install/
# sudo cp boot/* /boot
# sudo cp -r lib/modules/2.6.11.10-tm635-xen0/ /lib/modules
# sudo cp -r usr/include/xen /usr/include
Nun muss GRUB, wie in Kapitel 5.2 beschrieben angepasst werden, dann kann der neue Xen-Kernel gebootet werden.
5.1. GRUB: Xen 2.0 Standardkernel
In [1] wird der Eintrag in /boot/grub/menu.lst so angegeben:
title Xen 2.0 / XenLinux 2.6
kernel /boot/xen-2.0.gz dom0_mem=131072
module /boot/vmlinuz-2.6-xen0 root=/dev/sda4 ro console=tty0
Die root-Partition, oben angeben mit root=/dev/sda4, muss natürlich noch angepasst werden.
Auf meinen Debian 'Sarge' 3.1 mit eigener boot-Partition musste der Eintrag allerdings wie folgt angepasst werden:
title Xen 2.0.6 / XenLinux 2.6.11.10-xen0
root (hd0,2)
kernel /xen.gz dom0_mem=131072
module /vmlinuz-2.6-xen0 root=/dev/hda5 ro console=tty0
Jetzt kann das System gerebooted werden. In GRUB dann natürlich Xen 2.0.6 / XenLinux 2.6.11.10-xen0 auswählen und gucken ob der Kernel bootet. Sollte er aber eigentlich.
5.1. GRUB: selbst angepasster Kernel
Im Prinzip muss in dem GRUB-Eintrag nur der Dateiname des angepassten Kernels eingetragen werden. Im ersten Fall (siehe 5.1) sieht das dann so aus:
title Xen 2.0 / XenLinux 2.6
kernel /boot/xen-2.0.gz dom0_mem=131072
module /boot/vmlinuz-2.6.11.10-tm635-xen0 root=/dev/hdaX ro console=tty0
root-Device Namen anpassen nicht vergessen!
Und im Fall einer eigenen boot-Partition (siehe 5.1) sieht der Eintrag so aus:
title Xen 2.0.6 / XenLinux 2.6.11.10-xen0
root (hd0,2)
kernel /xen.gz dom0_mem=131072
module /vmlinuz-2.6.11.10-tm635-xen0 root=/dev/hda5 ro console=tty0
Da ich das subjektive Gefühlt hatte, dass KDE-Programme mit xen0-Kernel länger brauchen zum starten, hab ich beschlossen, dass per Benchmark zu überprüfen. Die durchgeführten Benchmarks bestätigen meine subjektives Gefühl allerdings nicht.
Der Grund für das langsamere starten der KDE-Programme wird sein, dass der xen0-Kernel mit weniger Arbeitsspeicher als ein 'normaler' Kernel gestartet wird (Parameter dom0_mem=131072) gestartet wird.
An dieser Stelle ein Verweiss auf an anderes Howto: http://www.pug.org/index.php/Xen-Installation
[1] UsersManual der Entwickler
http://www.cl.cam.ac.uk/Research/SRG/netos/xen/readmes/user/user.html
[2] Howto: Kernel patchen
http://www.theshore.net/~caker/uml/xen-skas.txt
[3] Kernel Website
http://www.kernel.org/
[4] Xen Entwickler Website
http://xen.sf.net/
[5] Howto zur Kernelkonfiguration
http://www.linuxforen.de/forums/showthread.php?t=161878
[6] Benchmarks
http://www.freebench.org/
[7] Benchmarks-Tools
http://www.freebench.org/benchmarks.shtml
Dieses Howto ist unter der GNU Free Documentation License lizenziert.
englisches Orginal: http://www.gnu.org/licenses/fdl.html
inoffizielle deutsche Übersetzung: http://de.wikipedia.org/wiki/GNU_FDL/Text
zu nennender Autor: Felix Friedrich
Powered by vBulletin® Version 4.2.5 Copyright ©2024 Adduco Digital e.K. und vBulletin Solutions, Inc. Alle Rechte vorbehalten.