Zur Zeit gibt es nur wenige Threads zu Xen, so dass ich die Diskussion ein bischen anheizen möchte.Ich hoffe auf
mehr Xen Anwender um viele offene Fragen diskutieren zu können. Speichermanagement, clonen von Gastsystemen,
abarbeiten der Fehlermeldungen und bugs und vieles mehr im Bereich von nützlichen Anwendungen mit Xen.
Wie z.B. auf einem Gentoo-Wirt gleichzeitig 2 mal debian, gentoo, eis-fair, SuSe und WinXp(in qemu) laufen können
kann man sich hier ansehen. Und die vier wichtigsten: RedHatFC4, Suse10.0, debian Sarge und Gentoo sind hier. Und hier kann man ein Netzwerk in einem Rechner sehen.
Obwohl Xen sehr gut dokumentiert ist liegen die Schwierigkeit in den .configs, die man sich aber zwischenzeitlich runterladen kann.
Hier für eine Dom0 und hier für DomU.
In den .configs sollte für den ersten Test vielleicht nur der Prozessortyp (nicht die Xen Angaben ändern!),
Chipsatz und Filesystem geändert werden, alles andere ist erstmal egal und kann später repariert werden.
Die auftauchenden Fehlermeldungen können später korrigiert werden. Es kommt nur auf zwei Dinge an,
das der Kernel durchstartet und das beim booten des Dom0 Kernels die Zeile:
Code: Select all
ttyS0 to uart 16450 port 0x3F8 irq 4
Der Dom0 Kernel
Zuerst die nicht beschriebenen Abhängigkeiten:
Code: Select all
emerge iproute python twisted bridge-utils curl -pv
Code: Select all
emerge app-emulation/xen sys-kernel/xen-sources -pv
These are the packages that I would merge, in order:
Calculating dependencies ...done!
[ebuild R ] app-emulation/xen-8885 -custom-cflags -debug +doc -screen 0 kB
[ebuild R ] sys-kernel/xen-sources-2.6.16_rc3-r1 -build -doc -symlink 0 kB
Jetzt gibt es in /etc/ einen neuen Ordner /etc/xen. Hier sind die wichtigen Scripte für die Xenverwaltung
aufbewahrt.Ein lesen dieser Scripte lohnt sich übrigens immer. Wichtig ist die Datei xend-config.sxp,
in der sollte folgendes frei sein:
xend-config.sxp
Code: Select all
--schnip--
(network-script network-bridge)
...
(vif-script vif-bridge)
--schnap--
Code: Select all
-rw-r--r-- 1 root root 238569 23. Feb 23:24 xen-3.0.0.gz
lrwxrwxrwx 1 root root 12 23. Feb 23:24 xen-3.0.gz -> xen-3.0.0.gz
lrwxrwxrwx 1 root root 12 23. Feb 23:24 xen-3.gz -> xen-3.0.0.gz
lrwxrwxrwx 1 root root 12 23. Feb 23:24 xen.gz -> xen-3.0.0.gz
-rw-r--r-- 1 root root 2266199 23. Feb 23:24 xen-syms-3.0.0
Vor dem booten des neuen Kernels die /boot öffnen und in der fstab zum Beispiel:
Code: Select all
/dev/XXX /boot filesystem noatime 1 2
auf /boot sichergestellt sein muß.
Natürlich muß der linux Link auf den neuen Kernel gesetzt werden. Nach einem make mrproper kann
die Dom0 .config hineinkopiert werden und es kann los gehen. Nach dem kompilieren kann ein
"make install" ausgeführt werden. Die Links des alten Kernels werden nicht überschrieben, so dass
die Möglichkeit für ein Mehrkernelsystem erhalten bleibt. In der /boot sieht es dann so aus:
Code: Select all
vmlinuz-2.6.16-xen -> vmlinuz-2.6.16-rc3-xen-0
vmlinuz-2.6-xen -> vmlinuz-2.6.16-rc3-xen-0
In der /boot/grub/grub.conf wird nun z.B. so ein Eintrag benötigt:
Code: Select all
title Testing Xen 3.0.1 / Linux 2.6.16-rc3
root (hd0,0)
kernel /xen.gz dom0_mem=1G
module /vmlinuz-2.6.16-xen root=/dev/md5 ro noreboot
Die Bezeichnung "dom0_mem= " legt fest wieviel RAM dem Wirtssystem zur Verfügung gestellt wird.
Hier muß jeder selbst wissen was er einzutragen hat. Der "freie" Speicher ist für die späteren Gastdomains
vorgesehen. Zulässige Größenwerte sind k,K,M oder G. Der Code "noreboot" soll es uns ermöglichen,
die Fehlermeldungen eines beim booten abstürzenden Kernels für einige Sekunden zu sehen.
Wichtig: Vor dem booten den xen Kernels ist die /etc/init.d/net.eth0 aus dem runlevel herauszunehmen.
Code: Select all
rc-update del net.eth0
und xend dem runlevel hinzufügen
Code: Select all
rc-update add xend default
/etc/X11/xorg.conf von nvidia auf nv wechseln.
Und jetzt booten. Viel Glück!
Gibt es beim booten des neuen Kernels die Meldung zu ttyS0
Code: Select all
ttyS0 to uart 16450 port 0x3F8 irq 4
Sollte mal ein Fehler auftreten der so lautet:
Code: Select all
Error: Error connecting to xend: No such file or directory. Is xend running?
Code: Select all
mkdir /var/run/xenstored
mkdir /var/lib/xenstored
Code: Select all
xm top
Der DomU Kernel
Ich benutze für DomU ein eigenes Kernel-Verzeichnis:
Code: Select all
cp -R /usr/src/linux-2.6.16-rc3-xen-r1 /usr/src/linux-2.6.16-rc3-xen-r1-U
ein fröhliches "make mrproper" und die .config für DomU reinkopieren. In dieser .config braucht weniger
geänder werden. Prozessor, Cip und Filesystem sollten ausreichen.
Wichtig! Nach dem Kompilieren kein "make install" ausführen, sondern nur "make modules_install" und den
Kernel manuell kopieren. Ich verwende:
Code: Select all
cp vmlinuz /boot/vmlinuz-2.6.16-rc3-xen-r1-U
Gastsysteme
Jetzt braucht man ein Gastsystem. Hierzu bietet sich qemu an.
Ist mir aber zu langweilig und kqemu wird von Xen nicht unterstützt. Ich benutze die domi Scripte um mir schnell und einfach
Gastsysteme anlegen zu können. Beim ersten Anlegen eines Gastes sind die Scripte schon richtig schnell.
So richtig schön wird es aber, wenn man beim zweitenmal nur 3 Minuten für eine debian oder gentoo
Grundinstallation braucht. Hier würde ich erstmal debian empfehlen, schnell einzurichten und konfiguriert sich fast von alleine.
Die domi Scripte benötigen qtparted um die Filesysteme anzulegen:
Code: Select all
emerge qtparted -s
Ich benutze /root/xen-U-domains/domi/. Im verzeichnis sind nun diese Dateien enthalten:
Code: Select all
# ls
ChangeLog CVS domi domi-debian domi-fedora domi-functions domi-gentoo domi.man domi-suse initramfs Makefile README ttylinux
gibt es hier.
Und hier noch einige Erläuterungen zur domi.conf:
Code: Select all
#DOMI_NAME="mydebianguest" # Required Das ist der Name der DomU-Domain, die mit "xm top" zu sehen ist.
DOMI_NAME="mydebianguest "
##Name of the virtual machine.
#Distribution to install. Valid choices are suse, fedora, debian and gentoo.
#DOMI_DISTRO="debian" # Required. Hier sucht man sich seine Distri aus. Also nicht das Script angeben "domi-debian" sondern nur "debian"
DOMI_DISTRO="debian"
#DOMI_CACHE Location where downloaded files are cached.
#Default: /var/cache/domi # domi läd Dateien herunter und muß sie irgendwo zwischenspeichen
DOMI_CACHE="/var/cache/domi"
#DOMI_FSTYPE File system to use
#Default: ext2 # Auswahl des Dateisystem mit den größten vertrauen
DOMI_FSTYPE="ext2"
#DOMI_PASSWD Initial root password
#Default: root
DOMI_PASSWD="secret" # Selbsterklärend
#DOMI_VDISK
#Name of the virtual disk (inside the vm). "xvda" should do just
#fine with all modern, udev-based distros which create the device
#nodes automatically. In case of trouble you can try "hda" instead.
#Default: xvda
DOMI_VDISK="hda" # ich benutze lieber die alte Notation
#DOMI_XEN_CONF
#Recommended.
#If specified the script writes a initial Xen config file to the given
#location.
#DOMI_XEN_CONF="/etc/xen/auto/mydebianguest-startscript" # Hier wird Ort und Name des späteren Startscript angegeben, welche domi automatisch erstellt.
DOMI_XEN_CONF="/etc/xen/auto/mydebianguest-startscript " # Das Verzeichnis /etc/xen/auto ist von xen dafür vorgesehen.
#DOMI_XEN_KERNEL Xen kernel (for the Xen config file).
#Default: /boot/vmlinuz-xen
#DOMI_XEN_KERNEL="/path/to/the/DomU-kernel" # Genauer Pfad und die bezeichnung des DomU Kernels
DOMI_XEN_KERNEL=" "
#DOMI_XEN_MEMORY
#Main memory (for the Xen config file, in megabytes). Über wieviel Speicher darf diese Domain verfügen.
#Default: 128
DOMI_XEN_MEMORY = " "
#DOMI_DISK_VG
#LVM volume group to use for storage. If specied the script will
#create a volume with DOMI_NAME in that volume group and use it to
#setup the virtual disk.
#Recommended.
#DOMI_DISK_VG="volg-md9"# without a "/" # Für diejenigen die mit LVM arbeiten die Volumengruppe eintragen.
DOMI_DISK_VG=" "
#DOMI_DISK_FILE
#If you don't use LVM you can specify an image file to use for the
#virtual disk. Setting either DOMI_DISK_VG or DOMI_DISK_FILE is
#required.
#DOMI_DISK_FILE="/path/to/mydebianguest" # Wehr mit .img arbeitet muß Pfad und Name der Datei angeben.
DOMI_DISK_FILE=""
#DOMI_DISK_SPARSE
#Set this to some non-empty value to make domi use sparse file for the
#disk images. Has no effect if you use LVM.
#DOMI_DISK_SIZE
#Default: 4096domi-debian
#Size of the virtual disk, in megabytes. # Größe der virtuellen Festplatte. Hier sind es 4G
DOMI_DISK_SIZE="4096"
#DOMI_SWAP_SIZE
#Default: 256
#Size of the swap partition, in megabytes. # Größe der swap-partition innerhalb der virtuellen Festplatte.
DOMI_SWAP_SIZE="256"
#DOMI_ROOT_SIZE
#Default: DOMI_DISK_SIZE - DOMI_SWAP_SIZE
#Size if the root filesystem, in megabytes
#DOMI_HOOK_POST
#Custom postinstall script to run.
Wenn das alles eingetragen ist wird gestartet mit ./domi:
Code: Select all
/path/to/my/domi/./domi
Code: Select all
# general
name = "debian";
memory = 256;
# booting
kernel = "/boot/vmlinuz-2.6.16-rc3-xen-r1-U";
builder = "linux";
# virtual harddisk
disk = [ 'phy:volg-md9/debian,hda,w' ];
root = "/dev/hda1 ro";
# virtual network
vif = [ 'mac=aa:00:45:23:02:89' ];
dhcp = "dhcp";
Code: Select all
disk = [ 'file:/disks/gentoo-img/Gentoo-img.img,hda,w' ];
So und nun starten mit dem Kommando:
Code: Select all
xm create -c mydebianguest-startscript
Grafische Oberfläche und Übertragung mit VNC
Nun geht es in debian weiter mit den üblichen Fragen, die zu beantworten sind.
Danach sollte ein update durchgeführt werden und das Windowssystem mit KDE installiert werden.
Die Daten für Grafik und Monitor bereit halten!
Code: Select all
apt-get update
apt-get upgrade
( ein apt-get dist-upgrade zieht die komplette Distribution mit ein)
apt-get install xserver-xorg x-window-system
apt-get install kde
Code: Select all
apt-get install tightvncserver
Code: Select all
emerge tightvnc -pv
In dem debian ~home Verzeichnissen von root und den eingerichteten Usern ist die Datei
~/.vnc# cat xstartup zu modifizieren und sollte den Zusatz "startkde &" erhalten. "x-window-manager &"
ist auszukommentieren.
Code: Select all
~/.vnc# cat xstartup
#!/bin/sh
xrdb $HOME/.Xresources
xsetroot -solid grey
x-terminal-emulator -geometry 80x24+10+10 -ls -title "$VNCDESKTOP Desktop" &
#x-window-manager &
startkde &
Im debian System wird jetzt der vnc server aufgerufen mit
Code: Select all
vncserver -alwaysshared -geometry 1024x768 -depth 24
Es erscheint z.B. die Meldung:
Code: Select all
New 'X' desktop is sarge:1
Starting applications specified in /root/.vnc/xstartup
Log file is /root/.vnc/sarge:1.log
Code: Select all
vncviewer sarge:1
Alternativ kann man natürlich auch Krdc benutzen.
Mit den domi Scripten kann man leider noch kein Fedoro oder SuSe installieren. Hierzu wird im Wirtsystem yum oder yast vorausgesetzt.
Grüße
Ma
mod edit (subject): Werbung für:




