Windows 7 XP Mode mit Sun VirtualBox auf Mac OS X verpflanzen

Microsofts „XP Mode“-Virtualisierungslösung in Windows 7 ist eine feine Sache – sofern man denn Win7 Ultimate bzw. Enterprise verwendet. Und einen Prozessor, der die benötigten Virtualisierungsfunktionen unterstützt. Und ein BIOS, das diese auch korrekt aktiviert. – Ein bisschen viele Nebenbedingungen für meinen Geschmack.

Das dachten sich auch die Erschaffer von VMLite – dies nahmen den OpenSource-Zweig von Sun VirtualBox zur Hand und bastelten daraus einen Virtualisierer, der unabhängig vom verwendeten (Intel-)Prozessor den kostenlosen XP Mode-Download von Microsoft verwendet (der ja eigentlich nur für Win7 Ultimate bzw. Enterprise gedacht ist), um unter jedem beliebigen Windows 7, Windows Vista oder sogar Windows XP eine virtuelle XP-Maschine laufen zu lassen, die bereits aktiviert daher kommt. Das kann Microsoft rein EULA-technisch nicht gut heißen – aber momentan funktioniert das alles noch wunderbar.

Seit wenigen Tagen bietet VMLite nun ein so genanntes „Plugin“ für VirtualBox an – der Download ist größer als die Standalone-Version, aber trotzdem klinkt sich VMLite mit seiner wunderbaren XP-Mode-VM ins reguläre VirtualBox ein. Der Vorteil liegt schon darin, dass die XP-Mode-VM dadurch in den Genuss kommt, USB-Geräte exklusiv zugeteilt bekommen zu können – das kann das OpenSource-basierende VMLite mit Bordmitteln nicht.

Daraufhin kam ich auf folgende subversive Idee: Wenn der XP-Mode auch auf anderen Wirts-Windows-Versionen in Gang zu bringen ist und es sich dabei im Wesentlichen um VirtualBox-Technologie handelt – läuft eine derartige XP-Mode-VM denn dann wohl auch unter einem normalen VirtualBox auf einem völlig anderen Wirt – z.B. unter Mac OS X?

Und siehe da – es geht!

Windows 7 XP Mode unter VirtualBox auf einem MacBook

Quod erat demonstrandum.

… Ich möchte an dieser Stelle hochheilig zu Protokoll geben, dass ich dieses Experiment aus rein akademischer Neugier gewagt habe: Ich verwende zur vollsten Zufriedenheit VMware Workstation und Fusion und habe darüber hinaus genügend legitime Windows XP-Lizenzen im Fundus, als dass ich solcherlei Frickel-VMs produktiv einsetzen wollte oder müsste. Aber der Reiz des Möglichen war nun mal unüberwindbar.


Frisch ans Werk. Im ersten Schritt installiert man auf einem Windows 7, Vista oder XP Sun VirtualBox und anschließend das VMLite-„Plugin“. Mit dessen Hilfe bastelt man sich eine XP Mode-VM, in die man auch direkt die Gasterweiterungen installiert, einen Virenscanner – und was immer man sich für ein angemessen arbeitendes Windows XP Professional SP3 halt so vorstellt. Am Ende fährt man die VM herunter.

Als zweites transferiert man nun die daraus entstandene, mindestens 2 GB große Festplatten-Imagedatei „VMLite XP Mode.vhd“ auf den zukünftigen Wirts-Mac, auf dem auch bereits VirtualBox installiert ist – tunlichst in derselben Version.

Auf dem Mac angekommen bindet man eben diese „VMLite XP Mode.vhd“ im so genannten „Manager für virtuelle Medien“ ein. Anschließend legt man eine Feld-Wald-Wiesen-XP-VM an, z.B. unter dem Namen „WinXP Test“ oder was immer beliebt. Hier ersetzt man die frisch angelegte virtuelle Festplatte durch o.a. „VMLite XP Mode.vhd“.

WICHTIG: Das Windows XP darf keinesfalls jetzt schon gebootet werden!

Denn das XP erkennt den Schmuh und quittiert den Umzug von VMLite auf VirtualBox mit einem Verlust der Aktivierung und viel Krakehl über fehlendes „Windows Genuine Advantage“.

Die Erschaffer von VMLite haben sicher viel Energie daran gesetzt, dass sich das XP Mode-Windows direkt nach dem ersten Bootvorgang aktiviert fühlt. Dazu verwenden sie ein speziell angepasstes virtuelles PC-BIOS, das den Betrieb unter Microsofts VirtualPC mimt und die XP Mode-VM glücklich macht.

Dieses BIOS findet sich auf dem Windows 7-System, auf dem VirtualBox und das VMLite-Plugin installiert sind, üblicherweise an folgender Stelle:

C:\Program Files\VMLite\VMLite Workstation\pcbios.bin

Diese Datei gilt es, ebenfalls auf den neuen Wirts-Mac zu kopieren, am besten direkt ins Verzeichnis der neu angelegten VM, also etwa

/Users/…username…/Library/VirtualBox/Machines/WinXP Test/

Schaut man sich die .xml-Konfigurationsdatei auf dem Windows-Wirt an, erscheint relativ weit oben im Abschnitt „<ExtraData>…</ExtraData>“ folgende Zeile:

<ExtraDataItem name=“VBoxInternal/Devices/pcbios/0/Config/BiosRom“ value=“C:/Program Files/VMLite/VMLite Workstation/pcbios.bin“/>

Es gilt nun, die .xml-Konfigurationsdatei der VirtualBox-VM auf dem Wirts-Mac mit TextEdit um exakt diese Zeile zu erweitern – aber so, dass der Pfad auf die soeben kopierte BIOS-Datei zeigt. Also in etwa so:

<ExtraDataItem name=“VBoxInternal/Devices/pcbios/0/Config/BiosRom“ value=“/Users/…username…/Library/VirtualBox/Machines/WinXP Test/pcbios.bin“/>

TextEdit zu, VirtualBox wieder auf – boot’s, tut’s!

Man kann mit an Sicherheit grenzender Wahrscheinlichkeit davon ausgehen, dass die Aktivierung immer noch gültig ist, wenn Windows nicht lauthals wegen seiner WGA-Befindlichkeit zu heulen beginnt. Zur Sicherheit klickt man auf „Start“ / „Ausführen“ und gibt folgendes ein:

oobe/msoobe /a

Das System sollte melden:

Windows wurde bereits aktiviert. Klicken Sie auf „OK“, um das Dialogfeld zu schließen.


Microsoft dürfte das überhaupt nicht gefallen: Dass eine XP-Mode-Lizenz eines vollwertigen Windows XP-SP3 unter einem anderen Windows als Win7 Ultimate bzw. Enterprise läuft, ist vermutlich schon schlimm genug.

Aber dass eben dieser kostenloser Download nun unter einem völlig anderen Wirts-Betriebssystem läuft … Dabei fällt mir gerade ein: Sun VirtualBox gibt es auch auch für Linux und OpenSolaris. Mich würde schon mal interessieren, ob die Geschichte dort auch laufen würde. 🙂

15 Kommentare.

  1. Hallo,

    leider erhalte ich beim VErsuch, die VM unter VMLite zu erstellen einen Fehler: „failed to extract the msi file“ – naja, und nun keine Ahnung, wie weiter…

    Was kann es da denn geben?

    • Aha? Hat Microsoft evtl. das Dateiformat geändert / verschlüsselt, so dass VMLite die VM nicht mehr erstellen kann? Hier mal die Dateigröße mit Prüfsummen:

      imac:VMLite – XP-Mode gerozahn$ ls -la WindowsXPMode_de-de.exe
      -rw-r–r– 1 gerozahn staff 486678800 19 Jan 17:25 WindowsXPMode_de-de.exe
      imac:VMLite – XP-Mode gerozahn$ cksum WindowsXPMode_de-de.exe
      4238381074 486678800 WindowsXPMode_de-de.exe
      imac:VMLite – XP-Mode gerozahn$ md5 WindowsXPMode_de-de.exe
      MD5 (WindowsXPMode_de-de.exe) = ae637e0cc292b27699207cbd94885a6c
      imac:VMLite – XP-Mode geroz
      ahn$

  2. Negativ. Ich habe o.a. Datei WindowsXPMode_de-de.exe gerade nochmal frisch von Microsoft heruntergeladen – die Datei hat exakt dieselben Hashes wie die alte.

  3. Hallo,

    habe es nun doch noch geschafft! Anscheinend war der fehlende Speicherplatz auf der HDD verantwortlich – alles funktioniert prima!

    Noch etwas: auch, wenn das plugin das Mounten nicht schafft (bei mir musste es abgebrochen werden), die VM wird erstellt und funktioniert problemlos.

    Danke für den Blog!

  4. Hello,

    please tell us the size and md5sum of the ‚pcbios.bin‘ file.
    With 7zip it is possible to extract files from the vmlite-installer which cold make the trick working without even installing vmlite
    ( which obviously makes our virtualbox malfunction as someone noticed at least when versions dont match )
    i found a file in the installer named
    _627DAE64ED7F4054BD3B744F92A83748
    which containes the strings BIOS:
    VirtualBox 3.1.2_OSE
    Sun VirtualBox BIOS
    but i had no time to try if this will work …

    and please tell if you already upgraded to 3.1.8 or 3.2.0 and if is the xp is still working ?

    Ralph

  5. No, that was more or less a feasibility studies – my regular virtualization solution is VMware Fusion. At that time, I was using Virtual Box 3.1.2 on both the Windows box and on the MacBook. Not having touched that, the pcbios.bin is like follows:

    macbook:WInXP Test gerozahn$ ls -la pcbios.bin
    -rwxr—– 1 gerozahn staff 65536 Dec 4 15:37 pcbios.bin
    macbook:WInXP Test gerozahn$ md5 pcbios.bin
    MD5 (pcbios.bin) = 1e70dfcb9611948965cbf986456c2b7c
    macbook:WInXP Test gerozahn$ shasum pcbios.bin
    3fe08ac6be9f89c81cf43b82e6e2e06de36b818f pcbios.bin
    macbook:WInXP Test gerozahn$

    It contains the following strings:
    „VirtualBox 3.1.2_OSE“ / „Sun VirtualBox BIOS“

  6. Just as a short comment to Ralph: The described approach definetly works with 3.1.8 on both PC and Mac. After the first boot an automatic update of the guest additons is offered and also brings these to 3.1.8.

  7. It worked a long time for me as WindowsXP- and LINUX user.

    But, a few days ago I had to upgrade to Vista with my notebook. I made a freh installation og VirtualBox and since then I cannot get it working. The ExtraDataItem line is going to be deleted if I start the machine.

    Has Oracle updated VB to make it incompatible with VMLITE-machines?

  8. Witzige Sache mit dem VMlite BIOS 😉

    Würde mich interessieren was VMlite am VirtualBox original BIOS geändert hat. Hat bereits jemand die Kraft gefunden einen Vergleich anzustellen?
    http://www.virtualbox.org/browser/trunk/src/VBox/Devices/PC/BIOS

    PS: Müsste VMlite eigentlich nicht den Source Code veröffentlichen wenn das ursprüngliche BIOS unter LGPL stand?

  9. Ich habe die oben beschriebene Methode auch lange benutzt. Erst ganz schlicht als Probiermaschine unter XP, dann unter VISTA und schließlich unter WIN7. Auch unter Linux hat mir dieser XP-Mode gute Dienste geleistet.

    Nun habe ich vor kurzem auf meinen WIN7-PC VirtualBox auf die Version 4.0.4 geupdatet. Seitdem will der XP-Mode wieder aktiviert werden.

    Hat jemand ähnliche Erfahrungen gesammelt?
    Wie bekommen ich meinen XP-Mode wieder zum Laufen?

    Danke für jeden Hinweis.

  10. Tja. Es gibt ja weiterhin den VMLite XP Mode. Wenn der weiterhin auf VirtualBox basiert, müsste man wiederum herausfinden, warum das XP-Mode-Windows darunter ohne Aktivierung läuft – bei der alten Version ist es die BIOS-Datei, wer weiß woran es im neuen VMLite / VirtualBox liegt. Ich habe momentan leider nicht die Zeit, mich da (erneut) tiefer einzuarbeiten.

  11. Danke, Gero, für die schnelle Reaktion. Ich versuche es mal herauszufinden. Bei Erfolg poste ich hier einmal den Link. Vielleicht hat ja auch jemand Lust, das Problem in Gemeinsamkeit zu lösen.

  12. Ahoi,

    wollte nur anmerken, dass ich diese Prozedur auf einem VirtualBox 4.1.2 unter Windows 7 Enterprise x86_64 erfolgreich durchgeführt habe – diese Prozedur sollte also weiterhin funktionieren.

    • Cool, danke für den Hinweis! Du hast damit exakt das Experiment gemacht, was ich seit Jahr und Tag zeitlich irgendwie nicht hinbekommen habe. 🙂

  13. Hehehe, schneller 😉 Eigentlich wollte ich Windows XP endgültig auf allen meinen reellen und virtuellen Rechnern in die Tonne treten aber leider sind noch einige Kisten „in the wild“, also brauche ich doch noch ein XP zum Testen und da bietet sich das XP von Microsoft direkt geradezu an 😉