Migrating Windows to Proxmox/Virtio SCSI single device without intermediary IDE/sata boot drive

Nov 24, 2023
9
2
8
Hello,
I get often asked by customers how to install the virto
drivers before the migration in a way that they can be
immediatly be used with virtio scsi single devices without
an intermediary boot using an ide drive and an empy virtio
scsi single device. And today we solved the issue in a
qskills proxmox training. The trick is: Device Manager > Add
legacy hardware > Next > (*) Install the hardware ... >
Storage Controllers > Have Disk > d:\amd64\2k25\vioscsi
(.inf) > Red Hat Virtio SCSI pass-through controller. You
can than immediatly delete delete the device again: Red Hat
VirtIO SCSI pass-through controller > Uninstall device >
Uninstall (Do *not* check Attempt to remove the driver for
this device because than you end up with the usual blue
screen). We then vibecoded everything we needed to perform
an automated migration: Put the drivers for virtio scsi and
virtio scsi single device, install virtio drivers, install
qemu agent, uninstall vmware tools, document the network
settings and put all network cards to dhcp. Find the
powershell scripts on my homepage: Powershell Scripts

Cheers,
Thomas
 
Last edited:
  • Like
Reactions: _gabriel
This powershell works too, where D:\ is your virtio drive (or folder) and 2k22 your OS version:
Bash:
Get-ChildItem -Recurse -File D:\ | Where-Object {$_.Extension -eq ".inf" -and $_.FullName -like '*\2k22\amd64*'} | ForEach-Object { PNPUtil.exe /add-driver "$($_.FullName)" /install }
 
I tried your approach on a w2k25. Fresh w2k25, latest virtio.iso. Your prompt but 2k22 replaced with 2k25 and the VM gives me a blue screen on first boot. With the phantom device approach above it boots without bluescreen. I just found out that someone else has a script with the same method on github: croit / load-virtio-scsi-on-boot
 
I tried your approach on a w2k25. Fresh w2k25, latest virtio.iso. Your prompt but 2k22 replaced with 2k25 and the VM gives me a blue screen on first boot. With the phantom device approach above it boots without bluescreen. I just found out that someone else has a script with the same method on github: croit / load-virtio-scsi-on-boot
On my notes on migrating from sata to scsi there is a step that you must boot into safeboot first, disable safeboot and reboot or you get a bsod.

  1. bcdedit /set {default} safeboot network
  2. shutdown -s -t 0 -f (shutdown)
  3. Change the disk from sata to scsi.
  4. bcdedit /deletevalue {default} safeboot
  5. shutdown -r -t 0 -f (reboot)
You can give it a try. Just modify it to run (1) before importing the VM to Proxmox and remove (3).
 
Last edited:
On my notes on migrating from sata to scsi there is a step that you must boot into safeboot first, disable safeboot and reboot or you get a bsod.

  1. bcdedit /set {default} safeboot network
  2. shutdown -s -t 0 -f (shutdown)
  3. Change the disk from sata to scsi.
  4. bcdedit /deletevalue {default} safeboot
  5. shutdown -r -t 0 -f (reboot)
I see, with the method above, you don't need safeboot. You shut it down on VMware, you start it on proxmox with virtio scsi single device and the only thing left todo is set the ip address, if the address was static defined before. So it is only one boot.
 
  • Like
Reactions: santiagobiali
@Falk R. made an "install.bat" script which use the devcon.exe Microsoft utility to create the phantom/fake scsi controller.
This allow booting directly in PVE with Virtio SCSI disk.
Just tried today.
Download the virtio win mod drivers ISO , the run "install.bat" , backup/clone to PVE. it's straightforward.

There is a powershell script too, which does the same thing ( https://github.com/croit/load-virtio-scsi-on-boot/ )