这个问题实际上不在 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 中运行我的虚拟机,除了检查之外,他们还能检查什么:
- 虚拟机以太网适配器的 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)磁盘模式也可能是相关的。
大多数当前在 Intel 硬件上运行的管理程序使用 CPUID 留下 0x40000000 et seq。将有关虚拟机管理程序的信息从主机传递给来宾。
KVM、Xen、VMware和Hyper-V都使用这种方法。
这是对 CPUID 叶 0x1 中设置的管理程序功能标志的补充,它指示机器是虚拟机。
因此,对于可以调用 CPUID 指令来确定它是否在这些管理程序之一下运行的程序来说,这是微不足道的。
最新版本的 KVM 包括一个命令行选项来禁用 CPUID 0x40000000 叶,
-cpu kvm=off
.我也只是想在这里分享我的经验,以防其他人处于类似情况(尝试在 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 调整它们,然后运行它们。修改后的相关命令为:如果您的 VM 配置为使用 EFI 固件,您需要在密钥中替换
pcbios
为。efi
见9.12。配置 BIOS DMI 信息。在 KVM 上激活 Solidworks 服务器的官方方法是申请“SolidWorks 免激活许可”。我们通过经销商来完成这项工作,但也可以通过 Solidworks 支持直接完成。
Solidworks 发送一个许可文件,Solidworks 许可管理器通过服务器管理选项卡的高级选项加载该许可文件。
鉴于过去两年 Solidworks 发送许可证文件的时间超过了 2 周,最好让他们不将 KVM 列入黑名单。
Solidworks 打开了一个“增强请求”,标题为:“为 VM KVM Qemu Libvirt 提供 SNL 服务器支持”。ER # 1-9482749288 我通过登录 Solidworks 门户找到了增强请求链接,然后键入 KVM。
请对此增强请求发表评论!希望他们会决定 KVM 是一个合法的虚拟化环境。
'/>
EOL 上缺少<qemu:arg value='type=1,manufacturer=LENOVO
所以这里是完整的 libvirt 配置修改:我想我会分享我的方法,该方法可以从 Windows/Task MGR 中隐藏 VM(它也减少了不必要的东西,并且更易于阅读)。我没有尝试激活 Solidworks,但 IMO 这个线程更多的是关于隐藏你在 VM 中的运行,也许应该这样编辑。反正...
将以下内容添加到您的 domain.xml 并确保完全删除 CPU 部分
关闭并重新打开虚拟机并进行测试!