temuco
Goto Top

Hyper-V-Maschinen mit Windows 11 Pro auf QEMU-KVM portieren

Hallo,

ich habe ein Problem, das ich bisher nicht lösen konnte. Zunächst meine Umgebung:

Betriebssystem
- Ubuntu Server 24.04

Hardware
- Prozessor: AMD EPYC RAPHAEL 4584PX mit 16 Kernen und 4,2 GHz
- Arbeitsspeicher: 64 GB DDR5 ECC RAM (2× 32 GB)
- Datenträgersystem:
- 2× 960 GB Samsung PM883 SATA SSD im RAID 1 für das System
- 4× 3,2 TB SAS3 SSDs im RAID 10 für Daten
- RAID-Controller: Broadcom MegaRAID 9560-8i
- Netzwerk: 2× 1 Gbit/s LAN
- Mainboard: Supermicro H13SAE-MF-B mit TPM-2.0-Modul

Der Vollständigkeit halber: Das RAID 1 (System) ist mit ext4 formatiert, das RAID 10 (Daten inkl. VMs) mit XFS.

Aufgabenstellung
Virtuelle PCs mit Windows 11, die bisher unter Hyper-V laufen, auf QEMU/KVM portieren.

Die Windows-11-VMs nutzen hauptsächlich Office-Software und einige Handwerkerprogramme – also nichts Besonderes. Demnächst wird jedoch eine neue Software installiert, die mehr Ressourcen benötigt. Da der alte Server (Windows Server 2016) am Limit ist und dessen erweiterter Support Mitte Januar 2027 ausläuft, wurde beschlossen, die VMs auf eine leistungsfähigere Plattform zu migrieren.

Durchgeführte Schritte am Beispiel der VM BUERO4

1. Virtuelle Festplatte komprimiert und als feste Disk eingestellt (da unter QEMU/KVM aus Geschwindigkeitsgründen das RAW-Format genutzt werden soll).

2. Konvertierung der virtuellen Festplatte in das RAW-Format:
   qemu-img convert -O raw BUERO4_fix.vhdx /mnt/data/vms/buero4/buero4.raw -p

3. UEFI-Daten speichern:
   cp /usr/share/OVMF/OVMF_VARS_4M.ms.fd /mnt/data/vms/buero4/buero4_VARS.fd

4. Virtuelle Maschine erstellen und die konvertierte Festplatte einbinden:
   virt-install \
     --name buero4 \
     --memory 8192 \
     --vcpus 8 \
     --cpu host \
     --machine q35 \
     --boot loader=/usr/share/OVMF/OVMF_CODE_4M.secboot.fd,loader.readonly=yes,loader.type=pflash,loader.secure=yes,nvram=/mnt/data/vms/buero4/buero4_VARS.fd \
     --disk path=/mnt/data/vms/buero4/buero4.raw,format=raw,bus=virtio \
     --network bridge=br0,model=virtio \
     --graphics spice,listen=0.0.0.0 \
     --video qxl \
     --channel unix,target.type=virtio,name=org.qemu.guest_agent.0 \
     --virt-type kvm \
     --os-variant=win11 \
     --memorybacking hugepages=on \
     --import \
     --boot hd \
     --noautoconsole

5. VM stoppen:
   virsh shutdown buero4  # oder falls erforderlich:
   virsh destroy buero4

6. Konfigurationsdatei anpassen
- XML-Datei der VM in den gewünschten Ordner verschieben:
     sudo mv /etc/libvirt/qemu/buero4.xml /mnt/data/vms/buero4/buero4.xml
- Anschließend die VM erneut definieren:
     sudo virsh define /mnt/data/vms/buero4/buero4.xml
- Konfiguration bearbeiten:
     virsh edit buero4

7. TPM-Passthrough konfigurieren
- In der `<devices>`-Sektion folgende Konfiguration einfügen:
     <tpm model='tpm-crb'>  
       <backend type='passthrough'>  
         <device path='/dev/tpm0'/>  
       </backend>
     </tpm>

8. VM starten:
   virsh start buero4

Problem
Beim Starten der VM tritt folgender Fehler auf:
error: Failed to start domain 'buero4'  
error: internal error: QEMU unexpectedly closed the monitor (vm='buero4'):   
2025-03-26T09:27:38.059287Z qemu-system-x86_64: 
-tpmdev passthrough,id=tpm-tpm0,path=/dev/fdset/0,cancel-path=/dev/fdset/1: 
'/dev/fdset/0' is not a TPM device.  

Allerdings zeigt die Systemdiagnose, dass TPM erkannt wird:
root@ubuntuserver:/mnt/data/vms/buero4# dmesg | grep -i tpm
[    0.000000] efi: ACPI=0x90465000 ACPI 2.0=0x90465014 TPMFinalLog=0x90432000 ...
[    0.003878] ACPI: TPM2 0x000000008E471000 00004C (v04 SUPERM SMCI--MB ...)
[    3.667973] systemd[1]: systemd-pcrextend.socket - TPM2 PCR Extension (Varlink) ...
[    3.738173] systemd[1]: systemd-tpm2-setup.service - TPM2 SRK Setup ...

Geräte-Check:
root@ubuntuserver:/mnt/data/vms/buero4# ls /dev/tpm*
/dev/tpm0  /dev/tpmrm0

TPM-Funktionalitäten abrufen:
root@ubuntuserver:/mnt/data/vms/buero4# tpm2_getcap --list
- algorithms
- commands
- pcrs
- properties-fixed
- properties-variable
- ecc-curves
- handles-transient
- handles-persistent
- handles-permanent
- handles-pcr
- handles-nv-index
- handles-loaded-session
- handles-saved-session
- vendor

Frage
Ohne TPM startet Windows 11 nicht – stattdessen lande ich in der Reparaturkonsole oder im BIOS, aber Windows selbst bootet nicht.

Hat jemand eine Idee, wie ich das TPM korrekt durchgereicht bekomme?

Content-ID: 672163

Url: https://administrator.de/forum/hyper-v-maschinen-mit-windows-11-pro-auf-qemu-kvm-portieren-672163.html

Ausgedruckt am: 29.03.2025 um 12:03 Uhr

godlie
godlie 26.03.2025 um 11:28:27 Uhr
Goto Top
Hallo,

evtl. könnte dir da der Apparmor dazwischenfunken, was steht denn in deine r/etc/apparmor.d/abstractions/libvirt-qemu?

Warum nicht gleich auf Proxmox setzen? dann sparst dir das gefrickel mit Ubuntu.

grüße
Lochkartenstanzer
Lochkartenstanzer 26.03.2025 um 11:33:39 Uhr
Goto Top
Moin

Ich nutze swtpm um Windows11 unter Ubuntu mit qemu zu betreiben. Villeicht wäre das eine Alternative.

lks
nachgefragt
nachgefragt 26.03.2025 um 12:05:56 Uhr
Goto Top
Zitat von @godlie:
Warum nicht gleich auf Proxmox setzen? dann sparst dir das gefrickel mit Ubuntu.
Proxmox Backup Server nicht zu vergessen.
https://www.proxmox.com/de/produkte/proxmox-backup-server/uebersicht

Es gibt ja einige, die VMware und Veeam mit Proxmox hinter sich lassen.

Zitat von @temuco:
Die Windows-11-VMs nutzen hauptsächlich Office-Software und einige Handwerkerprogramme – also nichts Besonderes.
Ich denke doch, die Windows 11 Lizenz für die Virtualisierung ist jedenfalls nicht nicht klassische Home oder Pro, wenn ich mich nicht irre.
temuco
temuco 26.03.2025 um 14:02:45 Uhr
Goto Top
Zitat von @godlie:
evtl. könnte dir da der Apparmor dazwischenfunken, was steht denn in deine r/etc/apparmor.d/abstractions/libvirt-qemu?

Ich fand nichts, was darauf hinweist, dass dies das Problem sein könnte.

Warum nicht gleich auf Proxmox setzen? dann sparst dir das gefrickel mit Ubuntu.

Weil es um "nur" wenige, gleichartige Maschinen geht. Ich kenne mich mit Ubuntu einigermaßen aus und daher wollte nicht, wieder was anderes machen. Darüber hinaus soll Ubuntu als Samba-Server dienen, damit andere Windows-Clients Dateien ablegen können. Wie und ob das mit Proxmox geht, weiß ich nicht, weil ich das Produkt nur vom Hören her kenne.
temuco
Lösung temuco 26.03.2025 aktualisiert um 14:40:44 Uhr
Goto Top
Ich nutze swtpm um Windows11 unter Ubuntu mit qemu zu betreiben. Villeicht wäre das eine Alternative.

Danke! Ich komme hier ein Stück weiter. Nachdem es mir nicht gelang, das physische TPM direkt durchzureichen, habe ich die Konfiguration erneut überprüft und dabei festgestellt, dass der tpm2-abrmd-Daemon nicht lief. Den braucht man allerdings unabhängig davon, ob man TPM emuliert oder physikalisch auf dem Blech hat.

Nun habe ich meine Konfiguration wie folgt angepasst:

    <tpm model='tpm-tis'>  
      <backend type='emulator' version='2.0'/>  
    </tpm>

Nebenfrage: Hat Microsoft nichts dagegen, wenn man W11-VMs mit einem Software-TPM betreibt?
Lochkartenstanzer
Lochkartenstanzer 26.03.2025 um 14:31:53 Uhr
Goto Top
Zitat von @temuco:

Nebenfrage: Hat Microsoft nichts dagegen, wenn man W11-VMs mit einem Software-TPM betreibt?

Nicht das ich wüßte. Es funktioniert zumindest.

lks
temuco
Lösung temuco 26.03.2025 um 15:00:40 Uhr
Goto Top
Ich habe nun TPM 2.0 aktiviert und die VM erkennt das auch.

Auch Secureboot ist aktiviert, so dass Windows 11 auf so einer Maschine funktionieren dürfte.
Current Secure Boot State   Enabled
Attempt Secure Boot         [X]
Secure Boot Mode            <Standard Mode>
Reset Secure Boot Keys

Dennoch bootet Windows weiterhin nicht. Ich lande immer auf dem blauen Wiederherstellungsbildschirm und von da aus kann ich das BIIOS ansteuern. Hier sehe ich, dass das TPM 2.0 aktiv ist. Allerdings überfordert mich das, denn in Sachen TPM bin ich unterbelichtet.


Hat jemand ein Idee, wie ich diese Windows-11-Maschinen zum Booten motivieren kann?
tpm
skarfield
skarfield 26.03.2025 um 17:14:23 Uhr
Goto Top
Ich migriere die VMS vom Hyper-V mittels Clonezilla
Funktioniert gut.
Schonmal mit Winpe gestartet und geschaut ob die Partitionen da sind?
temuco
temuco 26.03.2025 um 17:50:35 Uhr
Goto Top
Schonmal mit Winpe gestartet und geschaut ob die Partitionen da sind?

Gerade eben und die virtuelle Disk ist in der Tat nicht da. diskpart findet nichts.
temuco
temuco 26.03.2025 um 21:21:44 Uhr
Goto Top
Ich habe das Thema als gelöst markiert, da das TPM nun richtig erkannt wird.

Hyper-V-Maschinen mit Windows 11 Pro auf QEMU-KVM portieren

Dennoch läuft es noch nicht, denn der Datenträger wird von der VM nicht erkannt. Das ist aber ein anderes Problem, für das ich ein weiteres Thema starten werde.

Lieben Dank für eure Unterstützung!

René
skarfield
skarfield 27.03.2025 um 08:34:23 Uhr
Goto Top
Wie ist dein Datenträger eingebunden? Virtio oder SCSI?
Lochkartenstanzer
Lochkartenstanzer 27.03.2025 um 08:36:31 Uhr
Goto Top
Zitat von @skarfield:

Wie ist dein Datenträger eingebunden? Virtio oder SCSI?

Laut Hyper-V-Umzug auf QEMU-KVM - Datenträger nicht erkannt per virtio.

lks
temuco
temuco 27.03.2025 um 09:12:03 Uhr
Goto Top
Zitat von @skarfield:

Wie ist dein Datenträger eingebunden? Virtio oder SCSI?

Zunächst irrtümlicherweise virtio. Hier die Erklärung aus dem Thread von gestern:

Ich habe weitergeforscht und dabei einen Fehler meinerseits entdeckt: Ich habe voreilig die VM mit den virtio-Treibern erstellt. Somit kommt die VM nicht auf ihren Datenträger. In der Eingabeaufforderung der Wiederherstellungskonsole habe ich dann manuell den Disk-Treiber geladen und ich konnte an den Datenträge kommen.

Um die Sache nicht weiter zu verkomplizieren, habe ich den Datenträger an den virtuellen SATA-Controller angeschlossen und somit konnte ich endlich in Windows booten. Darin habe ich alle virtio-Treiber installiert und nachgeschaut, das der Gerätemanager sauber bleibt.

Danach heruntergefahren und die Konfiguration insofern angepasst, dass der Datenträger an den SCSI-Bus angeschlossen wird:

...
    <disk type='file' device='disk'>  
      <driver name='qemu' type='raw' cache='writeback' discard='unmap'/>  
      <source file='/mnt/data/vms/test/test.raw'/>  
      <target dev='sda' bus='scsi'/>  
      <address type='drive' controller='0' bus='0' target='0' unit='0'/>  
    </disk>
...
    <controller type='scsi' index='0' model='virtio-scsi'>  
      <driver queues='8'/>  
      <address type='pci' domain='0x0000' bus='0x04' slot='0x00' function='0x0'/>  
    </controller>
...


Leider gelingt mir die Einbindung der VirtIO-SCSI-Disk-Treiber in Windows nicht vollständig. Ich sollte im Gerätemanager unter Laufwerke "Red Hat VirtIO SCSI Disk Device" haben, leider aber immer noch "QEMU QEMU HARDDISK SCSI Disk Device".

Unter Speichercontroller sollte m. E. alleine "Red Hat VirtIO SCSI pass-through controller" stehen, es gibt aber noch den Eintrag "Microsoft-Controller für Speicherplätze".

Wenn das auch behoben ist, wäre ich durch.