Windows

KVM 虛擬機管理程序 - Windows 32 位 VM,可用 RAM 高達 2GB

  • October 22, 2021

我有一個 Debian 10 KVM 管理程序,沒有 libvirt 或其他工具來管理它,使用 QEMU 腳本。我需要一個用於舊版應用程序的 32 位 Windows VM,但在受支持的作業系統(不是 XP)上,Windows 8.1 或 10 32 位。當分配 3GB RAM 時,Windows 8.1 和 10 都會在系統屬性上顯示“2GB 可用”消息(我想在沒有其他技術的情況下能夠處理 32 位機器的最大值)。相反,Win XP 似乎使用 3GB RAM,說明啟用了 PAE。

任何想法如何在 Win 8.1 或 10、32 位上使用 3GB RAM?


這是具有 3GB RAM 的 Win 8.1 VM 的螢幕截圖(一些在 Win 10 上): 在此處輸入圖像描述


這是啟動 VM 的 QEMU 腳本(我也嘗試過主機 CPU,沒有區別):

#!/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 \

按照 shodanshok 的建議,我發布了資源監視器的輸出(總 RAM 為 4GB): 在此處輸入圖像描述

一半的記憶體由硬體保留。

我還將 RAM 增加到 4GB: 在此處輸入圖像描述

為了防止 QXL 影片驅動程序保留太多記憶體,我還將配置影片的行更改為:

-device qxl-vga,vgamem_mb=64,ram_size_mb=64,vram_size_mb=64

我可能會嘗試更改 Seabios,至少是版本。不幸的是,Debian Stable QEMU 版本是 3.1.0;它已經很老了,我想知道在較新的版本中是否會出現相同的行為。

**更新的答案:**如評論和更新的問題所示,由於特定機器類型,具體問題與 2 GB 硬體記憶體預留有關。切換到 i440fx 機器類型解決了這個問題。

原始答案(留在這裡,因為它可以幫助其他人在 32 位 Windows 上遇到類似問題):

嘗試使用以下命令(並重新啟動)增加使用者空間記憶體分配:

bcdedit /set IncreaseUserVa 3072

請確保在執行上述命令之前對您的 VM 進行快照(並確保有有效的備份)。

引用自:https://serverfault.com/questions/1043410