На самом деле вопрос не в Solidworks, так что продолжайте читать.
Вся идея виртуализации - быть независимой от оборудования. На наших глазах создается совершенно новый уровень зависимости - привязка к гипервизору.
Насколько мне известно, поиск способа решения этой проблемы не является нарушением лицензии Solidworks и местного законодательства в моей стране.
Я и мой клиент хотим активировать продукты Solidworks на виртуальной машине KVM. По каким-то странным причинам (предполагается, что Hyper-V и VMware должны быть хорошо протестированы :) они (разработчики) Solidworks 2015 PDM не хотят, чтобы их продукты активировались (последняя версия 2014 года работала нормально) на Qemu-KVM.
http://www.solidworks.com/sw/support/11168_ENU_HTML.htm
Я использую:
Как видите, это виртуальная машина на основе KVM с установкой Windows 2012 и Solidworks PDM.
Вопрос: Что еще они могут проверить, запускаю ли я свою виртуальную машину в Qemu-KVM, кроме проверки:
Я собираюсь исключить вышеупомянутые вещи в ближайшие несколько часов, но мне хотелось бы знать, есть ли у Вас другие идеи.
Решение:
Оказывается, они подтверждают две вещи:
-cpu,kvm=off
вариант отключить лист CPUID 0x40000000.
Соответствующие части параметров командной строки 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 в этом примере) также может иметь значение.
Большинство современных гипервизоров, работающих на оборудовании Intel, используют CPUID, оставляющие 0x40000000 et seq. передавать информацию о гипервизоре от хоста к гостю.
KVM, Xen, VMware и Hyper-V все пользуются этим методом.
Это к тому же на флаг функции гипервизора, установленный в листе CPUID 0x1, который указывает, что машина является виртуальной машиной.
Поэтому для программы, которая может вызвать инструкцию CPUID, тривиально определить, работает ли она под одним из этих гипервизоров.
Последние версии KVM включают параметр командной строки отключить лист CPUID 0x40000000, -cpu kvm=off
.
Я просто хотел поделиться своим опытом здесь, на случай, если другие находятся в аналогичной ситуации (пытаюсь установить 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. Настройка информации DMI BIOS.
Официальный способ активации сервера Solidworks на KVM - подать заявку на «Лицензирование без активации для SolidWorks». Мы делаем это через посредника, но, возможно, это можно сделать напрямую через службу поддержки Solidworks.
Solidworks отправляет файл лицензии, который Solidworks License Manager загружает с помощью дополнительных параметров на вкладке «Администрирование сервера».
Учитывая, что за последние два года Solidworks потребовалось более 2 недель для отправки файла лицензии, было бы неплохо, если бы они не занесли KVM в черный список.
В Solidworks есть «Запрос на расширение», открытый с заголовком: «Обеспечить поддержку сервера SNL для VM KVM Qemu Libvirt». ER # 1-9482749288 Я нашел его, войдя на портал Solidworks, найдя ссылку Enhancement Request и набрав KVM.
Пожалуйста, оставьте комментарий к этому запросу на улучшение! Надеюсь, они решат, что KVM - это законная среда виртуализации.
'/>
отсутствует на 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>
(...)
Я подумал, что поделюсь своим методом, который работал, чтобы скрыть виртуальную машину от Windows / Task MGR (в нем также меньше ненужных вещей и его легче читать). Я не пытался активировать Solidworks, но ИМО, эта ветка больше касается сокрытия вашей работы в виртуальной машине и, возможно, ее следует отредактировать как таковую. Тем не мение...
Добавьте следующее в свой 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>
Выключите виртуальную машину, снова включите и проверьте!