Windows-VM zu Hetzner-VM kopieren

Veröffentlicht am 30.06.2019.

Dieser Artikel beschreibt das Vorgehen, um eine Kopie einer lokalen Windows-Maschine zur Hetzner-Cloud zu schicken. Die Schritte sind die gleichen für einen physischen Quell-Computer als auch mit einer virtuellen Quell-VM.

Schritte

  1. Neuen Ziel-Server in der Hetzner-Cloud mieten:
    1. Festplattengröße sehr wichtig.
    2. SSH-Key auswählen oder sinnlose Mail mit Passwort löschen.
    3. Betriebssystem egal.
  2. Den Ziel-Server ins Rescue-Betriebssystem linux64 starten. Dabei muss man einen SSH-Key auswählen.
  3. Quell-VM: Linux-CD einlegen und ins Linux booten; z.B. mit einer Ubuntu-CD.
  4. Quell-VM: den für das Rescue-Betriebssystem gewählten Private Key in die Quell-VM kopieren:
    1. Terminal öffnen
    2. Sicherstellen, dass ein SSH-Server läuft mit apt install ssh.
    3. Im Hyper-V-Fenster die Datei /root/.ssh/authorized_keys um einen Public Key ergänzen.
    4. Private Key-Datei mit scp oder WinSCP in das Linux der Live-CD kopieren. Ich nenne sie jetzt der_private_key
  5. In der Quell-VM und in der Ziel-VM mit dem Befehlen df und lsblk sicherstellen, dass es eine Partition /dev/sda1 gibt und die Platte /dev/sda die erwartete Größe hat. Das bedeutet, dass wir die Festplatte /dev/sda kopieren können.
  6. In der Quell-VM folgendes Kommando ausführen:
    sudo dd if=/dev/sda | pv --size=128G | gzip -1 - | ssh 12.12.12.12 -i der_private_key 'gzip -d - | dd of=/dev/sda'
    Die Größenangabe im pv-Kommando dient nur für die Fortschrittsanzeige. In Wahrheit kopiert es jedes Byte der Festplatte. Statt 12.12.12.12 die IP-Adresse der Ziel-VM eingeben - die steht in der Hetzner-Website.
  7. Ziel-VM über die Hetzner-Weboberfläche neustarten
  8. Die VirtIO-Treiber in der Ziel-VM laden. So geht es:
    1. Das neuste ISO-Image "virtio-win" über die Hetzner-Weboberfläche in die Ziel-VM einlegen
    2. Den Bildschirm vom Windows anzeigen. Dazu gibt es in der Hetzner-Weboberfläche den Button >_
    3. Im Windows die Kommandozeile öffnen
    4. drvload d:\vioscsi\w7\amd64\vioscsi.inf ausführen (Das habe ich aus der Anleitung unter https://dae.me/blog/2357/how-to-load-virtio-storage-drivers-in-windows-system-restore/ gelernt)
    5. dism /image:c:\ /add-driver /driver:d:\vioscsi\w7\amd64\vioscsi.inf ausführen (Das habe ich aus der Anleitung unter https://christian.hofstaedtler.name/blog/2013/01/using-dism-to-add-drivers.html gelernt)
  9. Den Treiber für die Netzwerkkarte laden. So geht's:
    1. Den Gerätemanager öffnen
    2. Treiber für die Netzwerkkarte vom VirtIO-ISO laden: D:\NetKVM\w7\amd64
    3. Jetzt sollte Remote Desktop funktionieren
  10. Treiber für das "PCI-Gerät" vom VirtIO-ISO laden: D:\Balloon\w7\amd64
  11. Zeitzone und IPv6 nach dieser Anleitung einstellen
  12. Firewall so einstellen, dass Portscanner wie nmap aus dem Internet keine Ports mehr entdecken. Dazu zum Beispiel nmap 12.12.12.12 -Pn -p1-10000 ausführen.