NetBSD 3 / Xen 2.0.7 - Basisinstallation und Konfiguration (DE)

Aus Xen-Forum-Wiki

Wechseln zu: Navigation, Suche

Inhaltsverzeichnis

Artikel-Lizenz

Dieser Artikel ist uneingeschränkt, frei verfügbar. Entsprechend wäre die BSD-Linzenz die einzig passende.

Einleitung

Xen ist ein Open Source Virtual Machine Monitor (VMM) für x86-Hardware welches ursprünglich an der Cambridge Universität entwickelt wurde. Inzwischen haben die Entwickler jedoch mit XenSource ein Unternehmen gegründet, das Xen zum Industriestandard machen will. Dennoch soll Xen weiterhin unter den Bestimmungen der GNU General Public License (GPL) bleiben. Entgegen den meisten VM emuliert Xen keine Harware sondern bildet eine Art Schnittstelle zwischen Hardware und Betriebssystem. Die Konfiguration und Steuerung erfolgt hierbei über das Wirts-Betriebssystem in der sogenannten privilegierten domain-0. Den Gastbetriebssystemen (domain-U) werden hier unter anderem Resourcen, wie zum Beispiel Anteile am verfügbaren Arbeitsspeicher zugewiesen. Die Anzahl der Gastbetriebssysteme wird lediglich durch die verfügbaren Resourcen und deren Aufteilung begrenzt. Die Xen-Architektur bietet nicht nur gute Performance sondern führt insgesamt zu einer hohen Stabilität und Unabhängikeit der Betriebssystem-Umgebungen.

Nachfolgend wird eine Beispiel-Installation/Konfiguration, sowohl eines Wirts- als auch eines Gastsystems beschrieben. Ich setze hierbei einfach mal voraus, dass ein Internetzugang zur Verfügung steht.

Voraussetzungen

Für die NetBSD-Basisinstallation verwendet man derzeit am besten das i386pkg-3.0.iso Image.

Weiterhin wird ein x86 Rechner benötigt. Für die ersten Gehversuche (und um das beschriebene Vorgehen nachzustellen) empfiehlt es sich einen dedizierten PC zu verwenden (also einen welcher eine leere Festplatte enthält). Für den Anfang wären 256 bis 512 MB Arbeistspeicher nicht schlecht. Es wäre sicherlich auch möglich mit weniger RAM zu arbeiten, mit mehr Performance macht es aber mehr Spass. Auf diesem Rechner wird zunächst NetBSD 3.0 anhand der Anfangs erstellten Installations-CD installiert (zur Basisinstallation siehe auch: http://www.lindloff.com/netbsd/netbsd-install.html)

Sofern möglich sollte der gesamte Festplattenplatz für die NetBSD-Installation zur Verfügung gestellt werden. Hierbei sollte bei der Aufteilung der Mount-Points darauf geachtet werden, dass ausreichend Platz für weitere disklabel-Partitionen reserviert werden, in welchen später NetBSD als dom-U installatiert wird.

Im Anschluss an die NetBSD-Installation sollte zunächst die Basiskonfiguration durchgeführt werden. In jedem Fall empfiehlt es sich die Netzwerkkonfiguration durchzuführen. Im Rahmen der Vorbereitung sollten bereits die Package-Collection installiert werden.

NetBSD-Installation als domain0

Nachdem alle Vorbereitungen abgeschlossen sind, kann die sogenannte privilegierte domain-0 erstellt werden. Hierbei handelt es sich um die Umgebung von der aus die Steuerung der weiteren domain-U erfolgt.

Um aus der NetBSD-Installation nun eine domain-0 zu erstellen bedarf es dreierlei:

  1. grub - Als Bootloader über dessen Konfiguration später xen mit einem NetBSD-Kernel als Modul geladen wird
  2. xentools20 - Zum einrichten der Steuerzentrale (der Xen-Kernel xen.gz sollte hier mitgeliefert werden)
  3. Kernel: Legen Sie die folgenden Kernel unter / ab - xen.gz ; netbsd-GENERIC ; netbsd-INSTALL_XENU ; netbsd-XENU ; netbsd-XEN0

Die letzten vier Kernel findet man auf der NetBSD3-Installations-CD in gepackter Form. Diese müssen zunächst entpackt und anschliessend unter / abgelegt werden.

Jeder hat so seine vorlieben hinsichtlich der Installationsverfahren - pkg_add oder doch lieber make install. Bisher bevorzuge ich noch die Verwendung der Package-Collection statt der Binaries. Daher wäre mein nächster Schritt:

# cd /usr/pkgsrc/sysutils/grub
# make install

Und anschliessend:

# cd /usr/pkgsrc/sysutils/xentools20
# make install

Alle Abhängigkeiten werden aufgelöst. Da der Internetzugang nach der Netzwerkkonfiguration auch funktioniert sollte, muss man sich (theoretisch) nicht um die Beschaffung der benötigten Quellpakete kümmern. Nach der Installation der xenntools20 müssen nur noch die Befehle ...

# cd /dev && sh MAKEDEV xen
# cd /usr/pkg/sbin
# grub-install /dev/wd0d

... ausgeführt werden. Der letzte Befehl braucht ne Weile ... Also Tee und Strickzeug holen (wir wollen hier ja schlieslich keine Drogen propagieren).
Nach dem die Hälfte des linken Pulloverärmel fertig ist sollte nun noch die Datei /grub/menu.lst erstellet werden:

default=0
timeout=10
serial --unit=0 --speed=115200 --word=8 --parity=no --stop=1
terminal --timeout=10 vga console
title Xen 2.0 / NetBSD 3 (hda0, vga)
 root(hd0,0)
 kernel (hd0,a)/xen.gz dom0_mem=65536
 module (hd0,a)/netbsd-XEN0 root=/dev/hda1 ro console=tty0
title Xen 2.0 / NetBSD 3 (hda0, serial)
 root(hd0,0)
 kernel (hd0,a)/xen.gz dom0_mem=65536 com1=115200,8n1
 module (hd0,a)/netbsd-XEN0 root=/dev/hda1 ro console=ttyS0
title Xen 2.0 / NetBSD 3 (hda0, backup, VGA)
 root(hd0,0)
 kernel (hd0,a)/xen.gz dom0_mem=65536
 module (hd0,a)/netbsd-XEN0.backup root=/dev/hda1 ro console=tty0
title Xen 2.0 / NetBSD 3 (hda0, backup, serial)
 root(hd0,0)
 kernel (hd0,a)/xen.gz dom0_mem=65536 com1=115200,8n1
 module (hd0,a)/netbsd-XEN0.backup root=/dev/hda1 ro console=ttyS0
title NetBSD 3.0 BETA
 root (hd0,a)
 kernel --type=netbsd /netbsd-GENERIC
title NetBSD chain
  root        (hd0,0)
  chainloader +1

Während des Bootvorgangs, eingeleitet durch den Befehl shutdown -r now, sollte nun das grub Bootmenü dargestellt werden. Entsprechend der Grub-Konfiguration startet die NetBSD/Xen-dom0 nach 10 Sekunden automatsich und fordert letztendlich zum Login auf. Bereits während des Boot-Vorgang erkennt man, dass zunächst der Xen-Kernel und anschliessend der netbsd-XEN0 Kernel geladen werden.

Jetzt kann noch die weitere Netzwerkkonfiguration vorbereitet werden um später den dom-U Installationen den Netzzugriff via bridge zur Verfügung zu stellen. Im folgenden Beispiel wird eine Realtek-Karte (rtk0) verwendet. Welche Netzwerkkarte im System verbaut ist erfährt man indem man den folgenden Befehl ausführt:

# dmesg | grep "net"

Die Ausgabe dieses Befehls könnte wie folgt aussehen:

rtk0: Realtek Ethernet
rtk0: Ethernet address 00:e3:bc:d2:21:e8

Am Anfang der Zeile wird der Bezeichner für die Netzwerkkarte ausgegeben. In diesem Fall lautet die Bezeichnung der Netzwerkkarte also rtk0.

Nun kann die Datei /etc/ifconfig.bridge0 erstellt werden. Diese erhält den Eintrag:

create
!brconfig bridge0 add rtk0
!brconfig bridge0 up

Jetzt müssen nur noch einige Scripte ausführbar gemacht werden. Dazu werden die folgenden Befehle abgesetzt:

# chmod +x /etc/ifconfig.bridge0
# chmod +x /usr/pkg/etc/xen/network
# chmod +x /usr/pkg/etc/xen/vif-bridge

Unprivilegierte domains erstellen

Sofern nicht bereits während der NetBSD-Basisinstallation entsprechende disklabel-Partitionen für die weiteren NetBSD-Installationen eingerichtet wurden, kann dieses nun anhand von disklabel -i <hd-device> nachgeholt werden. Anhand des Befehls disklabel <hd-device> kann zunächst die aktuelle Geometry dargestellt werden. Nachdem die disklabel-Partition vorbereitet wurde kann der xentool-Dienst gestartet werden:

# xend start

Bei der erfolgreichen Ausführung dieses Befehls erhält man keine Rückmeldung. Um sicherzustellen, dass xend erfolgreich gestartet wurde kann man den folgenden Befehl absetzen:

# xm list
Name              Id  Mem(MB)  CPU  State  Time(s)  Console
Domain-0           0       64    0  r----     58.1

Hier wird die Liste der laufenden Xen-Domains angezeigt. Da bisher keine weiteren Domains eingerichtet wurden, wird nur die privilegierte Domain-0 aufgeführt. Als nächstes wird eine Konfigurationsdatei zum Erstellen einer unprivilegierten Domain benötigt. Hier ein Beispielinhalt:

kernel = "/netbsd-INSTALL_XENU"
memory = 128
name = "nbsdsetup"
cpu = -1
nics = 1
vif = [ 'mac=aa:00:00:50:02:f0, bridge=bridge0' ]
disk = [ 'phy:/dev/cd0a,cd0a,r', 'phy:/dev/wd0e,wd0d,w' ]
root = "/dev/wd0d"

Diese Konfigurationsdatei kann zum Beispiel unter dem Namen /usr/pkg/etc/xen/domusetup gespeichert werden. Spätestens jetzt muss wieder die NetBSD-Installations-CD eingelegt werden. Um nun die neue Domain zu erstellen, wird folgendender Befehl ausgeführt:

# xm create -c /usr/pkg/etc/xen/domusetup

Der Parameter -c weist xm hierbei an, eine Verbindung zur Konsole einer Domain aufzubauen. Aus diesem Grund sieht man dann auch etwas, was vermuten lassen könnte, dass der Computer bootet. Fast richtig, die NetBSD-Installation bootet - nicht der Computer. Nun kann also wieder eine NetBSD-Installation, fast wie gewohnt, durchgeführt werden. Warum "fast"? Nun, es gilt zwei bis drei Dinge zu beachten.

  1. Die Festplatte (bzw. die zugewiesene dislabel-Partition) wird nun als Device mit der Bezeichnung xbd0d statt wd0d erkannt. Dementsprechend ist xbd0d auch als Ziellaufwerk für die Installation auszuwählen.
  2. Das CD/DVD-ROM wird als xbd1d erkannt. Wenn die Quelldateien also von CD statt z.B. per FTP-Installiert werden sollen, ist als Gerät xbd1d anstelle von cd0a anzugeben.
  3. Es werden einige Installations-Dialoge, w.z.B. zur Abfrage ob die gesamte Festplatte genutzt oder eine Slice erstellt werden soll, nicht mehr dargestellt.

Hinweis: Diese Unterschiede sind durch den netbsd-INSTALL_XENU Kernel beeinflusst welcher auch eine ramdisk mit sysinst enthält und somit die Installation erst ermöglicht.

Nach dem die Installation abgeschlossen ist, sollte der Befehl halt -p in der neuen domain ausgeführt werden (kein reboot oder halt ohne Parameter). Nach dem der halt-Prozess abgeschlossen ist, wechselt man mit der Tastenkombination Strg und ] (besser gesagt: Strg und Alt Gr und 9 - sofern das deutsche Tastaturlyaout anhand de.nodead voreingestellt ist) zurück zur domain-0. Um nun das "neue" Betriebssystem zu booten wird eine weitere, bzw. angepasste Konfigurationsdatei benötigt. Hier ein Beispielinhalt:

kernel = "/netbsd-XENU"
memory = 128
name = "nbsddomu1"
cpu = -1
nics = 1
vif = [ 'mac=aa:00:00:50:02:f0, bridge=bridge0' ]
disk = [ 'phy:/dev/wd0e,wd0d,w' ]
root = "/dev/wd0d"

Insbesondere sind die Unterschiede bezüglich der Werte von kernel und disk zu beachten. Der hier verwendete kernel entspricht in etwa dem generischen Kernel inklusive der notwendigen Anpassungen zur Xen-Unterstützung. Diese Konfigurationsdatei kann jetzt zum Beispiel unter dem Namen /usr/pkg/etc/xen/nbsddom1 gespeichert werden. Anschliessend kann die neue domain-U mit dem foglenden Befehl gestartet werden:

# xm create -c /usr/pkg/etc/xen/nbsddom1

Aufgrund des Parameter -c ist es wieder möglich den Startvorgang zu beobachten und sich in der neuen Umgebung einzuloggen um die Basiskonfigurationen am System vorzunehmen. Um die bridge0 auch nutzen zu können wird die Datei /etc/ifconfig.xennet0 benötigt (xennet0 ist die Bezeichnung des virtuellen Netzwerkgerätes). Der Inhalt wäre dann zum Beispiel wie folgt:

inet 192.168.1.2 netmask 0xffffff00

Wie man sieht sind hier die Informationen wie für eine reales Netzerkgerät einzupflegen. Aber Achtung, weitere als die hier gemachten Angaben könnten zu Problem führen. Ich musste die Erfahrung machen, dass das hinzufügen der Werte "mtu 1492" den Netzverkehr unmöglich machten. Wenn jemand diesebezüglich andere/neue Erkentnisse hat möge sie/er sie hier nachpflegen.

Während des Boot-Vorgang der neuen domain sieht man einige Warnungen hinsichtlich wscons und der Pseudo-Terminals, dies kann korrigiert werden indem die Dateien /etc/ttys und /etc/wscons.conf editiert werden. Es müssen alle Terminals, bis auf console, in /etc/ttys wie folgt deaktiviert werden:

console "/usr/libexec/getty Pc"         vt100   on secure
ttyE0   "/usr/libexec/getty Pc"         vt220   off secure
ttyE1   "/usr/libexec/getty Pc"         vt220   off secure
ttyE2   "/usr/libexec/getty Pc"         vt220   off secure
ttyE3   "/usr/libexec/getty Pc"         vt220   off secure

Dann müssen alle Screens in der Datei /etc/wscons.conf auskommentiert werden.

#screen 0       -       vt100
#screen 1       -       vt100
#screen 2       -       vt100
#screen 3       -       vt100
#screen 4       -       -
#screen 4       80x25bf vt100

Abschliessend sollte folgender Eintrag in der Datei rc.conf der neuen domain hinzugefügt bzw. entsprechend angepasst werden:

powerd=YES

Hierdurch wird die domain korrekt herunter gefahren wenn xm shutdown -R oder xm shutdown -H unter domain0 verwendet wird. Die domain sollte nun endgültig zur Nutzung bereit sein, viel Spass damit.

Hinweis: Weitere Hintergrundinformationen erhält man im offiziellen NetBSD/Xen-howto. Dort ist unter anderem auch der Aufbau der Skripte beschrieben.

Xen-Befehle

Hier einige Befehle welche im Rahmen der Xen-Administration relevant sein dürften. Dabei ist zu beachten, dass alle Befehle nur aus einer domain-0 ausgeführt werden können.

xend start - Initialisieren der Xen-Tools (erst nach der Initialisierung ist es möglich eine/mehrere domain-U zu erstellen/starten und zu administrieren).
xm list - Listet alle gestarteten domains (also auch domain-0) inklusive einiger Informationen wie zum Beispiel Status, Name, etc. auf.
xm console <domain-name> - Anhand dieses Befehls kann von der domain-0 auf die Konsole der domain-U gewechselt werden dessen <domain-name> hier angegeben wird.
xm shutdown <domain-name> - Dieser Befehl führt dazu, dass die benannte domain-U "herunter gefahren" wird.
xend stop - Nachdem alle domain-U herunter gefahren sind kann man anhand dieses Befehls die Xen-Tools beenden um zum Beispiel den Computer auch mal auszuschalten.

Hier sollte noch einmal auf die Tastenkombination verwiesen werden mit welcher man von einer domain-U Konsole zurück zur domain-0 Konsole wechselt:

Strg und Alt Gr und 9 was der Zeichenfolge Strg und ] entsprechen muss!

Erstellen von unprivilegierten Linux domains

Hat nur zum Teil mit BSD zu tun und ich habe mich damit noch nicht beschäftigt, daher beziehe man die Informationen hier:
http://www.netbsd.org/de/Ports/xen/howto.html#Linux-domains

Verwenden von PCI-Geräten in Gast-domains

Da diese Schritte von mir auch nicht verifiziert sind verweise ich einmal mehr auf diese Anleitung:
http://www.netbsd.org/de/Ports/xen/howto.html#pci-devices

NetBSD/Xen-Links

NetBSD/Xen-howto (DE)
NetBSD/xen-Mailinglist (EN)
Xen Disk I/O Benchmark - NetBSD vs. Linux (EN)