vdhx --> qcow2 no bootable disk

.n3

Member
Mar 19, 2023
45
2
13
Hey,

ich habe eine vdhx von einem Hyper-V nach qcow2 umgewandet:

qemu-img convert -O qcow2 ETS.vhdx /data_tank/vm-drives/images/200/vm-200-disk-0.qcow2

Die config sieht wie folgt aus
Code:
root@pve:~# qm config 200
boot: order=ide0;ide2;net0
cores: 2
ide0: vm-drives:200/vm-200-disk-0.qcow2,size=50G
ide2: none,media=cdrom
machine: pc-i440fx-7.2
memory: 4096
meta: creation-qemu=7.2.0,ctime=1681638664
name: ETS
net0: e1000=7A:78:E6:D8:66:36,bridge=vmbr0,firewall=1
numa: 0
ostype: win10
scsihw: virtio-scsi-single
smbios1: uuid=c8aa9407-3640-4092-84c9-a3fceee30ac7
sockets: 1
vmgenid: abd5428d-2428-44eb-b147-01ab69da211f
root@pve:~# ^C

Weiß jemand, woran es liegen kann?
 
nimm maL ZU ERST SATA CONTROLLER und installiere dann die qemu-driver. Das findest du aber auch hier im forum. Einfach mal suchen.
 
Ich habe die qemu treiber bereits in Hyper-V installier, bevor ich das vdhx konvertiert habe. Habe jetzt auch den Controller geändert und unter Options QEMU Quest Agend aktiviert. Es ändert sich nichts:

1681765067899.png

Die Fehlermeldung ist auch
1681765122744.png
 
also ich würde mal alle controller typen durchprobieren und dann die ausgangsdatei nochmal ins raw-format konvertieren. vielleicht hilft das. ich glaube aber nicht.
 
  • Like
Reactions: .n3
Hi,
qemu-img convert -O qcow2 ETS.vhdx /data_tank/vm-drives/images/200/vm-200-disk-0.qcow2
zur Sicherheit würde ich auch das Ausgangsformat explizit angeben: -f vhdx.

Kannst Du auf der Disk Partitionen sehen mit den folgenden Kommandos?
Code:
modprobe nbd max_part=63
qemu-nbd -n -r -c /dev/nbd0 /data_tank/vm-drives/images/200/vm-200-disk-0.qcow2
fdisk -l /dev/nbd0
qemu-nbd -d /dev/nbd0
 
  • Like
Reactions: .n3
Hey,

ich habe eine vdhx von einem Hyper-V nach qcow2 umgewandet:

qemu-img convert -O qcow2 ETS.vhdx /data_tank/vm-drives/images/200/vm-200-disk-0.qcow2

Die config sieht wie folgt aus
Code:
root@pve:~# qm config 200
boot: order=ide0;ide2;net0
cores: 2
ide0: vm-drives:200/vm-200-disk-0.qcow2,size=50G
ide2: none,media=cdrom
machine: pc-i440fx-7.2
memory: 4096
meta: creation-qemu=7.2.0,ctime=1681638664
name: ETS
net0: e1000=7A:78:E6:D8:66:36,bridge=vmbr0,firewall=1
numa: 0
ostype: win10
scsihw: virtio-scsi-single
smbios1: uuid=c8aa9407-3640-4092-84c9-a3fceee30ac7
sockets: 1
vmgenid: abd5428d-2428-44eb-b147-01ab69da211f
root@pve:~# ^C

Weiß jemand, woran es liegen kann?
OB IDE oder SATA macht erst einmal keinen Unterschied.
Wenn es eine HyperV V1 VM war (IDE Boot) sollte es funktionieren. Wenn es eine HyperV V2 VM (SCSI Boot) war, musst du das Bios auf UEFI stellen.
Auch dann sollte IDE Boot funktionieren.
Dann am besten in die laufende VM eine kleine leere Disk an einem VirtIO Controller einhängen (erst dann installiert Windows den Treiber richtig) und danach runterfahren und die BootDisk auf VirtIO ändern. Die kleine Disk kann gelöscht werden.
Weiterhin ist der E1000 auch nicht so Prickelnd, lieber virtio NIC benutzen.
Wenn du den CPU Typ dann noch auf "host" änderst, läuft Windows richtig flott.
 
  • Like
Reactions: .n3
Hey,

hab die VM jetzt zum Laufen gebracht. Danke für die Unterstützung!

Habe jetzt BIOS auf UEFI umgestellt, EFI Disk angehängt, CPU auf host und Netzwerk auf VirtIO umgestellt.

1681805922672.png

Dann am besten in die laufende VM eine kleine leere Disk an einem VirtIO Controller einhängen (erst dann installiert Windows den Treiber richtig) und danach runterfahren und die BootDisk auf VirtIO ändern. Die kleine Disk kann gelöscht werden.
Du meinst so eine Disk anhängen, Treiber installieren und die Disk dann wieder löschen? Was meinst du dann mit BootDisk auf VirtIO ändern?
1681806182916.png

Weiterhin ist der E1000 auch nicht so Prickelnd, lieber virtio NIC benutzen.
Ist das generell bei allen VMs etc, oder nur in bezug auf eine Windows VM?

@fiona ich habe deine Hinweise jetzt nicht getestet, da ich mit UEFI angefangen habe und das funktioniert.
 
  • Like
Reactions: fiona
Hey,

hab die VM jetzt zum Laufen gebracht. Danke für die Unterstützung!

Habe jetzt BIOS auf UEFI umgestellt, EFI Disk angehängt, CPU auf host und Netzwerk auf VirtIO umgestellt.

View attachment 49335


Du meinst so eine Disk anhängen, Treiber installieren und die Disk dann wieder löschen? Was meinst du dann mit BootDisk auf VirtIO ändern?
View attachment 49336


Ist das generell bei allen VMs etc, oder nur in bezug auf eine Windows VM?

@fiona ich habe deine Hinweise jetzt nicht getestet, da ich mit UEFI angefangen habe und das funktioniert.
Alles korrekt. Die OS Disk nach Treiberinstall einmal mit Detach aushängen und dann als Virtio wieder einhängen. Danach Bootreihenfolge Virtio aktivieren und nach oben.
 
Hab die Platte über die GUI detached und eine neue virtio über die GUI erstellt und anschließend in der config die "disk-2" ind "disk-0 geändert. Wenn Windows jetzt hochfährt geht er in die Reparatur und will eine Systemwiederherstellung machen.

1681828370928.png
 
Ich weiß nicht, was du genau gemacht hast.
Die Detached OS Disk ist dann als unused Disk in der VM. Diese editieren und Virtio auswählen. Dann bei den Optionen, in der Boot Order, die VirtIO Disk auswählen.
 
1. Platte detached
1681835325079.png

2. Neue Platte angelegt
1681835367261.png

3. config bearbeitet
Vorher
Code:
agent: 1,fstrim_cloned_disks=1
bios: ovmf
boot: order=ide2;net0
cores: 2
cpu: host
efidisk0: vm-drives:200/vm-200-disk-1.qcow2,efitype=4m,pre-enrolled-keys=1,size=528K
ide2: none,media=cdrom
machine: pc-i440fx-7.2
memory: 4096
meta: creation-qemu=7.2.0,ctime=1681638664
name: ETS
net0: virtio=7A:78:E6:D8:66:36,bridge=vmbr0,firewall=1
numa: 0
ostype: win10
smbios1: uuid=c8aa9407-3640-4092-84c9-a3fceee30ac7
sockets: 1
unused0: vm-drives:200/vm-200-disk-0.qcow2
virtio0: vm-drives:200/vm-200-disk-2.qcow2,iothread=1,size=50G
vmgenid: abd5428d-2428-44eb-b147-01ab69da211f

Nachher
Code:
agent: 1,fstrim_cloned_disks=1
bios: ovmf
boot: order=ide2;net0
cores: 2
cpu: host
efidisk0: vm-drives:200/vm-200-disk-1.qcow2,efitype=4m,pre-enrolled-keys=1,size=528K
ide2: none,media=cdrom
machine: pc-i440fx-7.2
memory: 4096
meta: creation-qemu=7.2.0,ctime=1681638664
name: ETS
net0: virtio=7A:78:E6:D8:66:36,bridge=vmbr0,firewall=1
numa: 0
ostype: win10
smbios1: uuid=c8aa9407-3640-4092-84c9-a3fceee30ac7
sockets: 1
virtio0: vm-drives:200/vm-200-disk-0.qcow2
vmgenid: abd5428d-2428-44eb-b147-01ab69da211f

4. Bootreihenfolge geändert
1681835466180.png
 
Also noch mal langsam:
1. konvertierte Disk als IDE booten
2. neue (1GB) Disk als Virtio einhängen
3. Treiber im Windows installieren (1 GB Disk muss in der Datenträgerverwaltung auftauchen)
4. Runterfahren
5. 1 GB Disk löschen
6. konvertierte Disk detach
7. konvertierte Disk attach als Virtio
8. Bootreihenfolge anpassen
9. Windows bootet plötzlich deutlich schneller
 
  • Like
Reactions: .n3
Jetzt hat es funktioniert. Danke!

Muss man das immer machen, wenn man eine Windows VM, ode rnur weil ich eine VM aus Hyper-V migriert habe? Also hätte ich die VM direkt mit Proxmox installiert, hätte ich das auch machen müssen, oder hätte es beim einrichten gereicht eine virtio anzulegen und anschließend die Treiber zu installieren?

Wie wird Virtio nicht als Defaul genommen, sondern SCSI, wenn ich eine neue VM anlegen?

Ich habe noch einen disk Leiche die ich nicht über die GUI entfernen kann, weil sie angeblich von der VM genutzt wird. Über die VM kann ich sie nicht löschen, da sie nirgends in der config steht. Kann ich sie einfach über ftp löschen?
 
Das ist das übliche Vorgehen, wenn man von einem anderen Hypervisor migriert.
Beim neu installieren, machst du gleich nen richtigen Controller und legst bei der Installation das Qemu iso ein für den Treiber.
Über CLI kannst du die Leiche löschen.
 
  • Like
Reactions: .n3