Xen mit BSD als Dom0,HVM, NetBSD
(Link zu dieser Seite als [[QEMU-KVM-Buch/ Xen/ BSD als Dom0]])
Inhaltsverzeichnis |
[bearbeiten] Xen mit BSD als Dom0
[bearbeiten] Xen mit NetBSD 5.1 (x86 64-Bit) als Dom0
Website: http://www.netbsd.org
[bearbeiten] Installation
NetBSD ist ein Unix der BSD-Familie und wird unter der BSD-Lizenz frei vertrieben. NetBSD ist aufgrund seiner guten Portierbarkeit auf nahezu jedem Computer einsetzbar: Auf Servern, Workstations, Desktop-PCs, Notebooks, PDAs und auf Embedded-Systemen. Da per Default bei NetBSD alle Dienste deaktiviert sind, muss man für einen Remote-Zugang den SSH-Daemon starten. Eine dauerhafte Aktivierung wird durch den Eintrag sshd=YES in der Datei /etc/defaults/rc.conf konfiguriert. Per Default ist der root-Zugang per SSH nicht erlaubt. Für ein Test-System kann in der Datei /etc/ssh/sshd_config die Zeile PermitRootLogin yes eingetragen werden.
Host ~# /etc/rc.d/sshd start
Software wird für NetBSD in Package Source (Pkgsrc) angeboten. Falls nicht geschehen, muss das Package Source-Systems installiert werden. Hier wird vereinfacht der Download der Pakete des Current-Branches als tar-Archiv beschrieben. Das Package-System kann auch mit dem Software Update Protocol (SUP) oder mit dem Concurrent Versions System (CVS) heruntergeladen und aktuell gehalten werden.
Host ~# cd /usr Host ~# ftp ftp://ftp.netbsd.org/pub/pkgsrc/current/pkgsrc.tar.gz Host ~# tar xzvf pkgsrc.tar.gz
Für die Paravirtualisierung wird folgende Software benötigt:
Host ~# cd /usr/pkgsrc/sysutils/grub Host ~# make install clean Host ~# cd /usr/pkgsrc/sysutils/xentools3 Host ~# make install clean
Es wird ermittelt, ob die Prozessoren die Full Virtualization unterstützen.
Host ~# cpuctl identify 0 | egrep '(VMX|SVM|HVM)' cpu0: features2 0xe3bd<SSE3,DTES64,MONITOR,DS-CPL,VMX,EST,TM2,SSSE3,CX16,xTPR,PDCM>
Erfolgte eine Ausgabe, so wird die Software für die Full Virtualization installiert.
Host ~# cd /usr/pkgsrc/sysutils/xentools3-hvm Host ~# make install clean Host ~# ls -l /usr/pkg/libexec/qemu-dm
Es ist zu empfehlen zusätzlich QEMU zu installieren.
Host ~# cd /usr/pkgsrc/emulators/qemu Host ~# make install clean
Man installiert den Xen-Kernel.
Host ~# cd /usr/pkgsrc/sysutils/xenkernel3 Host ~# make install clean
Der Xen-Kernel xen.gz ist in das Wurzel-Verzeichnis zu kopieren und zu entpacken.
Host ~# cp /usr/pkg/xen3-kernel/xen.gz / Host ~# gunzip /xen.gz
Der Kernel für die Dom0 ist zu installieren.
Host ~# cd / Host ~# ftp \ ftp://ftp.netbsd.org/pub/NetBSD/NetBSD-5.1/amd64/binary/kernel/netbsd-XEN3_DOM0.gz Host ~# gunzip netbsd-XEN3_DOM0.gz
Die Xen-Devices werden angelegt.
Host ~# cd /dev && sh MAKEDEV xen Host ~# ls -l /dev/xen* crw------- 1 root wheel 143, 0 Aug 12 07:41 /dev/xencons crw------- 1 root wheel 141, 0 Aug 12 07:41 /dev/xenevt
In der Datei /etc/ifconfig.bridge0 wird die Bridge konfiguriert. Das Device msk0 ist bei Bedarf anzupassen.
# /etc/ifconfig.bridge0 create !brconfig $int add msk0 up
Die Datei /grub/menu.lst ist mit folgenden Inhalt anzulegen. Eventuell müssen die Devices angepasst werden. Wenn die Grub-Konfiguration fehlgeschlagen ist, lässt sich mit dem zweiten Eintrag NetBSD per chainloader booten.
# /grub/menu.lst default=0 timeout=10 title Xen 3.0 / NetBSD (grub) root (hd0,0) kernel (hd0,a)/xen dom0_mem=131072 module (hd0,a)/netbsd-XEN3_DOM0 root=wd0a ro console=tty0 # module (hd0,a)/netbsd-XEN3_DOM0 bootdev=wd0a ro console=tty0 title NetBSD (chainloader) root (hd0,0) chainloader +1
Der Boot-Manager grub wird installiert.
Host ~# grub-install '(hd0)'
Das System ist neu zu starten.
Host ~# reboot
Nach dem Neustart überprüft man, ob der Xen-Kernel geladen und die Loop-Devices (/etc/modules) angelegt wurden.
Dom0 ~# uname -a ... NetBSD 5.1 (XEN3_DOM0) ... Dom0 ~# ls -l /dev/xen* crw------- 1 root wheel 143, 0 Aug 12 07:41 /dev/xencons crw------- 1 root wheel 141, 0 Aug 12 07:41 /dev/xenevt
Man ist in der privilegierten virtuellen Maschine Dom0 eingeloggt. Bei Problemen ist wieder NetBSD ohne Xen zu booten und die Log-Dateien (/var/log/xen*) zu studieren. In der Datei /etc/rc.conf sind folgende Zeilen einzufügen:
xend=YES xenbackendd=YES # xendomains=YES
Die Xen-Daemons sind zu starten.
Dom0 ~# /usr/pkg/share/examples/rc.d/xend start Dom0 ~# /usr/pkg/share/examples/rc.d/xenbackendd start
Man überprüft die Xen-Dienste. Dazu lässt man sich mit dem Xen Management User Interface (xm) und dessen Befehl info Informationen über den Xen-Host anzeigen.
Dom0 ~# xm info
host : mein-pc release : 5.1 version : NetBSD 5.1 (XEN3_DOM0) ... machine : amd64 nr_cpus : 4 nr_nodes : 1 sockets_per_node : 1 cores_per_socket : 4 threads_per_core : 1 cpu_mhz : 2404 hw_caps : bfebfbff:20000800:00000000:00000140:0000e3bd:00000000:00000001 total_memory : 2047 free_memory : 1876 xen_major : 3 xen_minor : 1 xen_extra : .4 xen_caps : xen-3.0-x86_64 xen-3.0-x86_32p hvm-3.0-x86_32 hvm-3.0-x86_32p xen_scheduler : credit xen_pagesize : 4096 platform_params : virt_start=0xffff800000000000 xen_changeset : unavailable cc_compiler : gcc version 4.1.3 20080704 prerelease (NetBSD nb2 20081120) cc_compile_by : root cc_compile_domain : cc_compile_date : Fri Aug 12 11:41:33 CEST 2011 xend_config_format : 4
Konfiguriert wird xend mit der Datei /usr/pkg/etc/xen/xend-config.sxp.
# /usr/pkg/etc/xen/xend-config.sxp (xend-relocation-server yes) (xend-relocation-hosts-allow '^localhost$ ^localhost\\.localdomain$') (network-script network-bridge) (vif-script vif-bridge) (dom0-min-mem 196) (dom0-cpus 0) (vncpasswd )
Die Daemons xenbackendd, xend und xendomains sollen aktiviert werden.
Dom0 ~# cp /usr/pkg/share/examples/rc.d/xen* /etc/rc.d/
Das System ist neu zu starten.
Dom0 ~# reboot
Man testet die laufenden Xen-Domains mit dem Befehl xm list.
Dom0 ~# xm list Name ID Mem VCPUs State Time(s) Domain-0 0 128 1 r----- 7.2
[bearbeiten] Anlegen von paravirtualisierten Gast-Systemen
[bearbeiten] NetBSD 5.1 (64-Bit) als DomU
Es ist das Verzeichnis für die virtuellen Maschinen anzulegen. Für jede virtuelle Maschine wird dort ein Unterverzeichnis generiert.
Dom0 ~# mkdir -p /home/xen/domains
Man benötigt einen DomU-Kernel für den Betrieb der NetBSD-Gast-Systeme. Zum Installieren von NetBSD wird der Kernel netbsd-INSTALL_XEN3_DOMU.gz benötigt.
Dom0 ~# cd /home/xen Dom0 ~# ftp \ ftp://ftp.netbsd.org/pub/NetBSD/NetBSD-5.1/amd64/binary/kernel/netbsd-XEN3_DOMU.gz Dom0 ~# ftp \ ftp://ftp.netbsd.org/pub/NetBSD/NetBSD-5.1/amd64/binary/kernel/netbsd-INSTALL_XEN3_DOMU.gz Dom0 ~# gunzip *.gz
Es ist zu empfehlen für jede DomU ein Unterverzeichnis anzulegen. In diesem Beispiel soll die DomU den Namen vm1.beispiel.de tragen. In dem Unterverzeichnis ist ein Image zu generieren.
Dom0 ~# mkdir -p /home/xen/domains/vm1.beispiel.de Dom0 ~# cd /home/xen/domains/vm1.beispiel.de Dom0 ~# dd if=/dev/zero of=disk.img bs=1024k count=4096
Die Konfigurationsdatei /usr/pkg/etc/xen/vm1.beispiel.de.cfg wird mit folgendem Inhalt angelegt.
# /usr/pkg/etc/xen/vm1.beispiel.de.cfg kernel = "/home/xen/netbsd-INSTALL_XEN3_DOMU" #kernel = "/home/xen/netbsd-XEN3_DOMU" memory = 128 name = "vm1.beispiel.de.cfg" vcpus = 1 nics = 1 vif = [ 'mac=aa:00:00:50:02:f1, bridge=bridge0' ] disk = [ 'file:/home/xen/domains/vm1.beispiel.de/disk.img,0x01,w' ] root = "xbd0"
In der Datei /usr/pkg/etc/xen/vif-bridge wird die Bridge für die DomU konfiguriert. Das Device msk0 ist bei Bedarf anzupassen.
# /usr/pkg/etc/xen/vif-bridge create !brconfig $int add msk0 up
Zum Start der virtuellen Maschine muss man mit xm create eine Domain anlegen. Durch die Option -c wird man direkt mit der Konsole der neuen DomU verbunden. Es erscheinen die Dialoge von sysinst zur Installation von NetBSD.
Dom0 ~# xm create -c /usr/pkg/etc/xen/vm1.beispiel.de.cfg
Welcome to sysinst, the NetBSD-5.1 system installation tool. This
menu-driven tool is designed to help you install NetBSD to a hard disk, or
upgrade an existing NetBSD system, with a minimum of work.
In the following menus type the reference letter (a, b, c, ...) to select an
item, or type CTRL+N/CTRL+P to select the next/previous item.
The arrow keys and Page-up/Page-down may also work.
Activate the current selection from the menu by typing the enter key.
┌─────────────────────────────────────────────┐
│>a: Installation messages in English │
│ b: Messages d'installation en francais │
│ c: Installation auf Deutsch │
│ d: Komunikaty instalacyjne w jezyku polskim │
│ e: Mensajes de instalacion en castellano │
└─────────────────────────────────────────────┘
Auf einer anderen Konsole listet der Befehl xm list die virtuelle Maschine auf.
Dom0 ~# xm list Name ID Mem VCPUs State Time(s) Domain-0 0 128 1 r----- 76.7 vm1.beispiel.de.cfg 8 128 1 -b---- 6.5
Nach der Installation ist das Gast-System herunter zu fahren.
Gast ~# halt -p
Beim Befehl xm list darf diese DomU nicht mehr aufgelistet werden.
Dom0 ~# xm list Name ID Mem VCPUs State Time(s) Domain-0 0 128 1 r----- 42.9
In der Datei /usr/pkg/etc/xen/vm1.beispiel.de.cfg ist der Kernel netbsd-XEN3_DOMU zu aktivieren.
# /usr/pkg/etc/xen/vm1.beispiel.de.cfg #kernel = "/home/xen/netbsd-INSTALL_XEN3_DOMU'' kernel = "/home/xen/netbsd-XEN3_DOMU" ...
Die DomainU wird wieder gestartet.
Dom0 ~# xm create -c /usr/pkg/etc/xen/vm1.beispiel.de.cfg ... login: root Password: ***** Gast ~# uname -a ... NetBSD 5.1 (XEN3_DOMU) ...
Auf einer anderen Konsole wird mit dem Befehl xm shutdown die virtuelle Maschine herunter gefahren.
Dom0 ~# xm shutdown vm1.beispiel.de.cfg
[bearbeiten] Anlegen von vollvirtualisierten Gast-Systemen (HVM)
[bearbeiten] TinyCore Live-CD als DomU
Tiny Core Linux (http://tinycorelinux.com) ist eine 11 MByte große Linux-Distribution (Live-CD). Im ersten Schritt wird ein Verzeichnis für die ISO-Images angelegt. Von der Website ist das Image der Live-CD in dieses Verzeichnis herunterzuladen.
Dom0 ~# mkdir -p /home/iso-images/
Die Konfigurationsdatei /usr/pkg/etc/xen/tinycore.beispiel.de.cfg wird mit folgendem Inhalt angelegt.
# /usr/pkg/etc/xen/tinycore.beispiel.de.cfg kernel = '/usr/pkg/lib/xen/boot/hvmloader' builder = 'hvm' memory = '256' device_model = '/usr/pkg/libexec/qemu-dm' disk = [ 'file:/home/iso-images/tinycore-current.iso,ioemu:hdc:cdrom,r' ] name = 'tinycore.beispiel.de' vif = [ 'mac=aa:00:00:50:02:f3, bridge=bridge0' ] boot = 'd' sdl = 1
Zum Start der virtuellen Maschine muss man mit xm create eine Domain anlegen.
Dom0 ~# xm create /usr/pkg/etc/xen/tinycore.beispiel.de.cfg
Bei Problemen hilft die Ausgabe des Befehls xm dmesg weiter. Bedingt durch die Zeile sdl = 1 startet der virtuelle PC mit der Live-CD in einem Fenster. Dieses Fenster fängt den Maus-Kursor. Mit der Tastenkombination [Strg]+[Alt] löst sich der Maus-Zeiger wieder.
Dom0 ~# xm list Name ID Mem VCPUs State Time(s) Domain-0 0 128 1 r----- 203.5 tinycore.beispiel.de 20 256 1 r----- 1.7
Zu beachten ist, das bei der Full Virtualization der Befehl xm shutdown das Gast-System nicht sauber herunter fahren kann. Zum Herunterfahren muss man sich im Gast-System einloggen und dort den Shutdown einleiten. Ist das Gast-System heruntergefahren, ist der Befehl xm shutdown anzuwenden.
[bearbeiten] ReactOS als DomU
Für dieses Beispiel wurde das Betriebssystem ReactOS (http://www.reactos.org/de/) als Gast-System ausgewählt. Mit diesen Schritten lassen sich auch MS Windows-Versionen und andere Betriebssysteme installieren. Im ersten Schritt wird ein Verzeichnis für die ISO-Images angelegt. Von der ReactOS-Website ist das Image der Installations-CD herunterzuladen und zu entpacken.
Dom0 ~# mkdir -p /home/iso-images/ Dom0 ~# cd /home/iso-images/ Dom0 ~# unzip ReactOS*-iso.zip
Für die virtuelle Maschine ist ein Verzeichnis anzulegen. In diesem Verzeichnis ist eine virtuelle Festplatte zu generieren.
Dom0 ~# mkdir -p /home/xen/domains/reactos1.beispiel.de Dom0 ~# cd /home/xen/domains/reactos1.beispiel.de Dom0 ~# dd if=/dev/zero of=disk.img bs=1024k count=4096
Die Konfigurationsdatei /usr/pkg/etc/xen/reactos1.beispiel.de.cfg wird mit folgendem Inhalt angelegt.
# /usr/pkg/etc/xen/reactos1.beispiel.de.cfg
kernel = '/usr/pkg/lib/xen/boot/hvmloader'
builder = 'hvm'
memory = '256'
device_model = '/usr/pkg/libexec/qemu-dm'
disk = [
'file:/home/xen/domains/reactos1.beispiel.de/disk.img,0x01,w',
'file:/home/iso-images/ReactOS.iso,ioemu:hdc:cdrom,r'
]
name = 'reactos1.beispiel.de'
vif = [ 'mac=aa:00:00:50:02:f2, bridge=bridge0', type=ioemu' ]
boot = 'd'
sdl = 1
usb = 1
usbdevice = "tablet"
Zum Start der virtuellen Maschine muss man mit xm create eine Domain anlegen.
Dom0 ~# xm create /usr/pkg/etc/xen/reactos1.beispiel.de.cfg
Bei Problemen hilft die Ausgabe des Befehls xm dmesg weiter. Bedingt durch die Zeile sdl = 1 startet der virtuelle PC in einem Fenster. Dieses Fenster fängt den Maus-Kursor. Mit der Tastenkombination [Strg]+[Alt] löst sich der Maus-Zeiger wieder. Die Installation von ReactOS wird durch Klicken in das Fenster und das Betätigen einer beliebigen Taste begonnen. Zuerst wird die deutsche Tastatur ausgewählt. Danach wird die virtuelle Festplatte partitioniert und formatiert. Das Zielverzeichnis für die Installation der ReactOS-Dateien braucht nicht geändert zu werden. Im Anschluss wird der Bootloader installiert, wobei die vorgegebene Option Install bootloader on the harddisk (mbr) gilt. Danach muss die virtuelle Maschine neu gestartet werden und die Installation wird grafisch weitergeführt. Nach der Installation ist die virtuelle Maschine herunter zu fahren und die virtuelle CD aus der Konfigurationsdatei zu entfernen.
# /etc/xen/reactos1.beispiel.de.cfg
kernel = '/usr/lib/xen-4.0/boot/hvmloader'
builder = 'hvm'
memory = '256'
device_model = '/usr/lib/xen-4.0/bin/qemu-dm'
disk = [
'file:/home/xen/domains/reactos1.beispiel.de/disk.img,ioemu:hda,w'
]
name = 'reactos1.beispiel.de'
vif = ['type=ioemu,mac=00:16:3E:7F:6F:91,bridge=eth0']
sdl = 1
Zu beachten ist, das bei der Full Virtualization der Befehl xm shutdown das Gast-System nicht sauber herunter fahren kann. Zum Herunterfahren muss man sich im Gast-System einloggen und dort den Shutdown einleiten. Ist das Gast-System heruntergefahren, ist der Befehl xm shutdown anzuwenden.
Damit ein Zugriff von einem anderen Rechner erfolgen kann, ist sdl zu deaktivieren und mit vnc=1 der in QEMU integrierte VNC-Server zu aktivieren (siehe http://qemu-buch.de/d/Netzwerkoptionen/_Netzwerkdienste#VNC).
# /etc/xen/reactos1.beispiel.de.cfg ... sdl = 0 vnc = 1 vncdisplay = 5 vnclisten = '0.0.0.0' vncpasswd = 'geheim'
Die Verbindung erfolgt mit einem VNC-Client, zum Beispiel virt-viewer, vinagre oder xtightvncviewer. Die VNC-Adresse ergibt sich aus der IP-Adresse der Dom0, einem Doppelpunkt und dem Wert von vncdisplay. Mit vnclisten = '0.0.0.0' erlaubt man Verbindungen von allen IP-Adressen. Ein geringe Sicherheit bietet ein Passwort (vncpasswd). Sicherer ist die Verwendung von Zertifikaten. In diesem Beispiel hat die Dom0 die IP-Adresse 172.16.1.10.
Host ~$ sudo apt-get install vinagre Host ~$ vinagre 172.16.1.10:5
Ist das Gast-System hochgefahren und das Netzwerk funktioniert, kann man sich mit den Verbindungsprotokollen, die vom Gast-System unterstützt werden, direkt einloggen. Zum Beispiel mit rdekstop bei MS Windows und ssh bei Unix/Linux.
Bei der Full Virtualization enthalten die Images, wie bei QEMU üblich, eine komplette virtuelle Festplatte mit Partitionierungstabelle.
Dom0 ~# fdisk -lu /home/xen/domains/reactos1.beispiel.de/disk.img Disk /home/xen/domains/reactos1.beispiel.de/disk.img: 0 MB, 0 bytes 255 heads, 63 sectors/track, 0 cylinders, total 0 sectors Units = sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Disk identifier: 0x9b0d26e7 Device Boot Start End Blocks Id System disk.img1 * 63 8385929 4192933+ b W95 FAT32
Diese Images lassen sich auch von dem originalen QEMU verwenden.
Dom0 ~# qemu-system-x86_64 -hda /home/xen/domains/reactos1.beispiel.de/disk.img
[bearbeiten] libvirt
Die Bibliothek libvirt dient als Grundlage für das Verwalten von virtuellen Maschinen.
Host ~# cd /usr/pkgsrc/sysutils/libvirt Host ~# make install clean
In der Datei /usr/pkg/etc/xen/xend-config.sxp ist die Zeile (xend-unix-server yes) anzufügen. Dadurch wird der Xen-Treiber aktiviert (http://libvirt.org/drvxen.html).
# /usr/pkg/etc/xen/xend-config.sxp ... (xend-unix-server yes)
Anschließend ist der Rechner neu zu starten.
Dom0 ~# reboot
Getestet wird die Installation mit folgenden Befehl.
Dom0 ~# virsh version
Eine ausführliche Beschreibung findet man unter der URL http://qemu-buch.de/d/Managementtools/_libvirt-Tools. Eine Befehlsübersicht ist unter der URL http://qemu-buch.de/d/Anhang/_libvirt aufgelistet.