Oracle VM VirtualBox von Oracle ist eine Virtualisierungssoftware für Linux, Windows, Mac OS X, FreeBSD und Solaris als Wirtssystem und 32-Bit- oder 64-Bit-x86-Systeme als virtuelle Maschinen. Als Gastsysteme werden sowohl x64 als auch x86-Betriebssysteme unterstützt, welche bei der Einrichtung einer neuen virtuellen Maschine zur Auswahl stehen.
Überblick
Seit Version 1.3.2 (Anfang 2007) bis einschließlich Version 3 (Ende 2010) waren zwei unterschiedliche Ausgaben (engl. editions) mit unterschiedlichen Lizenzen verfügbar: Oracle VirtualBox mit allen Funktionen unter proprietärer Lizenz (PUEL), welche für persönliche Zwecke sowie zu jeglicher Verwendung in Bildungseinrichtungen kostenfrei genutzt werden durfte, und VirtualBox Open Source Edition (OSE), welcher diverse Funktionen fehlten und die unter der GNU General Public License stand.
Seit Version 4.0 vom 22. Dezember 2010 stellt Oracle nur noch eine unter der GNU General Public License stehende Version zur Verfügung, die in etwa der früheren Open Source Edition entspricht und mit Zusatzpaketen (Modulen) erweitert werden kann. Lediglich der Funktionsumfang wurde um USB 1.1-Unterstützung erweitert. Die Funktionen der proprietären Version 3 sind nun in das Zusatzpaket Oracle VM VirtualBox Extension Pack ausgelagert, welches wieder unter der PUEL steht. Für einen Wechsel zwischen beiden Versionen muss daher lediglich das Zusatzpaket installiert bzw. entfernt werden.
VirtualBox wurde von dem in Weinstadt ansässigen Unternehmen innotek, ursprünglich InnoTek Systemberatung GmbH, entwickelt. Zunächst hatte innotek dem Hypervisor Virtual PC von Connectix zur Unterstützung des Betriebssystems OS/2 verholfen. Nachdem Connectix von Microsoft aufgekauft worden war, begann innotek im Jahr 2004 mit der Entwicklung von VirtualBox und gewann unter anderem Behörden als Anwender. Im Januar 2007 stellte innotek VirtualBox erstmals als freie Software zur Verfügung. Im Februar 2008 wurde innotek von Sun Microsystems übernommen. Sun Microsystems wiederum wurde im Januar 2010 von Oracle aufgekauft. Seit dieser Übernahme wird VirtualBox von Oracle vertrieben.
Funktionen
Festplatten werden in Containerdateien, von VirtualBox auch als „virtuelle Plattenabbilder“ (engl. „Virtual Disk Images (VDI)“) bezeichnet, emuliert. Für diese Abbilder hat VirtualBox zwar dieses eigene Dateiformat, arbeitet aber auch mit Festplattendateien von VMware-Virtualisierungsprodukten (mit der Dateiendung „.vmdk“) und auch mit dem „Virtual Hard Disk“-Format (mit der Dateiendung „.vhd“) von Microsoft Virtual PC sowie mit HDD-Dateien von Parallels. Zudem können noch iSCSI-Objekte als virtuelle Festplatten genutzt werden, wobei der hierfür benötigte iSCSI-Initiator bereits in VirtualBox enthalten ist. Mit dem zu VirtualBox gehörenden Kommandozeilen-Werkzeug VBoxManager kann man diese fremden Formate auch konvertieren.
VirtualBox emuliert im Gastsystem u. a. folgende Komponenten:
- die x86-CPU des jeweiligen Wirtssystems
- Intel-Chipsatz 440FX (Natoma)
- ACPI- und I/O-APIC-Unterstützung
- VESA-kompatible Grafikkarte
- IDE-Controller PIIX3 (82371SB), PIIX4 (82371AB) und ICH6 (82801FB)
- Serial-ATA-Controller ICH8 (82801HB), unterstützt AHCI
- SCSI-Controller von den ehemaligen Firmen LSI Logic und BusLogic sowie SAS-Controller ebenfalls von LSI Logic
- die Netzwerkkarten AMD PCnet-PCI II (Am79C970A) und PCnet-FAST III (Am79C973), sowie Intel PRO/1000 in den Varianten MT Desktop (82540EM), T Server (82543GC) und MT Server (82545EM)
- virtio-Netzwerkkarte mit Paravirtualisierung
- Bootvorgang aus dem Netzwerk mit PXE Version 2.1
- die Soundkarten Intel AC97 und Sound Blaster 16
- serielle Schnittstellen
- virtuelle Schnittstelle für USB 1.1 (OHCI)
- iSCSI-Unterstützung zu iSCSI-Servern durch das Wirtssystem ohne Emulation
Die Grafikauflösung ist je nach System auf 800×600 oder 1024×768 Pixel beschränkt, lässt sich aber bei vielen Gastbetriebssystemen mit Hilfe entsprechender Treiber aus den Gasterweiterungen nachträglich erhöhen.
Die VMs lassen sich wahlweise über mehrere Frontends bedienen:
- eine grafische Benutzeroberfläche (GUI), die die Grafikbibliothek Qt nutzt, in der aber noch nicht alle Optionen des Konsolenprogramms implementiert sind (VirtualBox)
- ein Konsolenprogramm (VBoxManager)
- ein SDL-Programm (VBoxSDL)
- einen Remote-Desktop-Protocol-Server, der in der Konsole läuft (VBoxHeadless, vormals VBoxVRDP)
- per Webserver (vboxwebsrv) und phpVirtualBox
Die Virtualisierungserweiterungen der aktuellen Intel-CPUs mit der Bezeichnung VT-x und dessen AMD-Pendant AMD-V werden, sofern vorhanden, genutzt. Hierbei werden auch neuere Funktionen dieser Befehlssatzerweiterungen wie Nested Paging/Rapid Virtualization Indexing unterstützt.
Für Systeme ohne VT-x/AMD-V oder bei manueller Abwahl dieser Funktionen besitzt VirtualBox einen weiteren Modus, der „Raw Mode“ genannt wird. Hierbei versucht VirtualBox, so viel Code wie möglich nativ auszuführen. In den meisten Fällen läuft Ring-3-Code des Gastsystems nativ auf dem Wirtssystem. Versucht das Gastsystem, Ring-0-Code auszuführen, führt das Wirtssystem diesen stattdessen im Ring-1 aus (der normalerweise nicht genutzt wird). Wenn es nicht möglich sein sollte, Code nativ auszuführen, muss dieser von einem Emulator ausgeführt werden, der auf dem Quellcode von QEMU basiert.
Da die Ausführung von Ring-0-Code im Ring-1 zu sehr vielen Ausnahmen führt (privilegierte Instruktionen dürfen nur im Ring-0 ausgeführt werden), besitzt VirtualBox eine Technik namens „Patch Manager“. Hierbei wird der Gastcode zur Laufzeit analysiert und gepatcht mit dem Ziel, die Anzahl der Ausnahmen zu reduzieren und damit die Ausführungsgeschwindigkeit zu steigern. In vielen Fällen ist der klassische Ansatz mit Patch Manager effizienter als VT-x/AMD-V, es gibt jedoch Einschränkungen in der Kompatibilität mit weniger verbreiteten Gastsystemen.
Unterstützte Betriebssysteme
Da VirtualBox einen x86-Prozessor in der virtuellen Umgebung simuliert, werden auch nur für diese Prozessor-Architektur geschriebene Betriebssysteme, sowohl als Gast- als auch als Wirt-Betriebssystem, unterstützt. Die Simulation beschränkt sich so auf das Erstellen einer VM, deren Prozessor dem tatsächlich im System verbauten Prozessor entspricht. Der Systemprozessor wird also, anders als bei QEMU, nicht vollständig simuliert.
Folgende Wirtssysteme (engl. host system) werden von der aktuellen Version unterstützt:
- Linux (Kernel 2.4 oder 2.6/3.x)
- FreeBSD ab FreeBSD 7
- Microsoft Windows XP, Server 2003, Vista, 7 und Server 2008 (32-Bit und 64-Bit)
- Mac OS X/Intel
- Solaris
- OS/2 – experimentelle Unterstützung (Alpha-Status) in der Open Source Edition (OSE)
Darüber hinaus gibt es auch ein Startprogramm, mit dessen Hilfe VirtualBox für Windows-Betriebssysteme portabel gemacht und gestartet werden kann. Dieses Startprogramm wird unabhängig von Oracle von der deutschen nLite-Gemeinschaft, in der Skriptsprache AutoIt, entwickelt und gepflegt.
Außerdem gibt es eine derzeit noch inoffizielle Version für FreeBSD, die von ehemaligen Sun-Entwicklern in deren Freizeit entwickelt wurde.
Die unterstützten Gastsysteme (engl. guest system) waren bis Version 2.0 auf die x86-Architektur beschränkt, seit dieser Version werden auch x86_64-Architekturen unterstützt. Außer den unterstützten Wirtssystemen können noch zusätzlich folgende Systeme virtualisiert werden:
- Microsoft Windows NT, 2000
- MS-DOS-kompatible DOS-Betriebssysteme (Windows 3.1, 95, 98, ME)
- Linux (eingeschränkte Unterstützung für Kernel 2.2, Kernel 2.6 empfohlen)
- L4
- NetWare
- diverse BSD-Derivate
Mac OS X kann seit Version 3.2 in der Emulation ausgeführt werden, das ist aus lizenzrechtlichen Gründen jedoch nur mit Apple-Hardware zugelassen. Das heißt jedoch auch, dass ein Windows-Host (Boot Camp) auf Apple-Hardware ein OS X virtualisieren kann.
Es ist durchaus möglich, dass VirtualBox noch mit weiteren Gast-Betriebssystemen funktionsfähig ist. Das Aktivieren der Virtualisierungserweiterung moderner x86-Prozessoren (bei Intel VT-x, AMD-V bei AMD) kann dabei helfen, ein sonst nicht unterstütztes Betriebssystem in der virtuellen Umgebung von VirtualBox laufen zu lassen.
Gasterweiterungen
Die nur in englischer Sprache verfügbaren Gasterweiterungen (engl. „Guest Additions“) von VirtualBox erweitern die Integration zwischen Wirt- und Gastsystem. Diese liegen für Windows (ab Windows NT4 SP6a) und OS/2 Warp als Binärdaten (als eine Art Treiber-CD) und für Linux als Quellcode vor und werden im virtuellen CD-Laufwerk innerhalb der VM bereitgestellt.
Die folgenden Komponenten werden dabei erweitert:
Grafikkarten-Treiber
- der Mauszeiger kann das Fenster der VM verlassen, ohne die „Host-Taste“ benutzen zu müssen
- die Grafikauflösung wird auf maximal 64.000×64.000 Pixel in 32-Bit-Farbtiefe erweitert; dadurch wird Mehrschirmbetrieb ermöglicht
- die Grafikauflösung wird sofort an die Fenstergröße im Wirt angepasst
- „nahtloser Fenstermodus“ (engl. „seamless windows“) – die Programmfenster des Gastsystems können frei auf der Arbeitsfläche des Wirtssystems platziert werden
- OpenGL-Unterstützung (derzeit nur für die 32-Bit-Versionen von Windows XP und Windows Vista sowie FreeBSD, Linux und Solaris, die offizielle Unterstützung für Linux umfasst nur neuere Kernel und verbreitete Distributionen)
- Experimentelle Direct3D-8- und -9-Unterstützung für Windows 2000-, Windows-XP-, Vista- und Windows-7-Gastsysteme
- „Gemeinsame Ordner“ – Wirtssystem und Gastsystem können Ordner gegenseitig freigeben bzw. synchronisieren (uni- und bidirektionaler Datentransfer)
- exakte Zeit-Synchronisation zwischen Wirt- und Gastsystem
- automatisierte Windows-Anmeldungen mittels VBoxGINA
Die Gasterweiterungen stehen unter der proprietären Lizenz (PUEL), sind jedoch über eine Ausnahme in der Lizenz frei verteilbar. Ab Version 4 wird auch die neue, auf Compiz basierende Benutzeroberfläche Unity der Linux-Distribution Ubuntu unterstützt. Für Windows-Versionen der 9x-Linie und andere Betriebssysteme gibt es die Gasterweiterungen nicht, ferner wird nur eine begrenzte Anzahl von Linux-Distributionen (Fedora/Red Hat, Ubuntu, openSUSE) offiziell unterstützt. Die Gasterweiterungen sind auch für Mac OS X 10.6 Server beziehungsweise Mac OS X 10.7 Standard und Server nicht verfügbar, da diese als Gastsystem nur eine untergeordnete Rolle spielen.
Quelle: Wikipedia (http://de.wikipedia.org/wiki/Virtualbox)