weidner/computer/linux/xen/

Eine Ubuntu 16.04 Xen DomU aufsetzen

Nach Ubuntu 12.04 und 14.04 wird es Zeit, zu notieren, wie ich die momentan aktuelle LTS-Version 16.04 als Xen-DomU aufsetze.

Diese Anleitung beruht im Wesentlichen auf der Beschreibung im Xen Community Wiki, ergänzt um persönliche Erfahrungen. Die meisten Punkte sind fast identisch mit den letzten Artikeln. Eine wesentliche Änderung ist, dass die VM jetzt mit dem Programm xl gestartet und angehalten wird.

Ubuntu Netboot-Image besorgen

Als erstes besorge ich mir ein Netboot-Image, um das Betriebssystem in der DomU zu installieren. Dieses lege ich an zentraler Stelle ab, damit ich es bei anderen Installationen wiederverwenden kann.

$ sudo mkdir -p /var/lib/xen/images/ubuntu-netboot/xenial
$ cd /var/lib/xen/images/ubuntu-netboot/xenial
$ ARCHIV="http://ftp.halifax.rwth-aachen.de/ubuntu/dists/xenial/main"
$ sudo wget $ARCHIV/installer-amd64/current/images/netboot/xen/vmlinuz
$ sudo wget $ARCHIV/installer-amd64/current/images/netboot/xen/initrd.gz

Damit sind die gemeinsamen Vorbereitungen für Ubuntu 16.04 erledigt. Was folgt, muss ich für jede einzelne DomU tun.

Betriebssystem auf der DomU installieren

Als erstes erzeuge ich den Plattenplatz für die DomU. Ich verwende LVM2 für die Partitionen der DomU und habe für die Xen-DomU die LVM-Volume-Group xendomu reserviert. Mit lvcreate stelle ich Platz für die Root-Partition bereit.

$ sudo lvcreate -L 10G -n ubuntu16test /dev/xendomu

Mit der Option -L lege ich die Größe des Plattenplatzes fest, mit der Option -n den Namen.

Dann lege ich eine provisorische Konfigurationsdatei an, die ich so nur zum Installieren des Betriebssystems verwende.

$ sudo vim /etc/xen/ubuntu16test.cfg

Die Konfigurationsdatei sieht für das Testsystem etwa so aus.

name = "ubuntu16test"
memory = 512
vcpus = 1
disk = ['/dev/xendomu/ubuntu16test,raw,xvda,rw']
vif = [' ']
kernel = "/var/lib/xen/images/ubuntu-netboot/xenial/vmlinuz"
ramdisk = "/var/lib/xen/images/ubuntu-netboot/xenial/initrd.gz"

Den Namen des LVM-Volumes und der Xen-DomU bestimme ich nach dem gewünschten Hostnamen.

Als nächstes starte ich die DomU mit dem Kernel und der InitRD des Netboot-Images, die ich vorher geholt habe. Das Netzwerkinterface habe ich nicht spezifiziert, so dass es entsprechend den Default-Einstellungen in einem separaten virtuellen LAN mit DHCP und NAT auf dem Host angeschlossen wird.

In einer screen Sitzung starte ich diese DomU mit xl create und hole mir dabei gleich die Konsole mit der Option -c.

$ screen
$ sudo xl create -c /etc/xen/ubuntu16test.cfg

Nun kann ich das System mit dem Ubuntu-Installer installieren und die benötigte Software (auf jeden Fall den SSH-Server) einrichten.

Das Programm screen erlaubt mir dabei, die Arbeit zu unterbrechen oder eine weitere Kommandozeile im gleichen Terminal zu bekommen, falls ich diese benötige.

Einrichtung abschließen

Bin ich mit der Installation des Betriebssystems fertig, halte ich die VM an und kann die Xen-Konfiguration anpassen.

$ sudo vim /etc/xen/ubuntu16test.cfg

Ich ändere die Konfiguration wie folgt:

name = "ubuntu16test"
bootloader = "pygrub"
extra = "root=/dev/xvda1"
memory = 512
vcpus = 2
vif = ['script=vif-openvswitch,bridge=ovsbr0,mac=00:16:3e:7a:75:16']
disk = [ '/dev/xendomu/ubuntu16test,raw,xvda,rw' ]

Wenn die DomU keinen direkten Kontakt zum externen Netzwerk des Xen-Hosts haben soll, schließe ich ihr Netzwerkinterface an eine Bridge an, die keinen Kontakt zu einer physischen Netzwerkschnittstelle hat. Die MAC-Adresse der DomU lege ich explizit fest, wenn ich via DHCP eine definierte Adresse zuweisen will. Natürlich verwende ich für jede VM dann eine andere MAC-Adresse.

Anstelle von Kernel- und Ramdisk-Parametern verwende ich jetzt pygrub zum Starten der Maschine, das sich die notwendigen Informationen von der Root-Partition holt und sich um alles weitere kümmert.

Ich starte die Maschine wieder, diesmal ohne Konsole.

$ sudo xl create /etc/xen/ubuntu16test.cfg

Schlussbemerkungen

Da ich in der ursprünglichen Konfiguration keine Bridge verwendet habe, nimmt Xend die Standardkonfiguration: ein virtuelles LAN mit NAT. Weil zu dieser Zeit sowieso nur der Installer läuft, ist das nicht tragisch. Will ich das Netz bereits bei der Installation so wie im späteren Einsatz haben, kann ich das auch gleich in die Konfigurationsdatei schreiben.

Posted 2017-01-22
Tags: