PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Xen 2.0.6 Installation aus dem Sourcecode mit angepasstem Kernel 2.6.10.11



fehl-x
10.07.05, 11:50
Eine pdf-Version gab es mal. Jetzt aber nicht mehr ;-)

felix

ps. Gefundene Fehler, Kritik und Sonstiges per PN an mich!

fehl-x
10.07.05, 11:51
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

fehl-x
10.07.05, 11:53
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.

fehl-x
10.07.05, 11:56
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

fehl-x
10.07.05, 12:02
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.

fehl-x
10.07.05, 12:07
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.

fehl-x
10.07.05, 12:15
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

fehl-x
10.07.05, 13:01
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.

fehl-x
10.07.05, 13:04
An dieser Stelle ein Verweiss auf an anderes Howto: http://www.pug.org/index.php/Xen-Installation

fehl-x
07.09.05, 09:31
[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

fehl-x
19.02.06, 21:50
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