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.
- 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.
- 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.
- 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
- 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
- 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.
- 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.
- HKEY_LOCAL_MACHINE (HKLM) markieren, Datei -> Struktur importieren wählen. C:\Windows\System32\config\SYSTEM auswählen, einen beliebigen Namen vergeben. Zum Beispiel "Blubb".
- Nun HKLM\Blubb\System\CurrentControlSet\Services\Msahci auswählen, dort den Wert "Start" auf 0 ändern.
- 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.
- 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.