Eu tenho um hipervisor Debian 10 KVM, sem libvirt ou outra ferramenta para administrá-lo, usando scripts QEMU. Preciso de uma VM do Windows de 32 bits para um aplicativo herdado, mas em um sistema operacional compatível (não XP), Windows 8.1 ou 10 de 32 bits. Tanto o Windows 8.1 quanto o 10 apresentam uma mensagem «2 GB utilizáveis» nas propriedades do sistema quando 3 GB de RAM são atribuídos (o máximo capaz de lidar com uma máquina de 32 bits sem outras técnicas, suponho). Pelo contrário, o Win XP parece usar 3 GB de RAM, afirmando que o PAE está ativado.
Alguma idéia de como usar 3 GB de RAM no Win 8.1 ou 10, 32 bits?
Aqui está a captura de tela do Win 8.1 VM com 3 GB de RAM (algumas no Win 10):
Aqui está o script QEMU para iniciar a VM (também tentei a CPU do host, sem diferença):
#!/bin/sh
SPICE_PORT=3010
MONITOR_PORT=2330
QEMU_AUDIO_DRV=alsa
kvm \
-M q35 \
-nodefaults \
-cpu qemu64 \
`# -cpu host` \
-m 3G \
-mem-path /dev/hugepages \
-device virtio-balloon-pci \
-rtc base=localtime \
-vga qxl \
-drive file=win8.qcow2,if=virtio,cache-size=16M,cache=writethrough \
-device virtio-net-pci,netdev=diktyo0 \
-netdev user,id=diktyo0 \
-monitor telnet:localhost:${MONITOR_PORT},server,nowait \
-device virtio-serial \
-device virtserialport,chardev=vdagent,name=com.redhat.spice.0 \
-chardev spicevmc,id=vdagent,debug=0,name=vdagent \
-spice port=${SPICE_PORT},addr=127.0.0.1,disable-ticketing \
-device virtserialport,chardev=charchannel1,id=channel1,name=org.spice-space.webdav.0 \
-chardev spiceport,name=org.spice-space.webdav.0,id=charchannel1 \
-soundhw ac97 \
-name "Windows 8.1 x86" \
-daemonize \
Seguindo o conselho de shodanshok, eu posto a saída do monitor de recursos (com 4 GB de RAM total):
Metade da memória é reservada por hardware.
Eu também aumentei a RAM para 4 GB:
Apenas no caso do driver de vídeo QXL reservar muita memória, também alterei a linha de configuração do vídeo para:
-device qxl-vga,vgamem_mb=64,ram_size_mb=64,vram_size_mb=64
Posso tentar mudar o Seabios, pelo menos a versão. Infelizmente na versão Debian Stable QEMU é 3.1.0; é bastante antigo, gostaria de saber se o mesmo comportamento aparece em versões mais recentes.
RESPOSTA ATUALIZADA: conforme mostrado nos comentários e na pergunta atualizada, o problema específico estava relacionado a uma reserva de memória de hardware de 2 GB devido ao tipo de máquina específico. Mudar para um tipo de máquina i440fx resolveu o problema.
RESPOSTA ORIGINAL (deixada aqui porque pode ajudar outras pessoas com problemas semelhantes no Windows de 32 bits):
Tente aumentar a alocação de memória do espaço do usuário usando o seguinte comando (e reinicializando):
Certifique-se de fazer um instantâneo de sua VM antes de executar o comando acima (e certifique-se de ter um backup válido).
Suspeito que seu problema seja com as páginas enormes, que você pediu explicitamente ao KVM para usar.
Você realmente tem páginas enormes suficientes para fornecer à VM todos os 4 GB de RAM? Eu acho que você provavelmente não. Verificar com:
Quantas páginas enormes no total e quantas são gratuitas? Observe que cada página enorme tem 2 MB. Com 1024 deles, tudo o que você tem disponível é de 2 GB.
Portanto, aumente o número de páginas enormes para contabilizar toda a memória que sua VM (ou VMs!) usará.
Agora você deve ter páginas enormes suficientes para fornecer à VM toda a memória.