VMware in der Praxis

Sven Dickert (sven@remote.org)

Abstract:

Dieser Text begleitet den gleichnamigen Vortrag. Ziel ist es, zu ausgewählten Anwendungsszenarien entsprechende Konfigurationen von VMware vorzustellen.

audio

Motivation

Mit der Auswahl einer Anwendung ist in der Regel die Entscheidung bereits gefallen, welche Hardware und welches Betriebssystem eingesetzt werden muss. Damit ist der potenziell flexible Rechner auf Grund der Wahl des Betriebssystems auf bestimmte Anwendungen festgelegt. Verwendet man gemischt Anwendungen von zwei oder mehreren Betriebssystemen, benötigt man mindestens zwei Rechner.

Selbst wenn man nur Anwendungen von einem Betriebssystem verwendet, wünscht man sich oft einen zweiten Rechner, um eine neue Release einer Anwendung oder eines ganzen Betriebssystems gefahrlos auszuprobieren. Für Software- und Kernelentwickler von systemnahen Anwendungen ist der zweite Rechner Pflicht, um Entwicklungs- und Testplattform voneinander zu trennen. Sollen verschiedene Zielplattformen unterstützt werden, geht es gar nicht ohne Zweit- und Drittrechner mit verschiedenen Softwareversionen.

VMware implementiert einen PC in Software auf Basis von Linux oder Windows NT/2000/XP. So können neben dem eigentlichen (Wirt-)Betriebssystem, verschiedene Gastbetriebssystem gleichzeitig betrieben werden.

Tipps zur Installation

Das Folgende bezieht sich auf eine VMware 3.0 Installation unter Linux. VMware Inc. liefert die Software sowohl als tar.gz als auch als rpm aus. In einer rpm-basierten Distribution ist die Installation kinderleicht. Wichtig ist, daß das eigentlich Programm /usr/bin/vmware mit root-Rechten läuft.

Vor dem ersten Start und bei jedem Kernelupdate muß /usr/bin/vmware-config.pl aufgerufen werden. Dieses Skript identifiziert den Kernel und versucht die Kernelmodule vmnet und vmmon bereitzustellen. Falls der Kernel bekannt ist, wird dabei auf vorkompilierte Module zurückgegriffen. Ansonsten werden die Module aus den Sourcen in /usr/lib/vmware/modules/source kompiliert. Mit aktuellen Kernelversionen scheitert die Übersetzung der Sourcen oft. Abhilfe bietet hier Petr Vandrovec mit seinen generischen Sourcen für die VMware Kernelmodule [1].

Fallbeispiele für die Konfiguration

Nach dem Start von VMware, wird man vom Configuration Wizard durch die Konfiguration eines Gastbetriebssystems geführt. Alle Einstellungen lassen sich später wieder ändern. Das ist auch zwingend nötig, da es sehr vom Anwendungszweck abhängt, wie man VMware konfiguriert:

Nebenläufige Benutzung von mehreren Betriebssystemen

Folgende Konfiguration bietet sich an, falls man generell Anwendungen eines weiteren Betriebssystems nutzen will:

Vom Gastbetriebssystem hängt ab, ob man SCSI oder IDE Festplatten verwendet. IDE ist einfacher zu handhaben. SCSI bietet einen Vorteil, wenn ein realer SCSI-Controller und spezielle Geräte wie Scanner vorhanden sind. Diese werden generisch an den SCSI-Controller des Gastbetriebssystems durchgereicht.

Verwendet man VMware nur ab und zu, setzt man eine virtual Disk ein. Diese liegt als Datei im Filesystem des Wirtsystems und kann so leicht gesichert und zwischen Wirtsystemen getauscht werden. Die Datei wächst je nach Platzbedarf des Gastsystems. Nach größeren Installationen kann die Datei wieder zusammengeschrumpft werden. Die virtual Disk ist trotz Defragmetierungsfunktion nach einiger Zeit sehr langsam. Umfangreiche Anwendungen sind daher eher etwas für die raw Disk. Benutzt man sowieso ein Dualboot-System und will die schlummernde zweite Installation nun verwenden, nimmt man die raw Disk über die komplette physikalische Festplatte, z.B. /dev/sda, und gibt nur Schreibzugriff auf den MBR und die eine Partition des zweiten Systems. Das kann aber auch fehlschlagen. Wenn das Gastsystem unvorhergesehen den MBR überschreibt, ist auch das Wirtsystem gefährdet. Deshalb sollte man die Raw-Disk besser innerhalb einer Partition, z.B. /dev/sda2, betreiben. Für den Datenaustausch zwischen Gast und Wirtsystem ist von einer gemeinsam genutzten Partition abzuraten.

Beim CDRom gibt es die Möglichkeit ein CD Image anzugeben. Das beschleunigt die Installation des Gastbetriebssystems erheblich. Im normalen Betrieb kann ohne Probleme mit Wirt und Gast auf eine eingelegte CD zugreifen. Bei Bedarf kann man im laufenden Betrieb dem Gast Devices auch entziehen.

Sollen im Gastsystem keine Serverdienste benutzt werden, ist es angebracht, den Ethernetadapter im Modus nat zu wählen. Ist dagegen eine eigene IP vorhanden, fährt man mit dem Typ bridged besser. Die Mac-Adresse im bridged Modus berechnet sich aus dem Hostnamen des Wirtsystems in Verbindung mit der Nummer des virtuellen Interfaces welches die VMware nutzt.

Die Virtualisierung der Soundblaster Karte ist sehr langsam. Wichtig ist in diesem Zusammenhang die Gast-OS-Auswahl, da VMware Inc. recht zielorientiert optimiert hat. Will man ein nicht unterstütztes Betriebssystem wie z.B. Solaris, BeOS oder NetBSD verwenden, empfiehlt es sich mit dieser Auswahl ein wenig zu experimentieren. Grundsätzlich ist das Gast-OS FreeBSD eine gute Wahl. In der letzten Zeit wurde jedoch viel an VMware für Windows XP optimiert. Interessanterweise hilft das dem Gast BeOS an manchen Stellen.

Für die unterstützten Gast-Betriebssysteme Windows, Linux und FreeBSD gibt es VMware Tools. Entgegen der landläufigen Meinung sind diese beim vmware Paket bereits dabei. Im Windows-Gastsystem installiert man sie per Settings -> VMware Tools install. Ohne VMware-Tools ist VGA als Bildschirmauflösung vorgesehen und man muß mit ctrl-alt-esc Tastatur und Maus zwischen Gast und Wirt umschalten. Die Bildschirmausgabe wird durch Vollbildanzeige mit DGA erheblich schneller.

Linux oder BSD Kernelentwicklung

Wird VMware als Modell für einen IA-32 PC verwendet, bietet sich die folgende Konfiguration an:

So lange man nicht explizit Treiber für den IDE-Controller oder den Buslogic BT-958 SCSI-Controller entwickelt, kann man auf die Festplatten und CDRom Laufwerke verzichten. Das erste Floppy Drive sollte man als File konfigurieren und den zu testenden Kernel einfach als Diskette in dieses File legen. Der Ethernet Adapter verhält sich wie eine AMD PCnet-PCI II Karte, egal welcher Connection Type gewählt wurde.

Testinstallationen

Manchmal will man eine neue Anwendung nur probehalber installieren, scheut aber den Aufwand, das System danach wieder zu reinigen. Hier hilft folgende Konfiguration:

Die Festplatten werden wie gewohnt konfiguriert. Allerdings wählt man als Modus undoable oder non-persistent. Bei undoable kann nach dem Ende der Sitzung entschieden werden, ob die Änderungen an der Platte beibehalten werden sollen. Bei non-persistent werden die Änderungen einfach verworfen.

Weitere Anwendungsbeispiele

Soll eine bootbare CD vor dem Brennvorgang getestet werden, bietet sich die CDRom-Image Funktion von VMware an. Mit der TTY-Einstellung für die serielle Schnittstelle kann sehr einfach eine Modemstrecke zwischen Gast und Wirt ohne zusätzliche Hardware simuliert werden.

Alternativen zu VMware

Die Idee, Anwendungen anderer Betriebssysteme benutzbar zu machen, ist nicht neu. Mit VMware ist allerdings eine neue Qualität dieser virtuellen Maschinen erreicht worden. Neu ist, dass nicht die API eines Betriebssystems, wie beim Open Source Projekt wine [2] oder beim kommerziellen Win4Lin [3] emuliert wird, sondern der ganze PC virtualisiert wird.

Diesen Weg verfolgt auch auch das Open Source Projekt plex86 [4]. Gerade im letzten Jahr hat sich hier sehr viel bewegt. Die Zielplattformen Windows 95, FreeDos und Linux werden inzwischen ordentlich unterstützt. Leider fehlt die Produktreife und Stabilität.

Eine ernstzunehmende Alternative zu VMware präsentiert die Connectix Corporation mit Virtual PC[9]. Diese Software ist ursprünglich auf den Wirtsystemen MacOS 9 und MacOS X entstanden und wird dort haupsächlich entwickelt. Bemerkenswert ist der große Kreis von weiteren Wirtsystemen: OS/2, Windows NT/2K/XP und sogar Windows ME (eingeschränkt im Netzwerkbereich und beim Festplattenzugriff) können als Wirt eingesetzt werden. Darüberhinaus zeichnet sich Virtual PC durch den geringeren Preis als VMware und eine andere virtualisierte Hardwareplattform aus. Hier wird eine S3 Trio32/64 Grafikkarte mit 4MB Ram und eine DEC 21041(Tulip/Intel) Ethernetkarte virtualisiert. Nachteilig schlagen die etwas höheren Systemanforderungen (mehr Speicher, schnellere CPU) zu buche.

Noch weiter in Richtung virtueller PC geht Kevin Lawton mit dem Open Source Projekt bochs [5]. Hier wird nicht nur die PC Architektur virtualisiert sondern gleich der Ganze IA32 Prozessor. Somit kann Bochs die Zielplattformen Linux, Windows 95, Dos und Windows NT selbst auf nicht IA32 Wirtsystemen bedienen.

Mehr aus nostalgischen Gründen sei hier noch Christian Bauer mit dem Open Source Projekt Basilisk II [6] erwähnt. Besonderen Fortschritt hat dieses Projekt durch die Einbindung des just in time compiliers [7] von Bernie Meyer erhalten. Damit ist der virtualisierte Macintosh 68K Rechner auf einem handelsüblichen PC performanter, als es das Original je war.

Ausblick

VMware ist eine vollwertige Alternative zum Zweit-PC. Vergleicht man Aufwand und Preis für bestimmte Anwendungsszenarien ist VMware vorzuziehen. Die durchgängige Virtualisierung ermöglicht flexible Lösungen, die auf einem Zweit-PC nicht denkbar wären. Wird eine spezielle, unterstützte Zielplattform gewünscht, bieten sich auch die erwähnten Alternativen an. Die generelle Stabilität und Kompatibilität von VMware wird allerdings nicht erreicht.

Transitive Technologies [8] bietet mit der Binary Translation Technology an, PowerPC Binärprogramme auf beliebigen anderen Hardwareplattformen auszuführen. Somit ist auch eine VMware für andere Prozessortypen denkbar.

Bibliography

1
Sammlung von Tools rund um VMware von Petr Vandrovec (vandrove@vc.cvut.cz) ftp://platan.vc.cvut.cz/pub/vmware/

2
A free implentation of Windows for Unix http://www.winehq.com/

3
NeTraverse Win4Lin http://www.netraverse.com/products/win4lin30/index.php

4
FreeMWare, das Open Source VMware Pendant. http://www.plex86.org/

5
think inside the bochs http://bochs.sourceforge.net/

6
An Open Source 68k Macintosh Emulator http://www.uni-mainz.de/ bauec002/B2Main.html

7
68k just in time compilier for IA32 http://byron.csse.monash.edu.au/

8
Optimizing Dynamic Binary Translation technology http://www.transitivetechnologies.com/

9
Connectix Virtual PC Trial Version http://preview.connectix.com/trial/
Last update was on Thursday, 08-Dec-2005 by Sven Dickert