Solidworks:此虚拟环境(Qemu-KVM)不支持激活许可证模式

Solidworks:此虚拟环境(Qemu-KVM)不支持激活许可证模式

问题实际上不是围绕 Solidworks,所以请继续阅读。

虚拟化的整个理念是独立于硬件。我们眼前正在创建一个全新的依赖级别 - 附加到虚拟机管理程序。

据我所知,以某种方式寻找解决此问题的方法并不违反 Solidworks 许可证和我国当地法律。

我的客户和我想在 KVM 虚拟机上激活 Solidworks 产品。出于某些奇怪的原因(Hyper-V 和 VMware 应该经过充分测试 :),Solidworks 2015 PDM 的开发人员不希望他们的产品在 Qemu-KVM 上激活(上一个 2014 版本运行良好)。

http://www.solidworks.com/sw/support/11168_ENU_HTML.htm http://www.solidworks.com/sw/support/11168_ENU_HTML.htm

我在用:

设置

如您所见,它是基于 KVM 的 VM,安装了 Windows 2012 和 Solidworks PDM。

问题:如果我在 Qemu-KVM 中运行我的虚拟机,除了检查以下内容外,他们还能检查什么?

  • VM 以太网适配器的 MAC 地址,
  • 设备驱动程序标签,
  • CPU 型号,
  • ACPI 表。

我将在接下来的几个小时内排除上述事项,但我想知道您是否还有其他想法。

解决方案

事实证明他们证实了两件事:

  1. 正如迈克尔·汉普顿正确指出的那样,有一个-cpu,kvm=off选择

禁用 CPUID 0x40000000 叶。

  1. 客户端上的 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

目前,大多数在英特尔硬件上运行的虚拟机管理程序都使用 CPUID 离开 0x40000000 等,将有关虚拟机管理程序的信息从主机传递到客户机。

虚拟机西恩VMwareHyper-V都用这个方法。

这是此外到 CPUID 叶 0x1 中设置的虚拟机管理程序功能标志,这表明该机器是虚拟机。

因此,对于可以调用 CPUID 指令来确定其是否在其中一个虚拟机管理程序下运行的程序来说,这是很简单的。

KVM 的最新版本包括一个命令行选项禁用 CPUID 0x40000000 叶,-cpu kvm=off

答案2

我只是想在这里分享我的经验,以防其他人遇到类似的情况(尝试在 VirtualBox VM 上安装 SolidWorks)

我尝试的设置:

xubuntu 16.04 主机操作系统、VirtualBox、Windows 10 和 Solidworks 2015。我看到了上面讨论的相同错误。

解决方案:

我最终找到的解决方案是使用hidevm.batSolidsquad 破解程序中包含的脚本,欺骗 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 固件,则需要在键中替换pcbiosefi请参阅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 然后重新打开并测试!

相关内容