Solidworks: la modalità di licenza di attivazione non è supportata in questo ambiente virtuale (Qemu-KVM)


12

In realtà la domanda non riguarda Solidworks , quindi continua a leggere.

L'intera idea della virtualizzazione deve essere indipendente dall'hardware. Davanti ai nostri occhi viene creato un livello di dipendenza completamente nuovo: l'apposizione all'hypervisor.

Per quanto ne so, cercare un modo per aggirare questo problema non è una violazione della licenza Solidworks e delle leggi locali nel mio paese.

Io e il mio cliente vogliamo attivare i prodotti Solidworks sulla macchina virtuale KVM. Per alcune strane ragioni (Hyper-V e VMware dovrebbero essere ben testati :) loro (sviluppatori) di Solidworks 2015 PDM non vogliono che i loro prodotti vengano attivati ​​(la versione precedente del 2014 ha funzionato bene) su Qemu-KVM.

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

Sto usando:

impostare

Come puoi vedere è una macchina virtuale basata su KVM con installazione di Windows 2012 e Solidworks PDM.

Domanda : cos'altro possono controllare se sto eseguendo la mia VM in Qemu-KVM oltre a controllare:

  • Indirizzi MAC dell'adattatore Ethernet della VM,
  • Etichette del driver del dispositivo,
  • Modello di CPU,
  • Tabelle ACPI.

Escluderò le cose sopra menzionate nelle prossime ore, ma vorrei sapere se hai altre idee.

Soluzione :

Si scopre che convalidano due cose:

  1. Come ha correttamente indicato Michael Hampton, c'è -cpu,kvm=offun'opzione

per disabilitare il CPUID 0x40000000 leaf.

  1. Tabelle ACPI sull'ospite.

Parti rilevanti dei parametri della riga di comando di 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

Sintassi del file di configurazione di 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>

Come prova, ora vuole attivare: con l'hack

Aggiornamento 21.04.2017r. DS Justice ha affermato che anche la modalità disco Qemu (ho usato virtio in questo esempio) può essere rilevante.


Questo sito è per amministratori di sistema professionisti che sono intrinsecamente interessati a soluzioni di supporto / supporto, ci impegniamo davvero molto a lavorare "all'interno delle linee".
Chopper3

8
Finché qualcosa non è una soluzione standard non significa che non sia sostenibile, come puoi vedere. Non vedi davvero il problema qui? Costringono qualcuno a scegliere strumenti commerciali e nascondersi dietro perché è ben testato. È una sciocchezza quando si tratta di scegliere l'hypervisor. Per il sistema operativo sottostante: sì, ma non per un'applicazione.
Michal Sokolowski il

Se un numero sufficiente di clienti paganti invia una richiesta a SolidWorks per supportare KVM, sarà costretto a farlo. Questo è già successo quando Oracle ha rilasciato OEL e ha cercato di bloccare l'installazione su RHEL, solo una questione di pressione e il potenziale di portare la tua attività altrove.
dyasny,

Lo hanno già fatto. Lo supportano, ad esempio hanno avuto il compito di installare la licenza oggi.
Michal Sokolowski,

1
Questo non ha funzionato per me con un disco di avvio IDE virtuale, presumibilmente a causa della descrizione del disco AHCI contenente la parola "QEMU". Ho cambiato il mio disco di avvio in VirtIO come mostrato nello screenshot, e io sono d'oro. Grazie!
Autunno

Risposte:


13

La maggior parte degli hypervisor attualmente in esecuzione su hardware Intel utilizza CPUID lascia 0x40000000 e seguenti. per trasmettere informazioni sull'hypervisor dall'host al guest.

KVM , Xen , VMware e Hyper-V utilizzano tutti questo metodo.

Ciò si aggiunge al flag di funzionalità dell'hypervisor impostato nel foglio CPUID 0x1, che indica che la macchina è una macchina virtuale.

È quindi banale per un programma che può chiamare l'istruzione CPUID per determinare se è in esecuzione con uno di questi hypervisor.

Le versioni recenti di KVM includono un'opzione della riga di comando per disabilitare il foglia CPUID 0x40000000 -cpu kvm=off.


1
E questo metodo si è già dimostrato efficace contro i driver NVIDIA che bloccano anche le macchine virtuali KVM sul passthrough.
dyasny,

5

Il modo ufficiale di attivare il server Solidworks su KVM è richiedere una "Licenza di esenzione dall'attivazione per SolidWorks". Lo facciamo tramite il rivenditore, ma probabilmente potrebbe essere fatto direttamente tramite il supporto Solidworks.

Solidworks invia un file di licenza che Solidworks License Manager carica attraverso le Opzioni avanzate della scheda Amministrazione server.

Dato che negli ultimi due anni ci sono volute più di 2 settimane per l'invio del file di licenza da parte di Solidworks, sarebbe bello non avere KVM nella lista nera.

Solidworks ha una "Richiesta di miglioramento" aperta con il titolo: "Fornisci supporto SNL Server per VM KVM Qemu Libvirt". ER # 1-9482749288 L'ho trovato accedendo al portale Solidworks, trovando il collegamento Richiesta di miglioramento e digitando KVM.

Si prega di lasciare un commento su questa richiesta di miglioramento! Speriamo che decideranno che KVM è un ambiente di virtualizzazione legittimo.


AWS sta usando KVM!
FreeSoftwareServers

1
@FreeSoftwareServers AWS è passato di recente a KVM per alcuni tipi di macchine. C'è ancora MOLTO Xen là fuori.
Michael Hampton

Vero, solo dicendo che è un legitimate virtualization environment.
FreeSoftwareServers dal

Non dirmelo, dillo a Solidworks! :)
lickdragon,

5

Volevo solo condividere la mia esperienza anche qui, nel caso in cui altri si trovassero in una situazione simile (cercando di installare SolidWorks su una VM Virtualbox)

Il mio tentativo di installazione:

xubuntu 16.04 host OS, VirtualBox, Windows 10 e Solidworks 2015. Stavo vedendo lo stesso errore discusso sopra.

La soluzione:

La soluzione che ho trovato alla fine è stata quella di utilizzare lo hidevm.batscript incluso nel crack di Solidsquad, per ingannare Solidworks nel pensare che non fosse in esecuzione in una VM. puoi usare il file .bat anche se hai una licenza legittima (come spero che tu faccia). .bat è destinato agli utenti che eseguono Solidworks all'interno di una VM VirtualBox, con Windows anche come sistema operativo host, tuttavia se sei come me che prova a eseguire Linux come sistema operativo host, puoi comunque aprire il file .bat, selezionare estrarre i comandi pertinenti, modificarli per Linux ed eseguirli. i comandi rilevanti modificati sono:

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"

Nel caso in cui la VM sia configurata per utilizzare il firmware EFI, è necessario sostituirla pcbioscon efile chiavi. Vedi 9.12. Configurazione delle informazioni DMI BIOS .


Questo è fallito per me. Forse perché il mio sistema è con UEFI.
Kyb,

Ma ho trovato una soluzione nei documenti VBox $ 9.12. > Nel caso in cui la VM sia configurata per l'utilizzo del firmware EFI, è necessario sostituirla pcbioscon efile chiavi. Suggerisco di modificare il messaggio.
Kyb,

4

'/>manca su EOL <qemu:arg value='type=1,manufacturer=LENOVOquindi ecco le modifiche complete alla configurazione di 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>
 (...)

Grazie per la tua risposta, mi ha aiutato a creare la mia, ho appena rimosso il codice non necessario.
FreeSoftwareServers l'

1

Ho pensato di condividere il mio metodo che ha funzionato per nascondere la VM da Windows / Task MGR (Ha anche meno cose inutili ed è più facile da leggere). Non stavo provando ad attivare Solidworks ma IMO questo thread riguarda più il nascondere la tua corsa in una VM e forse dovrebbe essere modificato come tale. Comunque...

Aggiungi quanto segue a domain.xml e assicurati di rimuovere completamente la sezione 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>

Spegni e riaccendi la VM e testa!


1
Ho fatto lavorare SolidWorks su qemu su Ubuntu 19.04 con questa configurazione, gli smbiosargomenti e VirtIO come driver per dischi e Ethernet.
Avamandro

1
@Avamander È fantastico, come ho detto che non stavo nemmeno lavorando con SolidWorks ma sembra che abbia aiutato a risolvere la domanda di OP! Dimentico ciò su cui stavo lavorando, ma questo ha funzionato anche per me per qualcos'altro, penso che fosse legato al gioco, non avrebbe funzionato in una VM. I miei VM sono più potenti dei laptop di gioco della maggior parte delle persone: P
FreeSoftwareServers

@Avamander Sono solo curioso, hai provato senza gli smbiosargomenti?
FreeSoftwareServers

Non ho provato senza un forgiato smbios.
Avamandro
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.