DebianXenKernelbauen
Aus Xen-Forum-Wiki
Diese Anleitung soll dabei helfen, einen eigenen angepassten XEN-Kernel zu bauen. Die Schritte wurden unter Debian/Sarge ausgeführt, sollten aber in allen anderen Debian-Versionen auch so funktionieren. Die Schritte sind als root auszuführen. Es wird der Kernel 2.6.16.x mit XEN 3.0.2-2 verwendet. Bisher habe ich noch nicht den Link zu einer aktuelleren XEN-Version gefunden, welche mit Kernel 2.6.17.x funktioniert. Es könnte XEN 3.0.2-3 sein.
Inhaltsverzeichnis |
XEN-Kernel für Debian bauen
Vorbereitung
Um den Kernel zu kompilieren sind einige Zusatzpakete nötig. Wichtig ist, dass man das Paket kernel-package nicht aus Sarge benutzt, da dies noch nicht mit XEN zurecht kommt. Hier sollte man die Version von backports.org nehmen. Setzt man Etch oder höher ein, so benötigt man keine andere Version.
Mit folgendem Aufruf werden die benötigten Pakete installiert:
apt-get install make libncurses5-dev libncurses5 gcc libc6-dev zlib1g-dev python python-dev python-twisted libcurl3 libcurl3-dev bzip2 automake autoconf vim ncurses-dev python2.3-dev
Und das Paket kernel-package von www.backports.org
apt-get install -t sarge-backports kernel-package
Wie man apt für die Installation aus den backports einrichtet, steht hier
Nach dieser Vorbereitung wird nach /usr/src gewechselt:
cd /usr/src
Nun werden die XEN-Sourcen heruntergeladen:
wget http://www.cl.cam.ac.uk/Research/SRG/netos/xen/downloads/xen-3.0.2-2-src.tgz
entpackt:
tar xzf xen-3.0.2-2-src.tgz
und in das Verzeichnis gewechselt:
cd xen-3.0.2-2
Um den neusten Kernel aus der 2.6.16er Reihe (2.6.16.29; Stand 15.10.2006) zu benutzen, muß der Eintrag für die herunterzuladende Kernelversion in der Datei mk.linux-2.6-xen angepasst werden. Die Kernelversion darf für XEN 3.0.2-2 nicht kleiner als 2.6.16.12 sein!
vi buildconfigs/mk.linux-2.6-xen
Die Einträge am Anfang der Datei sind wie folgt anzupassen:
OS = linux LINUX_SERIES = 2.6 LINUX_VER = 2.6.16.29 LINUX_SRCS = linux-2.6.16.29.tar.bz2 EXTRAVERSION ?= xen ...
Konfigurieren
Um nun den Kernel zu konfigurieren, gibt man im Verzeichnis der XEN-Sourcen (da sollte man sich auch noch befinden) folgenden Befehl ein:
make linux-2.6-xen0-config CONFIGMODE=menuconfig
Es wird dabei der Kernel, welchen man in der Datei buildconfigs/mk.linux-2.6-xen eingetragen hat, herunter geladen, entpackt und zum Konfigurieren mit menuconfig geöffnet. Möchte man den Kernel selber downloaden oder hat es bereits, dann muss die *.tar.bz2-Datei im Verzeichnis /usr/src/xen-3.0.2-2 liegen. Er wird dann ebenfalls entpackt.
Es wird nun ein Dom0 Kernel gebaut. Treiber für z.B. IDE-/SCSI-/SATA-Controller, den Prozessor, XEN, ... sollten fest in den Kernel aufgenommen werden. Netzwerkkarten, oder Geräte, welche nicht sofort beim Start benötigt werden, können als Modul eingetragen sein.
Kompilieren
Um den Kernel zu kompilieren, wird in das Kernelverzeichnis gewechselt, welches nun im XEN-Source-Verzeichnis entstanden ist. Darin folgendes Kommando ausführen:
make-kpkg --revision xen1 kernel_image
Der Kernel wird nun kompiliert und in ein Debian-Paket gepackt. Dieses lässt sich anschließend mit
dpkg -i linux-xen0-KERNELVERSION_0.1_i386|amd64.deb
Nun müssen noch manuell die Einträge in Grub gemacht werden.
Kernel für eine DomU bauen
Um einen Kernel für eine DomU zu erstellen, sind die gleichen Schritte wie oben genannt nötig. Die Konfiguration startet man jedoch mit:
make linux-2.6-xenU-config CONFIGMODE=menuconfig
Im XEN-Source-Verzeichnis liegt dann ein Kernelverzeichnis, welches ein U im Namen hat. Es ist wichtig dieses Verzeichnis umzubenennen. Das U muss klein geschrieben werden, da make-kpkg nicht mit Großbuchstaben im Paketnamen zurecht kommt.
>ls linux-2.6.16.29-xenU
mv linux-2.6.16.29-xenU linux-2.6.16.29-xenu
Man kann dem Verzeichnis auch einen anderen Namen geben, z.B. den Namen für die Domain - linux-2.6.16.29-firewall.
Um auch dem Kernel einen individuellen Namen zu geben, kann man im Makefile im Kernelverzeichnis die Zeile:
XENGUEST = -xenu
durch z.B.:
XENGUEST = -firewall
ersetzt werden.
Mit
make-kpkg --revision 0.1 kernel_image
baut man dann wieder den Kernel.
Die Installation geschieht dann wieder mit dpkg wie bei dem Dom0-Kernel.
--McAldo 18:49, 15. Okt 2006 (CEST)
