WinOS aus virtualbox unter bhyve nutzen....

kira12

Well-Known Member
Hallo Leute,

ich habe noch die eine oder andere Win Installation in virtualbox laufen, diese würde ich aber lieber unter bhyve auf einem deutlich performanterem Server unter FreeBSD 11.1 laufen lassen. Irgenwie finde ich kein howto wie das klappt, eigene Versuche waren auch nicht sonderlich erfolgreich. Ich finde nur neu installieren. Kennt jemand ein howto was meinen Fall abdeckt?

danke ré
 
Vorweg eine Frage: Ist das Windows eine UEFI-Installation oder eine BIOS-Installation?
 
Oh ... da würden mich die Antworten auch interessieren

Ich hab ein paar virtuelle win7 32Bit Maschinen , die ich gerne ohne Neuinstallation von virtualbox zu bhyve umziehen lassen würde

Gruß Walter
 
Dann schreibe ich das mal etwas generischer. Vorweg braucht man drei Dinge:
  • Ein Raw-Image des Windows, was konvertiert werden soll. Das kann per dd(1) von einer Festplatte oder SSD gelesen worden oder ein konvertiertes VM-Image sein. Zum Konvertieren in Raw-Images bietet sich qemu-img aus emulators/qemu-utils an.
  • Ein ISO einer Windows Installations-CD exakt der Windows-Version, die konvertiert werden soll. Die Images kann man sich ganz legal kostenlos bei Microsoft herunterladen oder eben wieder per dd(1) von einer CD lesen.
  • Eine gparted Boot-CD. Theoretisch kann man auch jede andere Linux oder FreeBSD Live-CD nehmen, aber gparted hat halt einen sehr guten Partitionseditor an Bord, den man eventuell braucht. Außerdem werden die ntfs-utils des ntfs-3g Projekts benötigt.
Beachten sollte man außerdem, dass Windows bis einschließlich Windows 7 und Windows 2008 R2 nur Medien mit 512 Byte Sektoren unterstützt. Bhyve nutzt normalerweise 8k-Sektoren, weshalb man dort explizit eine Sektorsize von 512 Byte erzwingen muss. Andernfalls wird Windows im Betrieb seltsame Fehler zeigen, unter anderem bricht Windows Update mit verschiedenen Fehlercodes ab.

Außerdem muss das Dateisystem den C:\-Laufwerks der zu konvertierenden Maschine sauber sein. Im Zweifel eine Dateisystemüberprüfung drüberlaufen lassen, bevor man das Image erstellt oder konvertiert. Sonst fällt es einem später eventuell auf die Füße.


BIOS-Windowse konvertieren

Diese Schritte sind nur notwendig, wenn das Windows einen BIOS-Boot nutzt. Denn Bhyve unterstützt nur UEFI-Boots, weshalb das Windows umgebaut werden muss.

  1. Eine neue Bhyve-VM erstellen. Ihr Image sollte leicht größer als das Image der zu konvertierenden VM oder physischen Maschine sein. So Pi mal Daumen reichen 5% mehr aus. Das Image muss per AHCI angeschlossen werden und wie oben schon gesagt für Windows bis einschließlich 7 und 2008 R2 eine Blocksize von 512 Byte haben.
  2. Die Windows Installations-CD wird per AHCI an die VM angeschlossen und die VM von ihr gebootet. Nun einfach Windows ganz normal installieren. Allerdings ist es notwendig eine vollständige Installation durchzuführen, man kann beim ersten Reboot unterbrechen.
  3. Nun wird das Image der zu konvertierenden Maschine als zweite AHCI-Festplatte an die VM angehängt, außerdem wird die Windows Installations-CD durch die gparted Boot-CD ausgetauscht. Von der startet man dann bis in den Desktop und öffnet ein Terminal. In diesem Terminal kopiert man dd(1) die C:\-Partitionen der zu konvertierenden Maschine in die C:\-Partition des gerade teilweise installierten Windows. Das ist immer - zumindest solange es keine weiteren Daten-Partitionen gibt - die letzte und größte Partition. Die Ziel-Partition wird durch das etwas größere Image größer als die Quell-Partition sein. Nach dem kopieren wird das NTFS der Zielpartition daher auf Partitionsgröße vergrößert. Macht man das nicht, verschluckt sich Windows Datenträgerverwaltung später daran, dass die Partition größer als das Dateisystem ist:
    Code:
    ntfsresize /dev/$ziel-partition
  4. Die VM herunterfahren, das Quell-Image wieder entfernen und die gparted Boot-CD durch die Windows Installations-CD ersetzen. Von der starten und "Computerreparatur" wählen. Sie sollte das konvertierte Windows erkennen und auch feststellen, dass es defekt ist. Einfach der automatischen Reparatur zustimmen und fertig. Anschließend versuchen von dem Image zu booten, was allerdings mit recht großer Wahrscheinlichkeit im Bluescreen enden wird. Dazu geht es unten weiter.

UEFI-Windowse konvertieren

  1. Eine neue Bhyve-VM erstellen. Als Image wird das Image der zu konvertierenden Maschine genommen und per AHCI angeschlossen. Wie oben schon gesagt muss es für Windows bis einschließlich 7 und 2008 R2 eine Blocksize von 512 Byte haben. Anschließend versuchen von dem Image zu booten. Das führt mit hoher Wahrscheinlichkeit zum Bluescreen. Dazu geht es unten weiter.

Bluescreen beim Boot der konvertieren Maschine beheben

Der Bluescreen resultiert aus Windows Unfähigkeit zu erkennen, dass sich der Festplattencontroller geändert hat. Man muss also die Registry editieren, damit Windows seinen generischen AHCI-Treiber nutzt. Das ist etwas fummelig, aber gar nicht so schlimm.
  1. Zusätzlich zum oben erstellen Image der VM die Windows Boot-CD per AHCI anhängen und die VM von ihr starten. Dort die "Computerreparatur" wählen, eventuelle Automatismen ablehnen und eine Eingabeaufforderung öffnen. In dieser regedit.exe starten. Es öffnet sich der Registrierungseditor mit der Registry des Live-Systems.
  2. HKEY_LOCAL_MACHINE (HKLM) markieren, Datei -> Struktur importieren wählen. C:\Windows\System32\config\SYSTEM auswählen, einen beliebigen Namen vergeben. Zum Beispiel "Blubb".
  3. Nun HKLM\Blubb\System\CurrentControlSet\Services\Msahci auswählen, dort den Wert "Start" auf 0 ändern.
  4. HKLM\Blubb markieren und über Datei -> Struktur entladenn wieder exportieren. Anschließend zur Sicherheit noch einmal prüfen, ob C:\Windows\System32\config\SYSTEM einen aktuellen Zeitstempel hat. Zum Beispiel über das "dir" Kommando.
  5. Nun die VM von dem Image starten. Das kann einige Zeit dauern und beinhaltet eventuell einige Reboots. Am Ende sollte Windows aber seinen Login-Bildschirm präsentieren.
Nacharbeiten

Sobald Windows durchgestartet ist und auch nicht mehr zum Reboot auffordert (das macht es manchmal noch 1 oder sogar 2 Mal), sollte man zuerst eine Dateisystemüberprüfung auf Laufwerk C:\ durchführen. Danach können von der virtio Treiber-CD die Treiber für's Netzwerk nachinstalliert werden, sodass RDP verfügbar ist. Nun kann man noch einmal von der gparted Boot-CD starten, die C:\-Partition verkleinern. In den freien Speicherplatz eventuell weitere Partitionen aus dem Quell-Image kopieren oder das Image insgesamt schrumpfen.

Das klingt alles recht fummelig, aber ich habe damit schon eine ganze Reihe physischer Windows-Installationen und VirtualBox-VMs konvertiert. Wenn man es einmal gemacht hat, ist es auch gar nicht mehr so schlimm. :) Windows wird natürlich neu aktiviert werden müssen. Bei der telefonischen Aktivierung im Sprachmenü "Windows 10" wählen, egal was man aktivieren möchte. Dann kommt man zur klassischen Aktivierung per Nummerneingabe, während alle anderen Optionen mit einem penetrant nervenden Hotliner verbinden, der Windows 10 verkaufen will.
 
Hallo Yamagi,

dank für die sehr ausführliche Antwort. Ich werde die Tage mal testen und mich melden ;-)

danke ré
 
Zurück
Oben