Solidworks: o modo de licença de ativação não é suportado neste ambiente virtual (Qemu-KVM)

12

A questão não é sobre o Solidworks , portanto, continue lendo.

Toda a idéia de virtualização é ser independente de hardware. Diante de nossos olhos, um novo nível de dependência está sendo criado - afixação no hypervisor.

Tanto quanto sei, a busca de uma solução alternativa para esse problema não viola a licença Solidworks e a lei local do meu país.

Meu cliente e eu queremos ativar os Produtos Solidworks na máquina virtual KVM. Por algumas razões estranhas (o Hyper-V e o VMware devem ser bem testados :) eles (desenvolvedores) do Solidworks 2015 PDM não desejam que seus produtos sejam ativados (a última versão de 2014 funcionou bem) no Qemu-KVM.

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

Estou usando:

configuração

Como você pode ver, é uma VM baseada em KVM com instalação do Windows 2012 e Solidworks PDM.

Pergunta : O que mais eles podem verificar se estou executando minha VM no Qemu-KVM, além de verificar:

  • Endereço (s) MAC do adaptador Ethernet da VM,
  • Etiquetas de driver de dispositivo,
  • Modelo de CPU,
  • Tabelas ACPI.

Vou descartar as coisas acima mencionadas nas próximas horas, mas gostaria de saber se você tem outras idéias.

Solução :

Acontece que eles validam duas coisas:

  1. Como Michael Hampton apontou corretamente, há -cpu,kvm=offopção

para desativar a folha CPUID 0x40000000.

  1. Tabelas da ACPI no convidado.

Partes relevantes dos parâmetros da linha de comando 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

Sintaxe do arquivo de configuração 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>

Como prova, agora ele deseja ativar: com hack

Atualização 21.04.2017r. O DS Justice mencionou que o modo de disco Qemu (usei virtio neste exemplo) também pode ser relevante.

Michal Sokolowski
fonte
Este site é para administradores profissionais que estão inerentemente interessados ​​em soluções de suporte / suporte. Nós realmente tentamos muito trabalhar 'dentro das linhas'.
Chopper3
8
Contanto que algo não seja uma solução padrão, isso não significa que não é suportável, como você pode ver. Você realmente não vê o problema aqui? Eles forçam alguém a escolher ferramentas comerciais e se esconder atrás - porque é bem testado. É um absurdo quando se trata de escolher um hipervisor. Para subjacente ao SO - sim, mas não para um aplicativo.
Michal Sokolowski
Se um número suficiente de clientes pagantes exigirem que o SolidWorks suporte KVM, eles serão forçados a fazê-lo. Isso já aconteceu quando a Oracle lançou o OEL e tentou bloquear a instalação no RHEL, apenas uma questão de pressão e o potencial de levar seus negócios para outro lugar.
dyasny
Eles já fizeram. Eles suportam, por exemplo, eles tinham a tarefa de instalar a licença hoje.
Michal Sokolowski
1
Isso não funcionou para mim com um disco de inicialização IDE virtual, provavelmente devido à descrição do disco AHCI que contém a palavra "QEMU". Mudei meu disco de inicialização para VirtIO, conforme mostrado na sua captura de tela, e eu sou de ouro. Obrigado!
Autumn

Respostas:

13

A maioria dos hipervisores atuais executados no hardware Intel usa CPUID deixa 0x40000000 e seq. para passar informações sobre o hypervisor de host para convidado.

KVM , Xen , VMware e Hyper-V usam esse método.

Isso é um complemento ao sinalizador de recurso do hypervisor definido na folha 0x1 do CPUID, que indica que a máquina é uma máquina virtual.

Portanto, é trivial para um programa que pode chamar a instrução CPUID para determinar se está sendo executado em um desses hipervisores.

Versões recentes do KVM incluem uma opção de linha de comando para desativar a folha CPUID 0x40000000 -cpu kvm=off,.

Michael Hampton
fonte
1
E esse método já se mostrou eficaz contra os drivers da NVIDIA que bloqueavam as VMs KVM também na passagem.
dyasny
5

A maneira oficial de ativar o servidor Solidworks no KVM é solicitar um "Licenciamento isento de ativação para o SolidWorks". Fazemos isso através do revendedor, mas possivelmente isso pode ser feito diretamente através do suporte ao Solidworks.

O Solidworks envia um arquivo de licença que o Solidworks License Manager carrega através das Opções avançadas da guia Administração do servidor.

Dado que nos últimos dois anos foram necessárias mais de duas semanas para o Solidworks enviar o arquivo de licença, seria bom não incluí-lo na KVM na lista negra.

O Solidworks possui uma "Solicitação de aprimoramento" aberta com o título: "Fornece suporte ao SNL Server para VM KVM Qemu Libvirt". ER # 1-9482749288 Encontrei-o efetuando login no portal Solidworks, localizando o link Solicitação de aprimoramento e digitando KVM.

Deixe um comentário sobre esta solicitação de aprimoramento! Espero que eles decidam que o KVM é um ambiente de virtualização legítimo.

lickdragon
fonte
A AWS está usando o KVM!
FreeSoftwareServers
1
@FreeSoftwareServers A AWS mudou recentemente recentemente para o KVM para alguns tipos de máquinas. Ainda há muito Xen por aí.
Michael Hampton
É verdade, apenas dizendo que é um legitimate virtualization environment.
FreeSoftwareServers
Não conte para mim, conte para o Solidworks! :)
lickdragon
5

Eu também queria compartilhar minha experiência aqui, caso outras pessoas estejam em uma situação semelhante (tentando instalar o solidworks em uma VM de caixa virtual)

Minha tentativa de configuração:

SO host do xubuntu 16.04, VirtualBox, Windows 10 e Solidworks 2015. Eu estava vendo o mesmo erro discutido acima.

A solução:

A solução que encontrei foi usar o hidevm.batscript incluído no crack do Solidsquad, para enganar o Solidworks a pensar que não está sendo executado em uma VM. você pode usar o arquivo .bat mesmo se tiver uma licença legítima (como eu espero que você faça). o .bat é destinado a usuários que executam o Solidworks dentro de uma VM do VirtualBox, com o Windows também como sistema operacional host; no entanto, se você gosta de tentar executar o Linux como sistema operacional host, ainda pode abrir o arquivo .bat. fora dos comandos relevantes, ajuste-os para linux e execute-os. os comandos relevantes modificados são:

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"

No caso de sua VM está configurado para usar EFI firmware que você precisa para substituir pcbiospor efinas chaves. Ver 9.12. Configurando as informações da BIOS DMI .

Thomas Pfeifer
fonte
Isso falhou para mim. Pode ser porque meu sistema está com UEFI.
KYB
Mas eu encontrei solução em documentos VBox $ 9,12. > No caso de sua VM está configurado para usar EFI firmware que você precisa para substituir pcbiospor efinas chaves. Sugiro editar a mensagem.
KYB
4

'/>faltando no EOL, <qemu:arg value='type=1,manufacturer=LENOVOentão aqui estão as modificações completas na configuração da libvirt:

<domain type='kvm' xmlns:qemu='http://libvirt.org/schemas/domain/qemu/1.0'>
 (...)

... 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>
 (...)
THOBAD007
fonte
Obrigado pela sua resposta, me ajudou a criar a minha, acabei de remover o código desnecessário.
FreeSoftwareServers
1

Pensei em compartilhar meu método, que funcionou para ocultar a VM do Windows / Task MGR (também tem menos coisas desnecessárias e é mais fácil de ler). Eu não estava tentando ativar o Solidworks, mas na IMO esse tópico trata mais de ocultar sua execução em uma VM e talvez deva ser editado como tal. De qualquer forma...

Adicione o seguinte ao seu domain.xml e remova completamente a seção 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>

Desligue a VM e ligue-a novamente e teste!

FreeSoftwareServers
fonte
1
Eu tenho o SolidWorks trabalhando no qemu no Ubuntu 19.04 com essa configuração, os smbiosargumentos e o VirtIO como o driver para discos e ethernet.
Avamander 7/10/19
1
@Avamander Isso é incrível, pois eu disse que nem estava trabalhando com o SolidWorks, mas parece que ajudei a resolver a pergunta da OP! Eu esqueço o que estava trabalhando, mas isso funcionou para mim e para outra coisa, acho que era relacionada a jogos, não rodava jogos em uma VM. Meus da VM são mais poderosos, em seguida, a maioria dos povos Gaming Laptops: P
FreeSoftwareServers
@ Aravamand Estou apenas curioso, você tentou sem os smbiosargumentos?
FreeSoftwareServers
Eu não tentei sem uma forjada smbios.
Avamander