This quick post is aimed to help you fix the “Invalid target disk adapter type: pvscsi.” error that can occur when importing a virtual machine into a VMware virtualization product.
In this example I’m using VMware Workstation Pro 14 on Windows 10, however the fix should apply to other versions such as VMware Player or VMware Fusion as well.
Upon importing the virtual machine, it would error right at the start with the following message:
Invalid target disk adapter type: pvscsi.
Now an OVA file is basically just a zip containing other files needed for the virtual machine.
In this case I used 7-Zip to extract the contents of my OVA file, which contained .mf, .ovf, and .vmdk files.
The .ovf (Open Virtualization Format) file contains XML which describes the packed virtual machine, so it’s just a text file. We’re going to edit this in our favourite text editor.
The following section defines the SCSI controller for the virtual machine, and this is where the problem lies.
<Item> <rasd:Address>0</rasd:Address> <rasd:Caption>scsiController0</rasd:Caption> <rasd:Description>SCSI Controller</rasd:Description> <rasd:ElementName>scsiController0</rasd:ElementName> <rasd:InstanceID>5</rasd:InstanceID> <rasd:ResourceSubType>VirtualSCSI</rasd:ResourceSubType> <rasd:ResourceType>6</rasd:ResourceType> </Item>
Simply edit the ‘ResourceSubType’ to lsilogic, as shown below.
<Item> <rasd:Address>0</rasd:Address> <rasd:Caption>scsiController0</rasd:Caption> <rasd:Description>SCSI Controller</rasd:Description> <rasd:ElementName>scsiController0</rasd:ElementName> <rasd:InstanceID>5</rasd:InstanceID> <rasd:ResourceSubType>lsilogic</rasd:ResourceSubType> <rasd:ResourceType>6</rasd:ResourceType> </Item>
In this instance, I’ve only modified the ResourceSubType from VirtualSCSI to lsilogic. I don’t recommend changing the rest of the Item tag unless you’re still having problems, in most cases you should only need to edit the ResourceSubType.
This took me a while to work out, as when I initially searched the .ovf file I was searching for instances of ‘pvscsi’, which did not exist.
Once the .ovf file has been saved we’re not done yet, we still need to take care of the .mf file, which contains hashes of the .vmdk and .ovf files. As we just modified the .ovf file above, the hash is no longer correct, so you will receive the following error if you try to import the virtual machine at this stage:
SHA digest of file *.ovf does not match manifest.
To fix this you need to install OpenSSL, I’ve installed this in Windows but the syntax should be the same regardless of operating system. Basically you want to run the following command, replacing the names of the .vmdk, .ovf, and .mf file as appropriate.
.vmdk .ovf > .mf WARNING: can't open config file: /etc/ssl/openssl.cnf E:\>
The warning isn’t really an issue here, that directory doesn’t exist on Windows. Regardless, the hashes of the .mf file are regenerated. You should now be able to simply open the .ovf file with your VMware product and it should start importing correctly.