Solidworks: tryb licencji aktywacyjnej nie jest obsługiwany w tym środowisku wirtualnym (Qemu-KVM)

12

Pytanie faktycznie nie dotyczy Solidworks , więc proszę czytaj dalej.

Cała idea wirtualizacji polega na niezależności sprzętowej. Na naszych oczach tworzony jest zupełnie nowy poziom zależności - mocowanie do hiperwizora.

O ile wiem, wyszukiwanie w celu znalezienia obejścia tego problemu nie stanowi naruszenia licencji Solidworks i lokalnego prawa w moim kraju.

Mój klient i ja chcemy aktywować Produkty Solidworks na maszynie wirtualnej KVM. Z kilku dziwnych powodów (Hyper-V i VMware powinny być dobrze przetestowane :) oni (programiści) Solidworks 2015 PDM nie chcą, aby ich produkty były aktywowane (ostatnia wersja 2014 działała dobrze) na Qemu-KVM.

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

Ja używam:

Ustawiać

Jak widać, jest to VM oparta na KVM z instalacją Windows 2012 i Solidworks PDM.

Pytanie : Co jeszcze mogą sprawdzić, jeśli korzystam z mojej maszyny wirtualnej w Qemu-KVM oprócz sprawdzania:

  • Adresy MAC karty Ethernet VM,
  • Etykiety sterowników urządzeń,
  • Model procesora,
  • Tabele ACPI.

Wykluczę powyższe rzeczy w ciągu najbliższych kilku godzin, ale chciałbym wiedzieć, czy masz jakieś inne pomysły.

Rozwiązanie :

Okazuje się, że potwierdzają dwie rzeczy:

  1. Jak słusznie zauważył Michael Hampton, istnieje -cpu,kvm=offopcja

aby wyłączyć liść CPUID 0x40000000.

  1. Tabele ACPI na gościu.

Odpowiednie części parametrów wiersza poleceń 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

Składnia pliku konfiguracyjnego 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>

Jako dowód, teraz chce aktywować: z hakiem

Aktualizacja 21.04.2017r. DS Justice wspomniał, że tryb dysku Qemu (w tym przykładzie użyłem virtio) również może mieć znaczenie.

Michał Sokołowski
źródło
Ta strona jest dla profesjonalnych administratorów, którzy są wewnętrznie zainteresowani wsparciem / obsługiwanymi rozwiązaniami, naprawdę bardzo staramy się pracować „w linii”.
Chopper3
8
Dopóki coś nie jest standardowym rozwiązaniem, nie oznacza to, że jest nieobsługiwalne, jak widać. Naprawdę nie widzisz tutaj problemu? Zmuszają kogoś do wybierania narzędzi komercyjnych i chowają się za nimi - ponieważ jest dobrze przetestowany. To nonsens, jeśli chodzi o wybór hiperwizora. W przypadku systemu operacyjnego - tak, ale nie w przypadku aplikacji.
Michał Sokołowski
Jeśli wystarczająca liczba płacących klientów opublikuje żądanie SolidWorks do obsługi KVM, będą zmuszeni to zrobić. Stało się to już wtedy, gdy Oracle wypuściło OEL i próbowało zablokować instalację na RHEL, tylko kwestia presji i możliwości przeniesienia firmy w inne miejsce.
dyasny
Oni już to zrobili. Wspierają go, na przykład mieli dzisiaj zadanie zainstalowania licencji.
Michał Sokołowski,
1
Nie działało to dla mnie z wirtualnym dyskiem rozruchowym IDE, prawdopodobnie z powodu opisu dysku AHCI zawierającego słowo „QEMU”. Zmieniłem mój dysk rozruchowy na VirtIO, jak pokazano na twoim zrzucie ekranu, i jestem złoty. Dzięki!
Jesień,

Odpowiedzi:

13

Większość obecnych hiperwizorów działających na sprzęcie Intel używa CPUID pozostawiając 0x40000000 i nast. przekazywać informacje o hiperwizorze od hosta do gościa.

KVM , Xen , VMware i Hyper-V używają tej metody.

Jest to dodatek do flagi funkcji hiperwizora ustawionej w liście CPUID 0x1, która wskazuje, że maszyna jest maszyną wirtualną.

Jest to więc trywialne dla programu, który może wywoływać instrukcję CPUID w celu ustalenia, czy działa pod jednym z tych hiperwizorów.

Najnowsze wersje KVM obejmują opcję wiersza polecenia , aby wyłączyć CPUID 0x40000000 liść -cpu kvm=off.

Michael Hampton
źródło
1
Ta metoda już okazała się skuteczna również w przypadku sterowników NVIDIA blokujących maszyny wirtualne KVM podczas przekazywania.
dyasny
5

Oficjalnym sposobem aktywacji serwera Solidworks na KVM jest złożenie wniosku o „Licencję zwolnioną z aktywacji dla SolidWorks”. Robimy to za pośrednictwem dystrybutora, ale możliwe, że można to zrobić bezpośrednio poprzez wsparcie Solidworks.

Solidworks wysyła plik licencji, który ładuje Menedżer licencji Solidworks poprzez Zaawansowane opcje karty Administracja serwera.

Biorąc pod uwagę, że w ciągu ostatnich dwóch lat wysłanie pliku licencji przez Solidworks trwało ponad 2 tygodnie, dobrze byłoby, gdyby nie znajdowali się na czarnej liście KVM.

Solidworks ma „Żądanie rozszerzenia” o tytule: „Zapewnij obsługę serwera SNL dla VM KVM Qemu Libvirt”. ER # 1-9482749288 Znalazłem go, logując się do portalu Solidworks, znajdując link Żądanie rozszerzenia i wpisując KVM.

Proszę zostawić komentarz do tej prośby o ulepszenie! Mamy nadzieję, że zdecydują, że KVM jest legalnym środowiskiem wirtualizacji.

Lickdragon
źródło
AWS używa KVM!
FreeSoftwareServers
1
@FreeSoftwareServers AWS dopiero niedawno przeszedł na KVM dla niektórych typów maszyn. Wciąż jest tam dużo Xen.
Michael Hampton
To prawda, po prostu powiedzenie, że to jest legitimate virtualization environment.
FreeSoftwareServers
Nie mów mi tego, powiedz to Solidworks! :)
lickdragon
5

Chciałem również podzielić się tutaj swoimi doświadczeniami, na wypadek gdyby inni byli w podobnej sytuacji (próbuję zainstalować Solidworks na maszynie wirtualnej Virtualbox)

Moja próba instalacji:

xubuntu 16.04 host OS, VirtualBox, Windows 10 i Solidworks 2015. Widziałem ten sam błąd omówiony powyżej.

Rozwiązanie:

Rozwiązaniem, które ostatecznie znalazłem, było użycie hidevm.batskryptu zawartego w pęknięciu Solidsquad, aby oszukać Solidworks, aby pomyślał, że nie działa na maszynie wirtualnej. możesz użyć pliku .bat, nawet jeśli masz ważną licencję (mam nadzieję, że tak). .bat jest przeznaczony dla użytkowników uruchamiających Solidworks na maszynie wirtualnej VirtualBox, z systemem Windows również jako systemem operacyjnym hosta, jednak jeśli jesteś podobny do mnie próbującego uruchomić Linuksa jako system operacyjny hosta, nadal możesz otworzyć plik .bat, wybierz wypisz odpowiednie polecenia, dostosuj je do Linuksa i uruchom je. zmodyfikowane odpowiednie polecenia to:

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"

W przypadku, gdy VM jest skonfigurowany do korzystania z EFI firmware trzeba zastąpić pcbiosprzez efiw klawisze. Zobacz 9.12. Konfigurowanie informacji BIOS DMI .

Thomas Pfeifer
źródło
To mi się nie udało. Może dlatego, że mój system obsługuje UEFI.
Kyb
Ale znalazłem rozwiązanie w dokumentach VBox 9,12 USD. > W przypadku, gdy VM jest skonfigurowany do korzystania z EFI firmware trzeba zastąpić pcbiosprzez efiw klawisze. Proponuję edytować wiadomość.
Kyb
4

'/>brakuje w EOL, <qemu:arg value='type=1,manufacturer=LENOVOwięc oto pełne modyfikacje konfiguracji 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
źródło
Dziękuję za odpowiedź, pomogło mi to zrobić, właśnie usunąłem niepotrzebny kod.
FreeSoftwareServers
1

Pomyślałem, że podzielę się moją metodą, która działała w celu ukrycia VM przed Windows / Task MGR (Ma również mniej niepotrzebnych rzeczy i jest łatwiejsza do odczytania). Nie próbowałem aktywować Solidworks, ale IMO w tym wątku chodzi raczej o ukrywanie twojego działania na maszynie wirtualnej i być może powinno być edytowane jako takie. Tak czy inaczej...

Dodaj następujące informacje do pliku domain.xml i upewnij się, że całkowicie usunąłeś sekcję 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>

Wyłącz maszynę wirtualną i włącz ją ponownie i przetestuj!

FreeSoftwareServers
źródło
1
Mam SolidWorks pracujący nad qemu na Ubuntu 19.04 z tą konfiguracją, smbiosargumentami i VirtIO jako sterownikiem zarówno dysków, jak i Ethernetu.
Avamander,
1
@Avamander To niesamowite, ponieważ powiedziałem, że nawet nie pracuję z SolidWorks, ale wygląda na to, że pomogłem rozwiązać pytanie OP! Zapomniałem nad tym, nad czym pracowałem, ale to sprawiło, że działało to również dla mnie, wydaje mi się, że było to związane z grą, nie uruchamiałoby gry na maszynie wirtualnej. Moje maszyny wirtualne są potężniejsze niż większość laptopów do gier: P
FreeSoftwareServers
@Avamander Jestem ciekawy, czy próbowałeś bez smbiosargumentów?
FreeSoftwareServers
Nie próbowałem bez kutego smbios.
Avamander