Too Cool for Internet Explorer

Virtualisierungssoftware

Für bestimmt Anwendungstypen (Entwicklung, separate Services, simulierte Umgebungen) ist es vorzuziehen, bestimmte Teile der Hardware zu “verstecken” oder das Betriebssystem hinter eine virtualisierte Maschine zu platzieren. Es gibt drei grundlegend verschiedene Ansätze dies zu erreichen:

  • Hardware Emulators: Diese Programme emulieren Schritt für Schritte eine spezielle Hardware. Bochs, PearPC, coLinux und QEMU gehören zu dieser Gruppe.
  • Hardware Virtualization: Dies wird von VMWare, UML, plex86 und XEN umgesetzt. Hierbei werden nur ausgewählte System Calls und Interrupts emuliert
  • Limited Virtualization: vServer verstecken lediglich Teile des Betriebssystems. Es läuft nur ein Kernel, System Calls werden abgefangen und bezüglich der Zugriffsrechte etc. modifiziert.

All diese Techniken haben ihre Vor- und Nachteile, z. B. sind Hardware Emulatoren einerseits Plattformunabhängig, aber andererseits auch sehr langsam im Vergleich zur Hardware Virtualisierung. Die Letzteren sind zum größten Teil Betriebssystemunabhängig, aber nur mit spezieller Hardware lauffähig (VMWare läuft nur auf x86), und die Performance ist auch noch nicht optimal. Limited Virtualizers hingegen sind auf Geschwindigkeit und wenig Overhead optimiert, sie sind perfekt in das Betriebssystem eingebunden, aber natürlich komplett abhängig von dem Betriebssystem, und man kann nicht davon ausgehen, dass alle Funktionen wie gewohnt funktionieren.

Diese Ausgabe der Future Zone betrachtet ein paar Kandidaten für Virtuelle Maschinen und Emulatoren, und wirft ein wenig Licht auf deren Verfügbarkeit und Status bezüglich Gentoo Linux:

Kurze Vorstellung der Tools

XEN

Diese Software wird an der University of Cambridge entwickelt. Gast-Betriebssysteme müssen hier etwas modifiziert werden, im Gegenzug bietet XEN dann aber extrem hohe Performance im Vergleich zu anderen Lösungen.

UML – User Mode Linux

Dies ist eine Linux-spezifische Virtualisierung. Es nutzt einen gepatchten Kernel für das Gast-OS und benötigt einen gepatchten Host für bessere Performance. Einige Versionen bieten die Möglichkeit, beispielsweise eine UML Instanz in einer anderen UML Instanz zu booten. Es ist vollständig vom Host-OS abgekapselt und benutzt normalerweise Dateien für “virtuelle Festplatten”. Dadurch tendiert die Performance dazu, eher niedriger zu sein als bei XEN, aber da es einen kompletten Kernel emuliert, sind seine Einsatzzecke sowieso andere, z.B. honeynets, network testing oder distributed computing testing.

VMWare

Dieses kommerzielle Programm erlaubt es, jedes x86 Betriebssystem “in einem Fenster” in Linux bzw. Windows laufen zu lassen. Es ist ziemlich ausgereift und ziemlich schnell. Sogar gestackte Instanzen sind möglich, so wie etwa Linux in VMWare unter Windows in VMWare unter Linux. Die Hardware Emulation präsentiert eine S3 Grafikkarte, womit spezielle Software wie Windows DirectX Spiele nicht laufen. Verschiedene Versionen von VMWare sind verfügbar, ESX Server mit dem Fokus auf grosse Server-Installationen und VMWare Workstation für den Desktopeinsatz.

Gentoo Integration: app-emulation/vmware-workstation ist eine 30-Tage Demoversion. Es kann mit einem Key von VMWare auf die Vollversion aufgewertet werden.

MOL – Mac-on-Linux

Das PowerPC Equivalent von VMWare, jedoch unkommerziell und frei. Fast-native Performance, bringt Mac OS > 7.5, Mac OS X und Linux in Fenstern oder Vollbildmodus zum laufen. Der einzige Nachteil ist, dass es nicht auf den neuen G5 64-Bit CPU Macintosh läuft, jedoch läuft es auf beispielsweise PegasosPPC, sogar mit Mac OS X.

BOCHS

BOCHS ist einer der ältesten verfügbaren Emulatoren. Es ist ein in C++ geschriebener x86 CPU-Emulator, also vollständig portabel. Im Vergleich mit der Virtualisierung ist die Performance extrem niedrig, BOCHS hat aber immer noch seinen ganz eigenen Zweck – oder kennst Du irgendein anderes Programm, das es ermöglicht, FreeDOS auf einem UltraSPARC zu booten?

PearPC

Der Newcomer der Emulatoren. PearPC ist immer noch in starker Entwicklung, es ist aber schon möglich, ein virtuelles MacOS X auf jeder der unterstützten Plattformen (so auch Win32!) zu booten. Die Geschwindigkeit ist etwa 1/500-stel eines echten Prozessors, aber der Coolness-Faktor beim Starten von BOCHS in PearPC in VMWare ist schwer zu übertreffen.

Plex86

Plex86 sieht sich als Open Source-Alternative zu VMWare. Es läuft nur auf x86, bietet jedoch akzeptable Performance. Das Projekt scheint zur Zeit wenig aktiv zu sein. Ein Fork mit leicht abweichenden Zielen kann hier gefunden werden, dies ist aber eine Virtualisierung nur für Linux.

coLinux

Cooperative Linux ist die erste funktionierende und freie Möglichkeit, Linux nativ unter Microsoft Windows laufen zu lassen. Es kann jegliche Linux Loopback-Dateisysteme booten und hat sogar eingeschränkte Netzwerk-Fähigkeiten mittels des TUN/TAP-Treibers. coLinux ersetzt nicht Cygwin (welches kein Virtualizer ist, sonder ein API Übersetzer), bietet jedoch die volle Bandbreite der Linux Anwendungen unter Windows.

QEMU

Dieses nette Programm ist nicht ein einzelner, sondern eine Sammlung an Emulatoren. Es kann verschiedene Architekturen emulieren und zwar auf einer großen Palette an Hardware, so nimmt QEMU die Nische der Flexibilität ein. Angeblich soll es wesentlich schneller als andere Emulatoren laufen, jedoch ist die reale Performance ziemlich niedrig.

Die Software

OpenSource

Bochs: http://bochs.sourceforge.net/
QEMU: http://fabrice.bellard.free.fr/qemu/
PearPC: http://pearpc.sourceforge.net/
coLinux: http://www.colinux.org/
UML: http://user-mode-linux.sourceforge.net/
plex86: http://savannah.nongnu.org/projects/plex86/
XEN: http://www.cl.cam.ac.uk/Research/SRG/netos/xen/
MOL: http://maconlinux.org/
FAUmachine: http://www.faumachine.org/
ScummVM: http://www.scummvm.org/

Proprietär

VMware: http://www.vmware.com/
Parallels: http://www.parallels.com/
Virtual PC: http://www.microsoft.com/virtualpc/

Kostenloser ClosedSource

VMware Player: http://www.vmware.com/products/player/

Quellen:
http://www.gentoo.org/news/de/gwn/20041213-newsletter.xml, http://www.infoanarchy.org/wiki/index.php/Emulator, http://metamod-p.sourceforge.net/cross-compiling.on.windows.for.linux.html

Leave a Reply