问题实际上不是围绕 Solidworks,所以请继续阅读。
虚拟化的整个理念是独立于硬件。我们眼前正在创建一个全新的依赖级别 - 附加到虚拟机管理程序。
据我所知,以某种方式寻找解决此问题的方法并不违反 Solidworks 许可证和我国当地法律。
我的客户和我想在 KVM 虚拟机上激活 Solidworks 产品。出于某些奇怪的原因(Hyper-V 和 VMware 应该经过充分测试 :),Solidworks 2015 PDM 的开发人员不希望他们的产品在 Qemu-KVM 上激活(上一个 2014 版本运行良好)。
http://www.solidworks.com/sw/support/11168_ENU_HTML.htm
我在用:
如您所见,它是基于 KVM 的 VM,安装了 Windows 2012 和 Solidworks PDM。
问题:如果我在 Qemu-KVM 中运行我的虚拟机,除了检查以下内容外,他们还能检查什么?
- VM 以太网适配器的 MAC 地址,
- 设备驱动程序标签,
- CPU 型号,
- ACPI 表。
我将在接下来的几个小时内排除上述事项,但我想知道您是否还有其他想法。
解决方案:
事实证明他们证实了两件事:
- 正如迈克尔·汉普顿正确指出的那样,有一个
-cpu,kvm=off
选择
禁用 CPUID 0x40000000 叶。
- 客户端上的 ACPI 表。
qemu命令行参数相关部分:
-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 配置文件语法:
<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>
更新 21.04.2017r。DS Justice 提到 Qemu(我在这个例子中使用了 virtio)磁盘模式可能也相关。
答案1
答案2
我只是想在这里分享我的经验,以防其他人遇到类似的情况(尝试在 VirtualBox VM 上安装 SolidWorks)
我尝试的设置:
xubuntu 16.04 主机操作系统、VirtualBox、Windows 10 和 Solidworks 2015。我看到了上面讨论的相同错误。
解决方案:
我最终找到的解决方案是使用hidevm.bat
Solidsquad 破解程序中包含的脚本,欺骗 Solidworks 认为它没有在 VM 中运行。即使您拥有合法许可证,也可以使用 .bat 文件(我希望您有)。 .bat 适用于在 VirtualBox VM 中运行 Solidworks 的用户,并且使用 Windows 作为主机操作系统,但是如果您像我一样尝试运行 Linux 作为主机操作系统,您仍然可以打开 .bat 文件,挑选出相关命令,针对 Linux 进行调整,然后运行它们。修改后的相关命令是:
VMNAME=[whatever your VM name is]
rand9="abcdefghi" #any 9 character string
rand20="abdcefghijklmnopqrst" #any 20 character string
rand8="abcdefgh" #any 8 character string
VBoxManage setextradata $VMNAME "VBoxInternal/Devices/pcbios/0/Config/DmiBIOSVendor" "American Megatrends Inc"
VBoxManage setextradata $VMNAME "VBoxInternal/Devices/pcbios/0/Config/DmiBIOSVersion" "2.1.0"
VBoxManage setextradata $VMNAME "VBoxInternal/Devices/pcbios/0/Config/DmiSystemVendor" "ASUSTek Computer"
VBoxManage setextradata $VMNAME "VBoxInternal/Devices/pcbios/0/Config/DmiSystemSerial" $rand9
VBoxManage setextradata $VMNAME "VBoxInternal/Devices/ahci/0/Config/Port0/SerialNumber" $rand20
VBoxManage setextradata $VMNAME "VBoxInternal/Devices/ahci/0/Config/Port0/FirmwareRevision" $rand8
VBoxManage setextradata $VMNAME "VBoxInternal/Devices/ahci/0/Config/Port0/ModelNumber" "SEAGATE ST3750525AS"
如果您的 VM 配置为使用 EFI 固件,则需要在键中替换pcbios
。efi
请参阅9.12. 配置 BIOS DMI 信息。
答案3
在 KVM 上激活 Solidworks 服务器的官方方式是申请“SolidWorks 免激活许可”。我们通过经销商进行此操作,但可能也可以直接通过 Solidworks 支持进行。
Solidworks 发送一个许可证文件,Solidworks 许可证管理器通过“服务器管理”选项卡的“高级选项”加载该文件。
考虑到过去两年 Solidworks 花了两周多的时间才发送许可证文件,如果他们不将 KVM 列入黑名单就好了。
Solidworks 有一个“增强请求”,标题为:“为 VM KVM Qemu Libvirt 提供 SNL 服务器支持。”ER # 1-9482749288 我通过登录 Solidworks 门户、找到增强请求链接并输入 KVM 找到了它。
请对此增强请求发表评论!希望他们能认定 KVM 是一个合法的虚拟化环境。
答案4
我想分享一下我的方法,它可以将虚拟机从 Windows/Task MGR 中隐藏(它也减少了不必要的内容,更容易阅读)。我并不是想激活 Solidworks,但在我看来,这个线程更多的是关于隐藏您在虚拟机中的运行,也许应该这样编辑。无论如何...
将以下内容添加到您的 domain.xml 并确保完全删除 CPU 部分
<domain type='kvm' xmlns:qemu='http://libvirt.org/schemas/domain/qemu/1.0'>
#Regaular Stuff
#No CPU Type Set
<features>
<acpi/>
<apic/>
<kvm>
<hidden state='on'/>
</kvm>
<vmport state='off'/>
</features>
#Add to Bottom of Domain.xml
</devices>
<qemu:commandline>
<qemu:arg value='-cpu'/>
<qemu:arg value='host,hv_time,kvm=off,hv_vendor_id=null,-hypervisor'/>
</qemu:commandline>
</domain>
关闭 VM 然后重新打开并测试!