Virtual Server 2005

Mit Server 2008 stieg Microsoft “richtig” ins Virtualisierung-Geschäft ein und schuf das erste Windows mit eingebautem Hyper-Visor Kern.

Doch tatsächlich gab es Virtualisierung schon vorher aus dem Hause Microsoft. Und obwohl diese Produkte gegenüber VM-Ware und andere Lösungen “abstanken”, erinnere ich mich noch gerne an Zeiten von Virtual PC und “Virtual Server 2005” zurück.


Microsoft übernahm Anfang der 2000er eine Firma namens Connectix und formte deren Virtualisierungsprodukt in “Microsoft Virtual PC” um. Damit wurde es möglich unter Windows (2000 und XP) ein anderes Gastbetriebssystem in einer virtuellen Umgebung laufen zu lassen.

Gedacht war das ganze für Entwickler und Software-Tests mit älteren Betriebssystemen und nachdem Intel’s VT-x Befehlssatzerweiterung für Virtualisierung gerade im Entstehen war, und kein damalig Consumer-Prozessor ihn anbot, wurde Virtualisierung auf Softwareebene durchgeführt.

Das war zwar langsam, aber da die alten Windows XP und älteren MS Betriebssysteme auch verhältnismäßig klein waren und auch mit 256 MB RAM auskamen, konnte ich auf meinen damaligen Systemen mit 2 GB RAM auch noch eine oder zwei VMs ausführen lassen um zu sehen, ob Programme auch noch unter NT-4 oder Windows 98 lauffähig waren.

Microsoft Virtual PC

Großer Nachteil von “Virtual PC” war, dass es ein UI Programm war, das man manuell starten musste um danach die VMs ebenso manuell starten zu können.

Doch für den professionellen Einsatz gab es dann die Server Variante, namens “Virtual Server 2005”.

Virtual Server 2005 und sein “Web”

Virtual-Server

Dieses Produkt war eine Erweiterung von “Virtual PC” und lief als Dienst auf einem Windows Server 2003 (32 und 64 bit).
Die Administration der Software erfolgte in erster Linie über eine HTTP Webseite im Browser … schlimmer noch … exklusiv nur im Internet-Explorer.
Jedenfalls brauchte man einen damaligen IIS (Internet Information Server) vorinstalliert und das Setup legte eine Konfiguration für den Standard-Port 1024 an, wo die Admin-Seiten laufen sollten.

Virtual-Server

Und die Fehlentscheidung “Internet-Explorer” ist vermutlich der Grund dafür, dass ich damit einige schlechte Erfahrungen machte.
Denn vermutlich um Konkurrenz-Browser zu behindern setzte die Admin-Seite intensiv auf Javascript und dynamischen Content (eigentlich progessiv für damals), nutzte jedoch viele Internet-Explorer Erweiterungen, die keinem Standard entsprachen.

Und so kam es, dass bereits wenige Jahre später mit dem IE-7 und IE-8 Teile der Admin-Seiten nicht mehr richtig funktionierten, wenn man nicht einzelne Features im Kompatibilitätsmodus ein/ausschaltete.
Und mit dem IE9 strich Microsoft dann auch noch viele Erweiterungen vollständig, womit die Serversoftware unbenutzbar wurde.
Andere Browser versagten von Anfang an den Javascript-Content anzuzeigen und deshalb nenne ich den “Virtual Server 2005” immer als Beispiel für die schlechtest mögliche Representation eines Dienstes im Web.

However … wenn man brav beim IE-6 bleibt, sieht das Web-Interface recht “OK” aus. Man kann neue Maschinen anlegen und Einstellungen per Webformular anpassen. Alles unter der Einstiegsseite:
http://HOSTNAME_OR_IP:1024/VirtualServer/VSWebApp.exe

Virtual-Server

Läuft eine Maschine, kann man sich über ein Active-X Plugin im Browser “hineinverbinden”.
Tastaturanschläge werden korrekt übermittelt, wenn das Remote-Frame im Browser den Fokus hat.

Virtual-Server

Allerdings sollte man während der Installation nie in das Fenster klicken und die Maus bewegen. Denn diese Übersetzung ist (im DOS-Modus) gebrochen und kann eine Installation verhindern, wenn intern ein Fokus wegen der Maus verloren geht und dieser dann nicht wiedergewonnen werden kann.
(Es kann natürlich auch sein, dass das nur die Steuerung über RDP betrifft, denn ich bin stets über RDP zur Maschine verbunden, in der Virtual Server und der IE6 läuft.)

Virtual-Server

Am Ende aktiviert man dann das CD-Image der Virtual-Server Plugins und installiert Treiber für die “virtuelle Umgebung”. Ab da kann man dann auch die Maus gefahrlos über das Active-X-Webfenster nutzen. Oder man installiert gleich ein OS, das man per Netzwerk erreichen und fernwarten kann, denn die virtuelle Netzwerkkarte macht es möglich.

Virtual-Server

COM Interface

Die vermeintliche Rettung aus dem Web Chaos war tatsächlich eine meist recht unbekannte alternative COM Schnittstelle. Als Vorbereitung initialisiert man COM mit

1CoInitializeSecurity(NULL, -1, NULL, NULL, 
2                     RPC_C_AUTHN_LEVEL_PKT_PRIVACY, 
3                     RPC_C_IMP_LEVEL_IMPERSONATE, 
4                     NULL, 
5                     EOAC_DYNAMIC_CLOAKING,  
6                     NULL);

und dann erzeugt man eine Instanz der COM Klasse VMVirtualServer über die Class-ID CLSID_VMVirtualServer (DA3111BC-1BD7-4884-A535-8470D36028F7) und landet beim Interface IVMVirtualServer (D1E64C50-A25D-450f-BE0B-9CA5A354CFF4).

Die anderen Schnittstellen sind im Header
C:\Program Files\Microsoft Virtual Server\Documentation\VSComInterfaces.h enthalten.
Viele Methoden sind recht selbsterklärend (wie z.B. CreateVirtualMachine), jedoch stellt die große Anzahl von Schnittstellen zu Unterobjekten eine Herausforderung dar.

Vielleicht finde ich ja mal irgendwann Zeit alle Details ins GATE Framework aufzunehmen, denn diese Schnittstelle ist (analog zu ADSI) sicher ein schönes Beispiel, wie man einen Dienst über eine Service-API zugänglich machen kann.

Fazit

Der Nachfolger Hyper-V machte grundsätzlich vieles richtig. Er integrierte seine Verwaltung in WMI, womit sie automatisch in WinRM und Powershell verfügbar war. Außerdem war der Hyper-Visor im Kern des Betriebssystems und damit gut integriert, während der Vorgänger nur einen Netzwerktreiber im System einspeiste und der Rest im Dienstprozess errechnet wurde.

Dennoch verdanke ich “Virual PC” und “Virtual Server” so einiges. Ich erarbeitete damit Softwarekompatibilität für ältere Windows NT, 2000 und sogar Windows 98 Systeme, die bis 2010 eine “Kundenanforderung” waren.
Und auch privat erfreute ich mich daran, Windows 3.11 und DOS darauf halbwegs vernünftig laufen lassen zu können.

Hyper-V 2008 begann seinen Support erst mit Windows 2000 und war anfangs für meine Zwecke einfach “zu neu” und auch generell muss ich sagen, dass auf älteren Systemen diese Form die Virtualisierung einfach funktioniert, während andere Dienste wie VirtualBox wesentlich mehr Resourcen fressen und damit auf meinen älteren Systemen unbenutzbar werden.

Und so läuft seit langem auf einem meiner älteren Intel Atom Rechner immer noch ein Server 2003 mit “Virtual Server” bei mir zu Hause …

… und wenn der nicht gestorben ist, dann läuft er noch heute.