A questão não é sobre o Solidworks, na verdade , então continue lendo.
A ideia da virtualização é ser independente de hardware. Diante de nossos olhos, um novo nível de dependência está sendo criado - afixação ao hypervisor.
Pelo que sei, procurar uma solução para esse problema não é violação da licença do SolidWorks e da 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 (Hyper-V e VMware devem ser bem testados :) eles (desenvolvedores) do Solidworks 2015 PDM não querem que seus produtos sejam ativados (a última versão de 2014 funcionou muito bem) no Qemu-KVM.
http://www.solidworks.com/sw/support/11168_ENU_HTML.htm
Estou usando:
Como você pode ver, é uma VM baseada em KVM com Windows 2012 e instalação do 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 mencionadas acima nas próximas horas, mas gostaria de saber se você tem alguma outra ideia.
Solução :
Acontece que eles validam duas coisas:
- Como Michael Hampton apontou corretamente, há uma
-cpu,kvm=off
opção
para desativar a folha CPUID 0x40000000.
- Tabelas ACPI no convidado.
Partes relevantes dos parâmetros de linha de comando do 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 quer ativar:
Atualização 21.04.2017r. DS Justice mencionou que o modo de disco Qemu (usei virtio neste exemplo) também pode ser relevante.
A maioria dos hipervisores atuais que rodam em hardware Intel usam CPUID deixa 0x40000000 et seq. para passar informações sobre o hipervisor do host para o convidado.
KVM , Xen , VMware e Hyper-V usam esse método.
Isso é um acréscimo ao sinalizador de recurso do hipervisor definido na folha CPUID 0x1, que indica que a máquina é uma máquina virtual.
Portanto, é trivial para um programa que pode chamar a instrução CPUID determinar se está sendo executado em um desses hipervisores.
Versões recentes do KVM incluem uma opção de linha de comando para desabilitar a folha CPUID 0x40000000,
-cpu kvm=off
.Eu só queria compartilhar minha experiência aqui também, caso outras pessoas estejam em uma situação semelhante (tentando instalar o solidworks em uma VM virtualbox)
Minha tentativa de configuração:
xubuntu 16.04 host OS, VirtualBox, Windows 10 e Solidworks 2015. Eu estava vendo o mesmo erro discutido acima.
A solução:
A solução que acabei encontrando foi usar o
hidevm.bat
script incluído no crack do Solidsquad, para enganar o Solidworks e fazê-lo 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ê tenha). o .bat destina-se a usuários que executam o Solidworks dentro de uma VM do VirtualBox, com o Windows como o sistema operacional host também, no entanto, se você for como eu tentando executar o Linux como o sistema operacional host, ainda poderá abrir o arquivo .bat, escolha os comandos relevantes, ajuste-os para Linux e execute-os. os comandos relevantes modificados são:Caso sua VM esteja configurada para usar o firmware EFI, você precisa substituir
pcbios
porefi
nas chaves. Consulte 9.12. Configurando as informações do BIOS DMI .A maneira oficial de ativar o servidor SolidWorks no KVM é solicitar um "licenciamento isento de ativação para SolidWorks". Fazemos isso através do revendedor, mas possivelmente poderia ser feito diretamente através do suporte Solidworks.
O Solidworks envia um arquivo de licença que o Solidworks License Manager carrega por meio das Opções avançadas da guia Administração do servidor.
Dado que nos últimos dois anos levou mais de 2 semanas para o Solidworks enviar o arquivo de licença, seria bom que eles não colocassem o KVM na lista negra.
A Solidworks tem uma "Solicitação de aprimoramento" aberta com o título: "Fornecer suporte de servidor SNL para VM KVM Qemu Libvirt." ER # 1-9482749288 Encontrei-o fazendo login no portal Solidworks, encontrando o link Solicitação de aprimoramento e digitando KVM.
Por favor, deixe um comentário sobre este pedido de melhoria! Espero que eles decidam que o KVM é um ambiente de virtualização legítimo.
'/>
ausente no EOL<qemu:arg value='type=1,manufacturer=LENOVO
, então aqui estão as modificações completas da configuração do libvirt:Achei que deveria 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 IMO este tópico é mais sobre como esconder sua execução em uma VM e talvez deva ser editado como tal. De qualquer forma...
Adicione o seguinte ao seu domínio.xml e certifique-se de remover completamente a seção da CPU
Desligue a VM, ligue-a novamente e teste!