Migrating Hyper-V to Proxmox - what I learned

Out of interest do you know of similar guides for migrating Linux guests running on Hyper-V over to Proxmox?

For example, presumably I don't need to install VirtIO drivers or equivalent? What do I select for SCSI controller (default? virtio scsi?), BIOS, etc?
 

Thanks, although that manual doesn't explain issues around different disk types in Hyper-V etc., for example I have imported a disk that was previously exported from Hyper-V (previously an IDE virtual disk) which worked fine. But now I am moving on to importing SCSI virtual disks and the VM is just not booting up as it can't see a boot disk.

I find the docs are great at being technical about the product itself, but not so good at describing issues around the use of the product. So you are left to discover an issue yourself which often takes a lot of research in the dark, only to find that the docs, whilst being good at describing the product, don't actually describe edge cases quite so well.

Hence I was asking here on a thread where someone had already pre-empted a lot of the issues importing Hyper-V virtual machines (of a windows VM), to see if there was a similar guide for doing the same but for a Linux VM where issues of drivers are dealt with differently.
 
Last edited:
I wanted to add my experience to this as well, and expand upon the knowledge in this thread.

I've been administrating Microsoft systems for over 15 years, shying away from Linux mostly because I didn't have the time on the job to learn and understand the differences. But I've been doing much learning over the last few years, and think some of this info may help folks out.

First off, the way Windows loads drivers upon startup is if they are located within the following registry key:
Code:
HKLM\SYSTEM\CurrentControlSet001\Services

Now, just existing in this key isn't enough, there needs to be linking within the key object to point the the correct driver files. This is where going through the steps provided in the initial post on how-to convert comes into play - when you boot the system with an IDE drive, Windows always loads the IDE drivers. If your OS is mounted in the IDE, it boots and detects the extra 'vioscsi' drive attached to the VM, initializing the 'vioscsi' driver (only if you've installed this before exporting your VM, otherwise you'll need to install it to have the registry key created).
Now, I figured that even if you install the driver and force install it in using 'pnputil.exe /add-driver D:\vioscsi\2k22\amd64\vioscsi.inf /INSTALL';
this will NOT create the registry key needed to force the vioscsi driver to boot. The vioscsi device needs to be detected by the operating system in order for the registry key to be created.

What you will see in the registry key, and some info about it:
windows_storage_driver_loading.png
You'll see on the address bar that we're viewing 'vioscsi' key within 'Services'. All of what you see within this object is generated by the operating system when it detects the device for the first time - either by having the actual device connected to the system, or if you're a little fearless like myself and like breaking/tinkering with things you can use a Microsoft command line utility called 'devcon' to install a dummy copy of the device and force the creation of this registry key. ;)
According to my sleuthing with GPT-o1, these are the 'Start' flags that can be modified:

Each storage driver (e.g., Intel “iastorV,” Microsoft “storahci,” “msahci,” iSCSI “msiscsi,” or VirtIO “vioscsi”) has its own service subkey. Within that subkey, the values that matter for boot-time loading are typically:
  • Start – Controls how/when the driver loads (0 = boot, 1 = system, 2 = auto, 3 = manual, 4 = disabled)
  • StartOverride – A newer mechanism (Windows 8+), which can override the value in Start

I hope some folks find this info helpful in their endeavours! :)