In der Ausgabe 5/2012 der FreeX wurde ausführlich das Konzept der FOSS-Cloud [1] als rein opensource-basierte Virtualisierungslösung beschrieben [2]. Selbst Windows-XP-Gäste lassen sich auf dem KVM-basierten Server installieren, wenn solche Desktops im Netz verteilt werden sollen [3].
Die FOSS-Cloud sieht als Gäste eigentlich nur Windows und Linux-Distributionen vor, und Stellschrauben für die Anpassung gibt es dabei praktisch keine. Stattdessen wird erwartet, dass der Gast die Festplatte, das Netzwerk und den Speicher paravirtualisiert mit den zugehörigen Virtio-Treibern zugewiesen bekommt. Diese Virtio-Treiber gibt es auch für FreeBSD ab Version 8, weshalb es machbar erscheint, es ebenfalls mit KVM in der FOSS-Cloud zu virtualisieren.
Paravirtualisierung mit KVM
Die Beschreibungen hier beziehen sich zwar auf die FOSS-Cloud. Die Treiberproblematik und die Lösungen gelten aber immer, wenn FreeBSD in KVM-basierten Umgebungen installiert werden soll, bei denen die Standard-Festplatten- und -Netzwerkkartenemulationen nicht verfügbar sind.
Die Installation eines Betriebssystems auf dem Datenträger ist nur möglich, wenn die notwendigen Festplattentreiber geladen sind. Das ist bei FreeBSD bei SCSI-, IDE- und SATA-Platten der Fall [4], und damit ist die Installation des Betriebssystems bei allen Virtualisierungslösungen möglich, die diese Datenträger emulieren. KVM mit seinen paravirtualisierten Geräten besitzt jedoch die speziellen Virtio-Devices, die bei der Betriebssysteminstallation nur dann akzeptiert werden, wenn die richtigen Treiber geladen sind.
Der FreeBSD-Kernel ist wie der Linux-Kernel modular, das heißt, Hardware-Treiber können in Form von Kernelmodulen nachgeladen werden. Das Problem bei FreeBSD 8 und 9 ist aber, dass die Virtio-Treiber nicht zum Standard-Lieferumfang gehören, sondern in den Ports enthalten sind. Erst bei FreeBSD 10, der aktuellen CURRENT-Version, sind sie im Standard-Repertoire enthalten.
Um das Betriebssystem überhaupt installieren zu können, muss deshalb ein neuer Installations-Datenträger zusammengestellt werden. Dies ist prinzipiell sehr einfach, Voraussetzung ist, dass man genau die richtigen VirtIO-Treiber für den gewünschten Installations-Datenträger besitzt. Es ist nicht möglich, die Treiber beispielsweise unter FreeBSD 9-STABLE für den Installationskernel eines FreeBSD-9.0-RELEASE zu kompilieren, die Dateien werden beim Booten von der CD abgelehnt und nicht geladen.
Da die Installation von 8.x, 9.x und CURRENT in der FOSS-Cloud aber unterschiedliche Arbeitsvorbereitungen und -abläufe verlangen, sind hier alle drei Betriebssystemvarianten berücksichtigt.
Da ohnehin die Original-CD von FreeBSD oder deren ISO-Image benötigt wird, bietet es sich an, falls kein FreeBSD auf echter Hardware installiert ist, die Vorarbeiten in einer lokalen virtuellen Maschine auszuführen. Die 32- und die 64-Bit-Version von FreeBSD lassen sich problemlos mit VMware Workstation, Parallels Workstation und Oracle Virtualbox [5] virtualisieren.
Für eine saubere Installation sollte man am besten mit der Release-Version einer aktuellen Version von FreeBSD 8 oder 9 arbeiten. Der Kernel des installierten Betriebssystems darf gegenüber dem auf der CD/DVD nicht aktualisiert sein. Bei FreeBSD 8 ist die DVD für die FOSS-Cloud nötig, bei FreeBSD 9 reicht eine Installations-CD. Alle Arbeiten sind bei der 32- und der 64-Bit-Version identisch. Es ist außerdem nicht sinnvoll, ein älteres FreeBSD 9.0 zu verwenden, weil sich hier der Pfad der Treiber zwischenzeitlich geändert hat, was bei der Installation zu Irritationen führen könnte.
Die Ports können aktualisiert sein, es ist aber nicht unbedingt nötig. Möchte man sie auf den neuesten Stand bringen (zu empfehlen nur bei einem Release, das älter ist als ein halbes Jahr), geschieht das am einfachsten mit Root-Rechten auf der Kommandozeile mit dem Aufruf »portsnap fetch extract
«
. Dazu muss das System natürlich auf das Internet zugreifen können. Auch alle weiteren hier geschilderten Arbeiten setzten Administratorrechte voraus.