VM con una CPU específica

VM con una CPU específica

¿Es posible crear una máquina virtual con una CPU específica que solo admita un conjunto de instrucciones específico?

Por ejemplo, quiero probar algo en una máquina que tiene una CPU que no admite instrucciones AVX o SSE, ¿es posible crear una máquina virtual con una CPU que no admite AVX o SSE?

Respuesta1

Algo así como. VMware y VirtualBox no admiten emulación, solo virtualización. Entonces eso significa que no puedesagregarcaracterísticas. Sin embargo, eliminar funciones no debería suponer un problema.

Este artículotiene algunos detalles sobre cómo falsificar el CPUID informado al invitado. Tenga en cuenta que esto realmente no desactiva ninguna función.

Instrucciones para productos VMware (cotización):

Utilice el editor (por ejemplo, el bloc de notas) abra el archivo de configuración de la máquina virtual (.vmx)
y agregue las siguientes líneas:

cpuid.1.eax = "00000000000000110100011010101001"
cpuid.1.edx = "10111111111010111111101111111011"

Si CPUID aún no cambia o no es válido, intente agregar:

cpuid.1.ebx = "00000000000000110100011010101001"
cpuid.1.ecx = "10111111111010111111101111111011"

Guarde el archivo de configuración e inicie su máquina virtual.

Instrucciones para VirtualBox (cotización):

Abra el símbolo del sistema y cambie al directorio de trabajo de VirtualBox.
Ejecute el siguiente comando para cambiar CPUID.

vboxmanage modifyvm  --cpuidset 1 000306a9 00100800 3d9ae3bf bfebfbff

Inicie su máquina virtual.

La forma de obtener esos valores de CPUID depende de usted; probablemente necesitará consultar el manual de Arquitectura del conjunto de instrucciones de su proveedor de CPU.

Si desea emular funciones, necesitará utilizar un emulador. QEMU puede realizar tanto virtualización como emulación completa. También es compatible con muchas arquitecturas de CPU distintas de x86/x64.

Respuesta2

La documentación de VMware menciona una "Máscara CPUID", pero no sé qué tan configurable es.

Si está dispuesto a experimentar con otros VMM, QEMU puede habilitar y deshabilitar indicadores de CPUID en la línea de comando. Por ejemplo, qemu-system-i386 -cpu n270,fpu=offconduce a una CPU virtual con las características de un n270 pero con el indicador fpu desactivado. Hay una lista completa de modelos de CPU compatibles e indicadores de CPUID en qemu-system-i386 -cpu help.

información relacionada