Beispiele für DomU-Konfigurationen
Die Dokumentation, die das Xen-Projekt zu den diversen Optionen für DomU-Konfigurationsdateien bereitstellt, ist mitunter etwas spärlich. Wir sammeln hier etwas abseitige Konfigurationsdateien als Anregung, wie sich Besonderheiten meistern lassen. Komplexere Beispiele bekommen h eine eigene Wiki-Seite:
Sehr altes Linux in einer DomU
DOS unter Xen
Wie sehr man mit kreativem Einsatz Xen zurechtbiegen kann, zeigt das folgende Beispiel, das unter Xen eine DOS-Umgebung inklusive Netzwerk an den Start bringt - getestet auf AMD-Prozessoren, die eine bessere Real-Mode-Emulation als ihre Intel-Kollegen beherrschen:
path='/usr/lib/xen-3.2-1' kernel=path+'/boot/hvmloader' builder='hvm' memory='32' name='dos' device_model=path+'/bin/qemu-dm' boot='d' disk=['file:/tmp/boot.iso,ioemu:hdc:cdrom,r'] vnc=1 vncviewer=1 vncpasswd='peter' vif = [ 'bridge=intern,model=ne2k_isa' ]
Die Datei zeigt zwei Besonderheiten: Das DOS bootet von einer eigens erstellten CD, deren Legacy-Bootcode aus einem Floppy-Image besteht - die Unterstützung von Disketten unter Xen war nicht kooperativ, der CD-Boot-Code schon. Wie das Bauen eines solchen ISO-Image geht, hat James Harper in einem Posting auf der Xen-Entwicklerliste geschildert.
Die Netzwerkkartenemulation ist angewiesen, das ISA-Modell der NE2000-Karte bereitzustellen. Der DOS-Treiber ist nicht bereit, mit den ohne die Option verwendeten "hohen PCI-Interrupts" zu arbeiten. Die PC-Emulation in einer HVM-Umgebung leihen sich Xen-Entwickler von Qemu, so dass man in dessen Optionen wildern kann ...
Sehr altes Linux in einer DomU
In einer 32-Bit-DomU sind spezielle C-Bibliotheken notwendig, die für den Betrieb mit Xen übersetzt worden sind. Wenn die für ein älteres Linux, das man mit einem modernen Kernel in einer DomU wegsperren will, nicht verfügbar sind, kann man sich behelfen. Man räumt kurzerhand das Verzeichnis /lib/tls beiseite, indem man es umbenennet (mv /lib/tls /lib/tls.alt). Einige Anwendungen vertragen diesen Trick aber nicht und streiken, etwa MySQL.
Eventuell ist es zusätzlich nötig, eine spezielle Kernel-Option zu setzen, die beschleunigte Kontextwechsel zwischen Kernel und User-Mode abschaltet. Eine Beispielkonfiguration, die das benutzt, sieht so aus:
kernel="/boot/vmlinuz-2.6.18-4-xen-686" ramdisk="/boot/initrd.img-2.6.18-4-xen-686" extra="vdso=0" name="mailhorst" root="/dev/sda1 ro" disk=['file:/tmp/mailhorst.img',sda1,w] memory=64 vif=['bridge=intern' ]
Ohne diese Option brach der Start der DomU schon beim Abarbeiten der Init-Skripts mit der wundervollen Meldung "nconsistency detected by ld.so: rtld.c: 1192: dl_main: Assertion `(void *) ph->p_vaddr == _rtld_local._dl_sysinfo_dso' failed! Kernel panic - not syncing: Attempted to kill init!" ab.