Solidworks: Der Aktivierungslizenzmodus wird in dieser virtuellen Umgebung (Qemu-KVM) nicht unterstützt.

12

Die Frage bezieht sich eigentlich nicht auf Solidworks , lesen Sie also bitte weiter.

Die gesamte Idee der Virtualisierung besteht darin, hardwareunabhängig zu sein. Vor unseren Augen wird eine ganz neue Abhängigkeitsebene geschaffen - die Anbringung am Hypervisor.

Soweit ich weiß, ist die Suche nach einer Problemumgehung für dieses Problem kein Verstoß gegen die Solidworks-Lizenz und die örtlichen Gesetze in meinem Land.

Mein Client und ich möchten Solidworks-Produkte auf einer virtuellen KVM-Maschine aktivieren. Aus seltsamen Gründen (Hyper-V und VMware sollten gut getestet sein :) möchten sie (Entwickler) von Solidworks 2015 PDM nicht, dass ihre Produkte auf Qemu-KVM aktiviert werden (die letzte Version von 2014 hat einwandfrei funktioniert).

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

Ich benutze:

installieren

Wie Sie sehen, handelt es sich um eine KVM-basierte VM mit Windows 2012- und Solidworks PDM-Installation.

Frage : Was können sie außer der Überprüfung noch überprüfen, ob ich meine VM in Qemu-KVM ausführe:

  • MAC-Adresse (n) des Ethernet-Adapters der VM,
  • Gerätetreiberetiketten,
  • CPU-Modell,
  • ACPI-Tabellen.

Ich werde die oben genannten Dinge in den nächsten Stunden ausschließen, aber ich würde gerne wissen, ob Sie andere Ideen haben.

Lösung :

Es stellt sich heraus, dass sie zwei Dinge bestätigen:

  1. Wie Michael Hampton richtig zeigte, gibt es eine -cpu,kvm=offOption

um die CPUID 0x40000000 Blatt zu deaktivieren.

  1. ACPI-Tabellen auf dem Gast.

Relevante Teile der qemu-Befehlszeilenparameter:

-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

Syntax der Libvirtd-Konfigurationsdatei:

<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>

Als Beweis will es jetzt aktivieren: mit hack

Update 21.04.2017r. DS Justice erwähnte, dass der Qemu-Festplattenmodus (ich habe in diesem Beispiel virtio verwendet) ebenfalls relevant sein könnte.

Michal Sokolowski
quelle
Diese Seite richtet sich an professionelle Systemadministratoren, die von Natur aus an Support / unterstützbaren Lösungen interessiert sind. Wir sind sehr bemüht, "innerhalb der Grenzen" zu arbeiten.
Chopper3
8
Solange etwas keine Standardlösung ist, heißt das nicht, dass es nicht unterstützt werden kann, wie Sie sehen können. Sehen Sie das Problem hier nicht wirklich? Sie zwingen jemanden, kommerzielle Werkzeuge zu wählen und sich dahinter zu verstecken - weil es gut getestet ist. Es ist ein Unsinn, wenn es um die Wahl des Hypervisors geht. Für die Unterlage des Betriebssystems - ja, aber nicht für eine Anwendung.
Michal Sokolowski
Wenn genügend zahlende Kunden eine Nachfrage nach SolidWorks zur Unterstützung von KVM stellen, werden sie dazu gezwungen. Dies geschah bereits, als Oracle OEL veröffentlichte und versuchte, die Installation auf RHEL zu blockieren. Dies war nur eine Frage des Drucks und des Potenzials, Ihr Unternehmen an einen anderen Ort zu verlegen.
Dyasny
Sie haben es bereits getan. Sie unterstützen es, zum Beispiel hatten sie heute die Aufgabe, die Lizenz zu installieren.
Michal Sokolowski
1
Dies funktionierte bei einer virtuellen IDE-Startdiskette nicht, vermutlich aufgrund der AHCI-Diskettenbeschreibung mit dem Wort "QEMU". Meine Startdiskette wurde wie in Ihrem Screenshot gezeigt in VirtIO geändert, und ich bin golden. Vielen Dank!
Herbst

Antworten:

13

Die meisten aktuellen Hypervisoren, die auf Intel-Hardware ausgeführt werden, verwenden die CPUID und belassen 0x40000000 ff. Informationen über den Hypervisor vom Host an den Gast weitergeben.

KVM , Xen , VMware und Hyper-V verwenden diese Methode.

Dies gilt zusätzlich zu dem im CPUID-Blatt 0x1 gesetzten Hypervisor-Feature-Flag, das angibt, dass es sich bei der Maschine um eine virtuelle Maschine handelt.

Es ist daher trivial für ein Programm, das den CPUID-Befehl aufrufen kann, um festzustellen, ob es unter einem dieser Hypervisoren ausgeführt wird.

Neuere Versionen von KVM enthalten eine Befehlszeilenoption zum Deaktivieren der CPUID 0x40000000 -cpu kvm=off.

Michael Hampton
quelle
1
Diese Methode hat sich bereits gegen NVIDIA-Treiber bewährt, die KVM-VMs auch beim Passthrough blockieren.
Dyasny
5

Die offizielle Möglichkeit, den Solidworks-Server in KVM zu aktivieren, besteht darin, eine "Aktivierung ohne Aktivierung für SolidWorks" zu beantragen. Wir tun dies über den Reseller, können dies jedoch möglicherweise direkt über den Solidworks-Support tun.

Solidworks sendet eine Lizenzdatei, die Solidworks License Manager über die erweiterten Optionen der Registerkarte Serververwaltung lädt.

Angesichts der Tatsache, dass Solidworks in den letzten zwei Jahren mehr als zwei Wochen gebraucht hat, um die Lizenzdatei zu senden, wäre es schön, wenn sie KVM nicht auf die schwarze Liste setzen würden.

In Solidworks ist eine "Erweiterungsanforderung" mit dem Titel "Bereitstellung von SNL-Server-Unterstützung für VM KVM Qemu Libvirt" geöffnet. ER # 1-9482749288 Ich habe es gefunden, indem ich mich beim Solidworks-Portal angemeldet, den Link für Erweiterungsanfragen gefunden und KVM eingegeben habe.

Bitte hinterlassen Sie einen Kommentar zu dieser Verbesserungsanfrage! Hoffentlich entscheiden sie, dass KVM eine legitime Virtualisierungsumgebung ist.

Leckdrache
quelle
AWS verwendet KVM!
FreeSoftwareServers
1
@FreeSoftwareServers AWS hat erst kürzlich für einige Maschinentypen auf KVM umgestellt. Es gibt immer noch eine Menge Xen da draußen.
Michael Hampton
Stimmt, nur zu sagen, es ist ein legitimate virtualization environment.
FreeSoftwareServers
Erzähl es mir nicht, sag es Solidworks! :)
Lickdragon
5

Ich wollte nur auch hier meine Erfahrungen teilen, falls sich andere in einer ähnlichen Situation befinden (versuchen, Solidworks auf einer Virtualbox-VM zu installieren)

Mein versuchter Aufbau:

xubuntu 16.04 Host-Betriebssystem, VirtualBox, Windows 10 und Solidworks 2015. Ich habe den gleichen Fehler wie oben beschrieben gesehen.

Die Lösung:

Die Lösung, die ich schließlich fand, bestand darin, das hidevm.batim Solidsquad-Crack enthaltene Skript zu verwenden , um Solidworks dazu zu bringen, zu glauben, dass es nicht in einer VM ausgeführt wird. Sie können die .bat-Datei auch dann verwenden, wenn Sie eine legitime Lizenz haben (wie ich hoffe, dass Sie dies tun). Die .bat-Datei ist für Benutzer gedacht, die Solidworks in einer VirtualBox-VM mit Windows als Host-Betriebssystem ausführen. Wenn Sie jedoch wie ich versuchen, Linux als Host-Betriebssystem auszuführen, können Sie die .bat-Datei weiterhin öffnen Geben Sie die entsprechenden Befehle aus, passen Sie sie für Linux an und führen Sie sie aus. Die modifizierten relevanten Befehle sind:

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"

Falls Ihr VM konfiguriert verwenden EFI Firmware Sie ersetzen müssen pcbiosdurch efiin die Tasten. Siehe 9.12. Konfigurieren der BIOS-DMI-Informationen .

Thomas Pfeifer
quelle
Das ist für mich gescheitert. Kann sein, weil mein System mit UEFI ist.
Kyb
Aber ich habe eine Lösung in VBox-Dokumenten gefunden . > Falls Ihr VM konfiguriert verwenden EFI Firmware Sie ersetzen müssen pcbiosdurch efiin die Tasten. Ich schlage vor, die Nachricht zu bearbeiten.
Kyb
4

'/>fehlt in EOL, <qemu:arg value='type=1,manufacturer=LENOVOdaher hier die vollständigen Änderungen der libvirt-Konfiguration:

<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
quelle
Vielen Dank für Ihre Antwort. Es hat mir geholfen, meine zu erstellen. Ich habe gerade unnötigen Code entfernt.
FreeSoftwareServers
1

Ich dachte, ich würde meine Methode teilen, die funktioniert, um VM vor Windows / Task MGR zu verbergen (es hat auch weniger unnötiges Zeug und ist einfacher zu lesen). Ich habe nicht versucht, Solidworks zu aktivieren, aber IMO, in diesem Thread geht es mehr darum, Ihre Ausführung in einer VM zu verbergen, und sollte möglicherweise als solche bearbeitet werden. Wie auch immer...

Fügen Sie Ihrer domain.xml Folgendes hinzu und entfernen Sie den CPU-Bereich vollständig

<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>

Schalten Sie die VM aus und wieder ein und testen Sie!

FreeSoftwareServer
quelle
1
Ich habe SolidWorks unter Ubuntu 19.04 mit dieser Konfiguration, den smbiosArgumenten und VirtIO als Treiber für Festplatten und Ethernet an qemu arbeiten lassen.
Avamander
1
@ Avamander Das ist großartig, da ich nicht einmal mit SolidWorks gearbeitet habe, aber es sieht so aus, als hätte ich geholfen, die Frage von OP zu lösen! Ich habe vergessen, woran ich gearbeitet habe, aber das hat es auch für mich für etwas anderes funktionieren lassen. Ich denke, es war spielbezogen und würde kein Spiel in einer VM ausführen. Meine
VMs
@ Avamander Ich bin nur neugierig, hast du es ohne die smbiosArgumente versucht ?
FreeSoftwareServers
Ich habe es nicht ohne Fälschung versucht smbios.
Avamander