Solidworks: режим активации лицензии не поддерживается в этой виртуальной среде (Qemu-KVM)

12

На самом деле вопрос не в Solidworks , поэтому, пожалуйста, продолжайте читать.

Вся идея виртуализации заключается в том, чтобы быть аппаратно-независимым. На наших глазах создается новый уровень зависимости - привязка к гипервизору.

Насколько я знаю, поиск пути решения этой проблемы не является нарушением лицензии Solidworks и местного законодательства в моей стране.

Мы с моим клиентом хотим активировать продукты Solidworks на виртуальной машине KVM. По некоторым странным причинам (Hyper-V и VMware должны быть хорошо протестированы :) они (разработчики) Solidworks 2015 PDM не хотят, чтобы их продукты активировались (последняя версия 2014 года работала просто отлично) на Qemu-KVM.

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

Я использую:

настроить

Как вы можете видеть, это виртуальная машина на основе KVM с установкой Windows 2012 и Solidworks PDM.

Вопрос : Что еще они могут проверить, если я запускаю свою виртуальную машину в Qemu-KVM, кроме проверки:

  • MAC-адрес (а) Ethernet-адаптера виртуальной машины,
  • Метки драйверов устройств,
  • Модель процессора,
  • Таблицы ACPI.

Я собираюсь исключить вышеупомянутые вещи в ближайшие несколько часов, но я хотел бы знать, есть ли у Вас какие-либо другие идеи.

Решение :

Оказывается, они подтверждают две вещи:

  1. Как правильно указал Майкл Хэмптон, есть -cpu,kvm=offвариант

отключить CPUID 0x40000000 лист.

  1. ACPI Столы на гостя.

Соответствующие части параметров командной строки 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

Синтаксис файла конфигурации 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>

В качестве доказательства, теперь он хочет активировать: с взломом

Обновление 21.04.2017р. DS Justice упомянул, что режим диска Qemu (я использовал virtio в этом примере) также может иметь значение.

Михал Соколовский
источник
Этот сайт предназначен для профессиональных системных администраторов, которые по своей сути заинтересованы в поддержке / поддерживаемых решениях, и мы действительно очень стараемся работать «в рамках».
Chopper3
8
Пока что-то не является стандартным решением, это не значит, что оно не поддерживается, как вы можете видеть. Разве вы не видите проблему здесь? Они заставляют кого-то выбирать коммерческие инструменты и прятаться за ними - потому что они хорошо проверены. Это глупость, когда дело доходит до выбора гипервизора. Для лежащей в основе ОС - да, но не для приложения.
Михал Соколовский
Если достаточное количество платящих клиентов подаст заявку на SolidWorks для поддержки KVM, они будут вынуждены это сделать. Это уже произошло, когда Oracle выпустила OEL и попыталась заблокировать установку на RHEL, просто из-за давления и возможности перенести ваш бизнес в другое место.
Десяный
Они уже сделали. Они поддерживают это, например, у них была задача установить лицензию сегодня.
Михал Соколовский
1
Это не сработало для меня с виртуальным загрузочным диском IDE, предположительно из-за описания диска AHCI, содержащего слово «QEMU». Мой загрузочный диск был изменен на VirtIO, как показано на скриншоте, и я золотой. Благодарность!
Осень

Ответы:

13

Большинство современных гипервизоров, работающих на аппаратном обеспечении Intel, используют CPUID, оставляя 0x40000000 et seq. передать информацию о гипервизоре от хоста к гостю.

KVM , Xen , VMware и Hyper-V используют этот метод.

Это в дополнение к флагу функции гипервизора, установленному в листе CPUID 0x1, который указывает, что машина является виртуальной машиной.

Поэтому для программы, которая может вызвать инструкцию CPUID, тривиально определить, выполняется ли она под одним из этих гипервизоров.

Последние версии KVM включают параметр командной строки для отключения CPUID 0x40000000 leaf -cpu kvm=off.

Майкл Хэмптон
источник
1
И этот метод уже доказал свою эффективность в отношении драйверов NVIDIA, которые блокируют виртуальные машины KVM при прохождении.
Десяный
5

Официальный способ активации сервера Solidworks на KVM - подать заявку на получение лицензии «Activation Exempt» для SolidWorks. Мы делаем это через посредника, но, возможно, это можно сделать напрямую через службу поддержки Solidworks.

Solidworks отправляет файл лицензии, который загружает Менеджер лицензий Solidworks, через дополнительные параметры вкладки «Администрирование сервера».

Учитывая, что в течение последних двух лет Solidworks отправляла файл лицензии более 2 недель, было бы неплохо, чтобы они не занесли в черный список KVM.

У Solidworks есть «Запрос на улучшение», открытый под заголовком: «Обеспечить поддержку SNL-сервера для VM KVM Qemu Libvirt». ER # 1-9482749288 Я нашел его, войдя на портал Solidworks, найдя ссылку Запрос улучшения и набрав KVM.

Пожалуйста, оставьте комментарий к этому запросу на улучшение! Надеемся, они решат, что KVM является законной средой виртуализации.

lickdragon
источник
AWS использует KVM!
FreeSoftwareServers
1
@FreeSoftwareServers AWS только недавно переключился на KVM для некоторых типов машин. Там еще много Ксен там.
Майкл Хэмптон
Правда, просто сказать, что это legitimate virtualization environment.
FreeSoftwareServers
Не говори мне это, скажи это Solidworks! :)
lickdragon
5

Я просто хотел поделиться своим опытом и здесь, на случай, если другие окажутся в аналогичной ситуации (пытаясь установить Solidworks на виртуальной машине с виртуальной коробкой)

Моя попытка установки:

ОС хоста xubuntu 16.04, VirtualBox, Windows 10 и Solidworks 2015. Я видел ту же ошибку, которая обсуждалась выше.

Решение:

Решение, которое я в конечном итоге нашел, заключалось в том, чтобы использовать hidevm.batсценарий, включенный в трещину Solidsquad, для того, чтобы обманом заставить Solidworks думать, что он не работает на виртуальной машине. Вы можете использовать файл .bat, даже если у вас есть законная лицензия (как я надеюсь, у вас есть). .bat предназначен для пользователей, работающих с Solidworks внутри виртуальной машины VirtualBox с Windows в качестве основной ОС, однако если вы, как и я, пытаетесь запустить Linux в качестве основной ОС, вы все равно можете открыть файл .bat, выберите соответствующие команды, настройте их для Linux и запустите их. модифицированные соответствующие команды:

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"

Если ваша виртуальная машина настроена на использование прошивки EFI, вам необходимо заменить pcbiosее efiв ключах. Смотрите 9.12. Настройка информации BIOS DMI .

Томас Пфейфер
источник
Это не удалось для меня. Может быть потому, что моя система с UEFI.
17
Но я нашел решение в документах VBox $ 9.12. > В случае , если виртуальная машина настроена на использование EFI прошивки вам необходимо заменить pcbiosна efiв ключах. Предлагаю отредактировать сообщение.
17
4

'/>отсутствует на EOL, <qemu:arg value='type=1,manufacturer=LENOVOтак что вот полные модификации конфигурации 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
источник
Спасибо за ваш ответ, он помог мне сделать мой, я просто удалил ненужный код.
FreeSoftwareServers
1

Я подумал, что поделюсь своим методом, который работал, чтобы скрыть виртуальную машину от Windows / Task MGR (он также содержит меньше ненужных вещей и его легче читать). Я не пытался активировать Solidworks, но IMO эта тема больше о том, чтобы скрыть вашу работу на ВМ, и, возможно, ее следует отредактировать как таковую. Тем не мение...

Добавьте следующее в ваш domain.xml и убедитесь, что полностью удалили раздел 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>

Выключите и снова включите ВМ и протестируйте!

FreeSoftwareServers
источник
1
SolidWorks работает над qemu в Ubuntu 19.04 с этой конфигурацией, smbiosаргументами и VirtIO в качестве драйвера для дисков и Ethernet.
Авамандер
1
@Avamander Это потрясающе, поскольку я сказал, что даже не работал с SolidWorks, но похоже, что помог решить вопрос OP! Я забыл, над чем я работал, но это заставило меня работать и на что-то другое, я думаю, это было связано с играми, не запускало бы игру на виртуальной машине. Мои виртуальные машины более мощные, чем игровые ноутбуки большинства людей: P
FreeSoftwareServers
@Avamander Мне просто любопытно, ты пробовал без smbiosаргументов?
FreeSoftwareServers
Я не пробовал без подделки smbios.
Авамандер