Login
Newsletter
Werbung

Di, 15. März 2011, 15:00

VirtualBox und KVM

Dieser Artikel stellt die Virtualisierungslösungen VirtualBox OSE (Open Source Edition) und KVM (Kernel-based Virtual Machine) in einem kleinen Projekt vor und zeigt auf, wie die gleichen Aktionen in beiden Welten auf der Kommandozeile durchgeführt werden können.

Auch wenn beide dasselbe Problem – Bereitstellen eines virtuellen Rechners zum Ausführen von Betriebssystemen und Applikationen – lösen, gibt es in den Details und insbesondere aus der Sicht des Nutzers einige Unterschiede. Beide Lösungen stehen unter freien Lizenzen, bei VirtualBox gibt es zudem eine nicht-freie Version, die unter der proprietären »VirtualBox Personal Use and Evaluation License (PUEL)« steht. Diese bringt zusätzliche bzw. andere Funktionen mit, was aber in diesem Artikel nicht behandelt wird und für dieses Projekt nicht weiter von Bedeutung ist.

Installation

Zuerst legt man ein neues Verzeichnis an, das die Daten für dieses Projekt aufnehmen wird, und wechselt in dieses.

KVM

Das für KVM essentielle Modul ist seit Linux 2.6.20 Teil des Kernels und sollte daher bereits von jeder halbwegs aktuellen Distribution installiert sein. Allerdings kann das Modul nur geladen werden, wenn die CPU über Virtualisierungsfunktionen verfügt, ansonsten meldet das KVM-Modul einen Fehler. Möchte man vorher überprüfen, ob die eigene CPU KVM-tauglich ist, so muss das Flag vmx bei Intel- und svm bei AMD-CPUs vorhanden sein. Mit folgendem Einzeiler lässt sich dies leicht überprüfen:

$ grep flags /proc/cpuinfo | egrep -c '(vmx|svm)'

Ist der Ausgabewert größer als 0, so steht der Verwendung von KVM nichts mehr im Wege.

Zudem benötigt man noch die Pakete qemu-utils, kvm und openvpn, die man über die Paketverwaltung installiert.

Nun lädt man das Skript VirtualBox-networking-setup.sh in das Projektverzeichnis herunter. Wie der Name andeutet, wurde das Skript ursprünglich für VirtualBox geschrieben, um dort Netzwerkbrücken und virtuelle Netzwerkschnittstellen anzulegen. Nun leistet es dasselbe für KVM.

VirtualBox

VirtualBox OSE sollte sich ebenfalls in den Paketquellen der meisten Distributionen – wenn auch nicht immer in der neuesten Version – befinden. Da sich die Parameter von Version 2 zu 3 (meist doppeltes Minuszeichen -- vor dem Parameter statt eines einfachen Minus - bei Version 2) leicht geändert haben, ist darauf zu achten, dass VirtualBox in Version 3.x installiert wird.

Ist VirtualBox in der eigenen Distribution zu alt, so gibt es die Möglichkeit, eine aktuelle Version von der VirtualBox-Seite zu beziehen. Dort gibt es vorkompilierte Pakete der unfreien VirtualBox für viele Distributionen und den Quelltext der OSE zum Selberkompilieren. Vorkompilierte VirtualBox OSE-Pakete für Debian Lenny gibt es bei den Dodger-Tools. Ob man VirtualBox OSE oder VirtualBox PUEL installiert, ist für die Beispiele in diesem Artikel nicht wichtig.

Zu guter Letzt benötigt man noch das ISO-Abbild einer Linux-Distribution (*BSD, Haiku, ReactOS, etc. sollten auch gehen). Welche man dafür wählt, ist nicht entscheidend, man sollte sich aber mit deren Einrichtung auskennen.

Konfiguration

Nach der Installation muss man dafür sorgen, dass der eigene Benutzer in den Gruppen kvm und vboxusers eingetragen ist, da dieser sonst keine virtuelle Maschine (VM) starten kann.

Findet man die Benutzerverwaltung nicht auf Anhieb, kann man auch folgendes ausführen (BENUTZER durch den Namen des eigenen Benutzers ersetzen):

# adduser BENUTZER kvm
# adduser BENUTZER vboxusers

Damit die Gruppenzugehörigkeit wirksam wird, muss man sich aus- und wieder einloggen. Das Skript VirtualBox-networking-setup.sh bedarf noch einer kleinen Anpassung. So wird BENUTZER in der Zeile user=BENUTZER ebenfalls durch den eigenen Benutzernamen ersetzt.

VM-Start vorbereiten

Da beide Virtualisierer nicht gleichzeitig betrieben werden können, muss vor dem Laden des einen Kernel-Moduls das jeweils andere entfernt werden. [Anm. d. Ed.: Mit neueren Kernel-Versionen und VirtualBox 3.2 ist das nicht mehr nötig.]

Zum Laden des VirtualBox-Moduls verwendet man /etc/init.d/vboxdrv start und zum Entfernen /etc/init.d/vboxdrv stop.

Bei KVM gibt es den kleinen Unterschied, dass je nach CPU-Typ (AMD oder Intel) ein anderes Modul geladen bzw. wieder entfernt wird. Zum Laden modprobe kvm-amd bzw. modprobe kvm-intel und zum Entfernen rmmod kvm-amd bzw. rmmod kvm-intel.

Für das Erstellen der Netzwerkbrücke führt man noch VirtualBox-networking-setup.sh aus (die Frage beantwortet man mit Y + Enter):

# sh VirtualBox-networking-setup.sh

Nach einem Systemneustart muss das Skript erneut ausgeführt werden, da die Erstellung nur temporär ist. Die Netzwerkschnittstellen und die Netzwerkbrücke können auch wieder entfernt werden (was aber im Normalfall nicht nötig sein sollte):

# /tmp/VirtualBox-networking-disable.sh

Pro-Linux
Pro-Linux @Facebook
Neue Nachrichten
Werbung