Solidworks: le mode de licence d'activation n'est pas pris en charge dans cet environnement virtuel (Qemu-KVM)

12

La question ne concerne pas réellement Solidworks , alors continuez à lire.

L'idée globale de la virtualisation est d'être indépendante du matériel. Sous nos yeux, un tout nouveau niveau de dépendance est en train de se créer - l'apposition sur l'hyperviseur.

Pour autant que je sache, la recherche d'un moyen de trouver une solution à ce problème ne constitue pas une violation de la licence Solidworks et de la législation locale de mon pays.

Mon client et moi voulons activer les produits Solidworks sur une machine virtuelle KVM. Pour des raisons étranges (Hyper-V et VMware sont censés être bien testés :) ils (les développeurs) de Solidworks 2015 PDM ne veulent pas que leurs produits soient activés (la dernière version de 2014 fonctionnait très bien) sur Qemu-KVM.

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

J'utilise:

installer

Comme vous pouvez le voir, il s'agit d'une machine virtuelle basée sur KVM avec Windows 2012 et l'installation de Solidworks PDM.

Question : Que peuvent-ils vérifier d'autre si j'exécute ma machine virtuelle dans Qemu-KVM en plus de vérifier:

  • Adresse (s) MAC de l'adaptateur Ethernet de VM,
  • Étiquettes de pilote de périphérique,
  • Modèle CPU,
  • Tables ACPI.

Je vais exclure les choses mentionnées ci-dessus dans les prochaines heures, mais j'aimerais savoir si vous avez d'autres idées.

Solution :

Il s'avère qu'ils valident deux choses:

  1. Comme Michael Hampton l'a correctement indiqué, il y a une -cpu,kvm=offoption

pour désactiver la feuille CPUID 0x40000000.

  1. Tables ACPI sur l'invité.

Parties pertinentes des paramètres de ligne de commande 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

Syntaxe du fichier de configuration 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>

Pour preuve, il veut maintenant activer: avec hack

Mise à jour 21.04.2017r. DS Justice a mentionné que le mode disque Qemu (j'ai utilisé virtio dans cet exemple) peut également être pertinent.

Michal Sokolowski
la source
Ce site est destiné aux administrateurs système professionnels qui sont intrinsèquement intéressés par le support / les solutions supportables, nous nous efforçons vraiment de travailler «dans les limites».
Chopper3
8
Tant que quelque chose n'est pas une solution standard, cela ne signifie pas que ce n'est pas supportable, comme vous pouvez le voir. Ne voyez-vous pas vraiment le problème ici? Ils forcent quelqu'un à choisir des outils commerciaux et se cachent derrière - car il est bien testé. C'est un non-sens quand il s'agit de choisir un hyperviseur. Pour le sous-système d'exploitation - oui, mais pas pour une application.
Michal Sokolowski
Si suffisamment de clients payants affichent une demande pour SolidWorks pour prendre en charge KVM, ils seront obligés de le faire. Cela s'est déjà produit lorsque Oracle a publié OEL et a tenté de bloquer l'installation sur RHEL, juste une question de pression et le potentiel de prendre votre entreprise ailleurs.
dyasny
Ils l'ont déjà fait. Ils le supportent, par exemple ils ont eu la tâche d'installer la licence aujourd'hui.
Michal Sokolowski
1
Cela ne fonctionnait pas pour moi avec un disque de démarrage IDE virtuel, probablement à cause de la description du disque AHCI contenant le mot "QEMU". Changé mon disque de démarrage pour être VirtIO comme indiqué dans votre capture d'écran, et je suis en or. Merci!
Automne

Réponses:

13

La plupart des hyperviseurs actuels qui fonctionnent sur du matériel Intel utilisent CPUID laisse 0x40000000 et suivants. pour transmettre des informations sur l'hyperviseur d'hôte à invité.

KVM , Xen , VMware et Hyper-V utilisent tous cette méthode.

Ceci s'ajoute à l'indicateur de fonctionnalité d'hyperviseur défini dans la feuille CPUID 0x1, qui indique que la machine est une machine virtuelle.

Il est donc trivial pour un programme qui peut appeler l'instruction CPUID de déterminer s'il s'exécute sous l'un de ces hyperviseurs.

Les versions récentes de KVM comprennent une option de ligne de commande pour désactiver la feuille CPUID 0x40000000, -cpu kvm=off.

Michael Hampton
la source
1
Et cette méthode s'est déjà avérée efficace contre les pilotes NVIDIA bloquant également les machines virtuelles KVM en mode passthrough.
dyasny
5

La manière officielle d'activer le serveur Solidworks sur KVM est de demander une «licence d'exemption d'activation pour SolidWorks». Nous le faisons par le biais du revendeur, mais cela pourrait éventuellement se faire directement via le support Solidworks.

Solidworks envoie un fichier de licence que Solidworks License Manager charge via les options avancées de l'onglet Administration du serveur.

Étant donné qu'au cours des deux dernières années, Solidworks a mis plus de 2 semaines pour envoyer le fichier de licence, il serait bon de ne pas mettre KVM sur liste noire.

Solidworks a une «demande d'amélioration» ouverte avec le titre: «Fournir la prise en charge du serveur SNL pour VM KVM Qemu Libvirt». ER # 1-9482749288 Je l'ai trouvé en me connectant au portail Solidworks, en trouvant le lien Enhancement Request et en tapant KVM.

Veuillez laisser un commentaire sur cette demande d'amélioration! J'espère qu'ils décideront que KVM est un environnement de virtualisation légitime.

lickdragon
la source
AWS utilise KVM!
FreeSoftwareServers
1
@FreeSoftwareServers AWS est récemment passé au KVM pour certains types de machines. Il y a encore BEAUCOUP de Xen.
Michael Hampton
C'est vrai, juste dire que c'est un legitimate virtualization environment.
FreeSoftwareServers
Ne me le dites pas, dites-le à Solidworks! :)
lickdragon
5

Je voulais juste partager mon expérience ici aussi, au cas où d'autres seraient dans une situation similaire (essayer d'installer Solidworks sur une VM Virtualbox)

Ma tentative d'installation:

OS hôte xubuntu 16.04, VirtualBox, Windows 10 et Solidworks 2015. Je voyais la même erreur évoquée ci-dessus.

La solution:

La solution que j'ai finalement trouvée était d'utiliser le hidevm.batscript inclus dans le crack Solidsquad, pour inciter Solidworks à penser qu'il ne fonctionne pas sur une machine virtuelle. vous pouvez utiliser le fichier .bat même si vous avez une licence légitime (comme j'espère que vous le ferez). le .bat est destiné aux utilisateurs exécutant Solidworks dans une machine virtuelle VirtualBox, avec Windows comme OS hôte également, mais si vous êtes comme moi essayant d'exécuter Linux comme OS hôte, vous pouvez toujours ouvrir le fichier .bat, choisissez sortir les commandes pertinentes, les ajuster pour linux et les exécuter. les commandes pertinentes modifiées sont:

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"

Dans le cas où votre machine virtuelle est configurée pour utiliser le firmware EFI, vous devez le remplacer pcbiospar efidans les clés. Voir 9.12. Configuration des informations BIOS DMI .

Thomas Pfeifer
la source
Cela a échoué pour moi. Peut-être parce que mon système est avec UEFI.
kyb
Mais j'ai trouvé une solution dans les documents VBox 9,12 $. > Si votre machine virtuelle est configurée pour utiliser le firmware EFI, vous devez le remplacer pcbiospar efidans les clés. Je suggère de modifier le message.
kyb
4

'/>manquant sur EOL <qemu:arg value='type=1,manufacturer=LENOVOalors voici les modifications complètes de la configuration de 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
la source
Merci pour votre réponse, cela m'a aidé à faire le mien, je viens de supprimer le code inutile.
FreeSoftwareServers
1

Je me suis dit que je partagerais ma méthode qui a fonctionné pour cacher la machine virtuelle de Windows / Task MGR (elle a également moins de choses inutiles et est plus facile à lire). Je n'essayais pas d'activer Solidworks mais IMO ce fil est plus sur le fait de cacher votre fonctionnement dans une VM et devrait peut-être être modifié en tant que tel. En tous cas...

Ajoutez ce qui suit à votre domaine.xml et assurez-vous de supprimer complètement la section 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>

Éteignez et rallumez la VM et testez!

FreeSoftwareServers
la source
1
J'ai fait travailler SolidWorks sur qemu sur Ubuntu 19.04 avec cette configuration, les smbiosarguments et VirtIO comme pilote pour les disques et Ethernet.
Avamander
1
@Avamander C'est génial, comme je l'ai dit, je ne travaillais même pas avec SolidWorks mais on dirait que j'ai aidé à résoudre la question d'OP! J'oublie ce sur quoi je travaillais, mais cela a fonctionné pour moi aussi pour autre chose, je pense que c'était lié au jeu, ne fonctionnerait pas dans une VM. Mes machines virtuelles sont plus puissantes que la plupart des ordinateurs portables de jeu: P
FreeSoftwareServers
@Avamander Je suis juste curieux, avez-vous essayé sans les smbiosarguments?
FreeSoftwareServers
Je n'ai pas essayé sans faux smbios.
Avamander