Você teria que pular o uso do KVM e fazer o QEMU emular todas as instruções para que as instruções deixassem de estar disponíveis.
Eu gostaria de poder emular um processador Athlon XP ou Pentium IV em um processador Intel Core de terceira geração. Existe uma maneira de executar uma máquina virtual que especificamente desabilite a) recursos de CPU mais recentes, como sse2
sse3
? eb) cpu cache ?
Estou usando o Qemu / KVM. A maneira como eu lanço apenas oculta as intruções da CPU para o sistema operacional convidado, cujos aplicativos ainda têm acesso aos mais novos da máquina host:
host
$ qemu-system-i386 -cpu pentium3,enforce (...) -enable-kvm
convidado
$ inxi -f
CPU: Single core Pentium III (Katmai) (-UP-) cache: 16384 KB speed: 3292 MHz (max)
CPU Flags: apic cmov cx8 de fpu fxsr hypervisor mca mce mmx msr mtrr pae pge pse
pse36 sep sse tsc x2apic
$ firefox # v.54 which requires sse2;
Funciona muito bem, assim como o Palemoon e o mpv, que não funcionam em um cpu sem sse2 como o Athlon XP (produzindo uma 'instrução ilegal'). Significado sse2 está definitivamente disponível para o sistema operacional convidado. Somente aplicativos que verificam a CPUID falham, por exemplo:
$ chromium-browser
# (...)
# Fatal error in ../../v8/src/ia32/assembler-ia32.cc, line 109
# Check failed: cpu.has_sse2().
#
#0 0x0000b40b9f0a base::debug::StackTrace::StackTrace()
A mesma coisa acontece quando executo a VM com -cpu athlon,sse2=off
. Assim, enquanto podemos tomar cuidado razoável de, e. o número de núcleos, a velocidade do processador (usando cpulimit
) ou os recursos de E / S (com o qemu parâmetro de aceleração ), não podemos limitar as instruções de CPU definidas disponíveis para o convidado, podemos?
Você teria que pular o uso do KVM e fazer o QEMU emular todas as instruções para que as instruções deixassem de estar disponíveis.
Tags virtualization cpu