Solidworks: el modo de licencia de activación no es compatible con este entorno virtual (Qemu-KVM)

12

La pregunta no es sobre Solidworks en realidad , así que continúe leyendo.

La idea general de la virtualización es ser independiente del hardware. Ante nuestros ojos se está creando un nivel de dependencia completamente nuevo: la fijación al hipervisor.

Hasta donde sé, buscar una manera de encontrar una solución a este problema no es una violación de la licencia de Solidworks y la ley local en mi país.

Mi cliente y yo queremos activar Solidworks Products en la máquina virtual KVM. Por algunas razones extrañas (se supone que Hyper-V y VMware están bien probados :) ellos (desarrolladores) de Solidworks 2015 PDM no quieren que sus productos se activen (la última versión de 2014 funcionó bien) en Qemu-KVM.

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

Estoy usando:

preparar

Como puede ver, es una VM basada en KVM con Windows 2012 y la instalación de Solidworks PDM.

Pregunta : ¿Qué más pueden verificar si estoy ejecutando mi VM en Qemu-KVM además de verificar:

  • Dirección (es) MAC del adaptador Ethernet de VM,
  • Etiquetas de controlador de dispositivo,
  • Modelo de CPU,
  • Tablas ACPI.

Voy a descartar las cosas mencionadas anteriormente en las próximas horas, pero me gustaría saber si tiene alguna otra idea.

Solución :

Resulta que validan dos cosas:

  1. Como Michael Hampton señaló correctamente, hay una -cpu,kvm=offopción

para deshabilitar la hoja CPUID 0x40000000.

  1. Tablas ACPI en el invitado.

Partes relevantes de los parámetros de la línea de comando 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

Sintaxis del archivo de configuración de 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>

Como prueba, ahora quiere activar: con hack

Actualización 21.04.2017r. DS Justice mencionó que el modo de disco Qemu (utilicé virtio en este ejemplo) también puede ser relevante.

Michal Sokolowski
fuente
Este sitio es para administradores de sistemas profesionales que están intrínsecamente interesados ​​en soluciones de soporte / soporte, realmente nos esforzamos mucho para trabajar 'dentro de las líneas'.
Chopper3
8
Siempre que algo no sea una solución estándar, no significa que no sea compatible, como puede ver. ¿Realmente no ves el problema aquí? Forzan a alguien a elegir herramientas comerciales y esconderse detrás, porque está bien probado. Es una tontería cuando se trata de elegir un hipervisor. Para el sistema operativo subyacente: sí, pero no para una aplicación.
Michal Sokolowski
Si suficientes clientes que pagan publican una demanda de SolidWorks para admitir KVM, se verán obligados a hacerlo. Esto ya sucedió cuando Oracle lanzó OEL e intentó bloquear la instalación en RHEL, solo por una cuestión de presión y el potencial de llevar su negocio a otra parte.
dyasny
Ellos ya lo hicieron. Lo admiten, por ejemplo, tuvieron la tarea de instalar la licencia hoy.
Michal Sokolowski
1
Esto no funcionó para mí con un disco de arranque IDE virtual, presumiblemente debido a la descripción del disco AHCI que contiene la palabra "QEMU". Cambié mi disco de arranque para que sea VirtIO como se muestra en la captura de pantalla, y estoy dorado. ¡Gracias!
Otoño

Respuestas:

13

La mayoría de los hipervisores actuales que se ejecutan en hardware Intel usan CPUID deja 0x40000000 et seq. para pasar información sobre el hipervisor de host a invitado.

KVM , Xen , VMware e Hyper-V utilizan este método.

Esto se suma al indicador de función del hipervisor establecido en la hoja CPUID 0x1, que indica que la máquina es una máquina virtual.

Por lo tanto, es trivial para un programa que puede llamar a la instrucción CPUID para determinar si se está ejecutando en uno de estos hipervisores.

Las versiones recientes de KVM incluyen una opción de línea de comandos para desactivar la hoja de CPUID 0x40000000, -cpu kvm=off.

Michael Hampton
fuente
1
Y este método ya demostró ser efectivo contra los controladores NVIDIA que bloquean las máquinas virtuales KVM en el paso también.
dyasny
5

La forma oficial de activar el servidor Solidworks en KVM es solicitar una "Licencia de activación exenta para SolidWorks". Hacemos esto a través del revendedor, pero posiblemente podría hacerse directamente a través del soporte de Solidworks.

Solidworks envía un archivo de licencia que el Administrador de licencias de Solidworks carga a través de las Opciones avanzadas de la pestaña Administración del servidor.

Dado que los últimos dos años han llevado más de 2 semanas para que Solidworks envíe el archivo de licencia, sería bueno no incluirlos en la lista negra de KVM.

Solidworks tiene una "Solicitud de mejora" abierta con el título: "Proporcionar soporte de servidor SNL para VM KVM Qemu Libvirt". ER # 1-9482749288 Lo encontré al iniciar sesión en el portal de Solidworks, encontrar el enlace Solicitud de mejora y escribir KVM.

Por favor, deje un comentario sobre esta solicitud de mejora. Esperemos que decidan que KVM es un entorno de virtualización legítimo.

lickdragon
fuente
¡AWS está usando KVM!
FreeSoftwareServers
1
@FreeSoftwareServers AWS ha cambiado recientemente a KVM para algunos tipos de máquinas. Todavía hay MUCHO Xen por ahí.
Michael Hampton
Es cierto, solo decir que ES a legitimate virtualization environment.
FreeSoftwareServers
¡No me lo digas, díselo a Solidworks! :)
lickdragon
5

Solo quería compartir mi experiencia aquí también, en caso de que otros se encuentren en una situación similar (tratando de instalar solidworks en una VM virtualbox)

Mi intento de configuración:

Sistema operativo host xubuntu 16.04, VirtualBox, Windows 10 y Solidworks 2015. Estaba viendo el mismo error mencionado anteriormente.

La solución:

La solución que finalmente encontré fue utilizar el hidevm.batscript incluido en el crack de Solidsquad, para engañar a Solidworks para que piense que no se está ejecutando en una VM. puede usar el archivo .bat incluso si tiene una licencia legítima (como espero que lo haga). el .bat está destinado a usuarios que ejecutan Solidworks dentro de una VM VirtualBox, con Windows también como sistema operativo host, sin embargo, si usted está como yo tratando de ejecutar Linux como sistema operativo host, aún puede abrir el archivo .bat, seleccione elimine los comandos relevantes, ajústelos para Linux y ejecútelos. Los comandos relevantes modificados son:

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"

En caso de que su máquina virtual está configurado para utilizar Firmware EFI es necesario sustituir pcbiospor efien las teclas. Ver 9.12. Configuración de la información del BIOS DMI .

Thomas Pfeifer
fuente
Esto falló para mí. Puede ser porque mi sistema está con UEFI.
kyb
Pero encontré la solución en VBox docs $ 9.12. > En caso de que su máquina virtual está configurado para utilizar Firmware EFI es necesario sustituir pcbiospor efien las teclas. Sugiero editar el mensaje.
kyb
4

'/>falta en EOL, <qemu:arg value='type=1,manufacturer=LENOVOasí que aquí están las modificaciones completas de la configuración 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
fuente
Gracias por su respuesta, me ayudó a hacer la mía, simplemente eliminé el código innecesario.
FreeSoftwareServers
1

Pensé que compartiría mi método que funcionó para ocultar VM de Windows / Task MGR (también tiene menos cosas innecesarias y es más fácil de leer). No estaba tratando de activar Solidworks, pero en mi opinión, este hilo trata más sobre ocultar su ejecución en una VM y tal vez debería editarse como tal. De todas formas...

Agregue lo siguiente a su dominio.xml y asegúrese de eliminar completamente la Sección de 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>

¡Apague la VM y vuelva a encenderla y pruebe!

FreeSoftwareServers
fuente
1
Obtuve SolidWorks trabajando en qemu en Ubuntu 19.04 con esta configuración, los smbiosargumentos y VirtIO como el controlador para ambos discos y ethernet.
Avamander
1
@Avamander ¡Eso es increíble, ya que dije que ni siquiera estaba trabajando con SolidWorks, pero parece que ayudé a resolver la pregunta de OP! Olvidé en lo que estaba trabajando, pero esto hizo que funcionara para mí también para otra cosa, creo que estaba relacionado con los juegos, no ejecutaría el juego en una VM. Mis máquinas virtuales son más potentes que las computadoras portátiles para juegos de la mayoría de las personas: P
FreeSoftwareServers
@Avamander Solo tengo curiosidad, ¿intentaste sin los smbiosargumentos?
FreeSoftwareServers
No lo intenté sin un forjado smbios.
Avamander