The question is not around Solidworks actually, so please continue to read.
The whole idea of virtualization is to be hardware independent. Before our eyes a whole new dependency level is being created - affixment to the hypervisor.
As far as I know searching in a way to find a workaround of this problem is not violation of the Solidworks license and local law in my country.
My client and I want to activate Solidworks Products on KVM virtual machine. For some weird reasons (Hyper-V and VMware are supposed to be well tested :) they (developers) of Solidworks 2015 PDM don't want their products to be activated (last 2014 version worked just fine) on Qemu-KVM.
I am using:
As you can see it's KVM-based VM with Windows 2012 and Solidworks PDM installation.
Question: What else can they check if I am running my VM in Qemu-KVM besides checking:
- MAC address(es) of VM's Ethernet adapter,
- Device driver labels,
- CPU model,
- ACPI tables.
I am going to rule out the above mentioned things in next few hours, but I'd like to know if You have any other ideas.
It turns out they validate two things:
- As Michael Hampton correctly pointed there's
to disable the CPUID 0x40000000 leaf.
- ACPI Tables on the guest.
Relevant parts of qemu command line parameters:
-cpu host,kvm=off -smbios type=0,vendor=LENOVO,version=FBKTB4AUS,date=07/01/2015,release=1.180 -smbios type=1,manufacturer=LENOVO,product=30AH001GPB,version=ThinkStation P300,serial=S4M88119,uuid=cecf333d-6603-e511-97d5-6c0b843f98ba,sku=LENOVO_MT_30AH,family=P300
Libvirtd config file syntax:
<domain type='kvm' xmlns:qemu='http://libvirt.org/schemas/domain/qemu/1.0'> # Please notice there is xmlns definition in <domain> tag. Without it # <qemu:commandline> and <qemu:arg> tags won't work. <name>acm-server</name> <uuid>d0e14081-b4a0-23b5-ae39-110a686b0e55</uuid> <memory unit='KiB'>81920000</memory> <currentMemory unit='KiB'>81920000</currentMemory> <vcpu placement='static'>4</vcpu> <os> <type arch='x86_64' machine='pc-1.1'>hvm</type> <boot dev='hd'/> <bootmenu enable='yes'/> </os> <features> <acpi/> <apic/> <pae/> </features> # Please notice there is no CPU definition on the top. <qemu:commandline> <qemu:arg value='-cpu'/> <qemu:arg value='host,kvm=off'/> <qemu:arg value='-smbios'/> <qemu:arg value='type=0,vendor=LENOVO,version=FBKTB4AUS,date=07/01/2015,release=1.180'/> <qemu:arg value='-smbios'/> <qemu:arg value='type=1,manufacturer=LENOVO,product=30AH001GPB,version=ThinkStation P300,serial=S4M88119,uuid=cecf333d-6603-e511-97d5-6c0b843f98ba,sku=LENOVO_MT_30AH,family=P3'/> </qemu:commandline> </domain>
Update 21.04.2017r. DS Justice mentioned that Qemu (I used virtio in this example) disk mode may be relevant as well.