A questão não é em torno do Solidworks, na verdade, então por favor continue lendo.
A ideia da virtualização é ser independente de hardware. Diante de nossos olhos, um nível de dependência totalmente novo está sendo criado - anexação ao hipervisor.
Pelo que eu sei, pesquisar uma maneira de encontrar uma solução alternativa para esse problema não é uma violação da licença do Solidworks e da legislação 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 querem que seus produtos sejam ativados (a última versão de 2014 funcionou perfeitamente) 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 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 alguma outra ideia.
Solução:
Acontece que eles validam duas coisas:
- Como Michael Hampton apontou corretamente, há
-cpu,kvm=off
opção
para desabilitar a folha CPUID 0x40000000.
- Tabelas ACPI no convidado.
Partes relevantes dos parâmetros da 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 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.
Responder1
A maioria dos hipervisores atuais executados em hardware Intel usam CPUID deixa 0x40000000 e seguintes. para passar informações sobre o hipervisor do host para o convidado.
KVM,Xen,VMwareeHiper-Vtodos usam esse método.
Isso éalém dissoao 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 umopção de linha de comandopara desabilitar a folha CPUID 0x40000000, -cpu kvm=off
.
Responder2
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:
SO host xubuntu 16.04, VirtualBox, Windows 10 e Solidworks 2015. Eu estava vendo o mesmo erro discutido acima.
A solução:
A solução que finalmente encontrei foi usar o hidevm.bat
script incluído no crack do Solidsquad, para enganar o Solidworks, fazendo-o 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 espero que tenha). o .bat é destinado a usuários que executam o Solidworks dentro de uma VM VirtualBox, com o Windows como sistema operacional host também, no entanto, se você é como eu tentando executar o Linux como sistema operacional host, você ainda pode abrir o arquivo .bat, escolha execute os 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"
Caso sua VM esteja configurada para usar firmware EFI você precisa substituir pcbios
por efi
nas chaves. Ver9.12. Configurando as informações do BIOS DMI.
Responder3
A forma 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 do 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 demorou 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.
O Solidworks tem uma "Solicitação de aprimoramento" aberta com o título: "Fornecer suporte ao 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 esta solicitação de melhoria! Esperamos que eles decidam que o KVM é um ambiente de virtualização legítimo.
Responder4
Decidi compartilhar meu método que funcionava para ocultar a VM do Windows/Task MGR (ele 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 ocultar 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 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 e ligue novamente a VM e teste!