Run Windows 7 retro gaming on modern PC using Proxmox or Qemu virtual pc
- david
- Site Admin
- Posts: 417
- Joined: Sat May 21, 2016 7:50 pm
Run Windows 7 retro gaming on modern PC using Proxmox or Qemu virtual pc

It seems new computers can`t run windows 7 native but windows 7 is most good for playing retro games from 2005-up to 2015!
To make magic happend and use modern PC with old grafics cards we need to make windows 7 to work on efi vm.
Here is example configiration from proxmox VM running windows 7 in EFI mode! First you need to use pc-i440fx in UEFI mode and EFI patched windows 7 image to be able to make video drivers to work!
Download link for Proxmox open source virtualization platform can be found here:
https://www.proxmox.com/en/
Hint!
Join our telegram group if you want download link for patched windows 7 EFI iso ready to be installed in Proxmox!
Join our telegram group if you wana chat or have specific questions:
https://t.me/+h2K5CX5jEZA0MWJk
Proxmox host hardware is:
CPU - Ryzen 5950 16 core 32T
Ram - 128GB Ram Kingston 4x32GB 3400Mhz CL16
MB - Asus PRIME X570-PRO
PSU - 850W Seasonic
I tested with Radeon 560 and Radeon 7950 gpu`s.They both works in this way.
And there is proxmox VM configuration:
Code: Select all
bios: ovmf
boot: order=sata0
cores: 2
cpu: host
hostpci0: 0000:0a:00.0
hostpci1: 0000:0a:00.1
machine: pc-i440fx-8.0
memory: 4096
net0: e1000=82:94:80:A2:CC:AA,bridge=vmbr1,firewall=1
numa: 0
ostype: win7
sata0: hdd1T:109/vm-109-disk-0.qcow2,size=100G
scsihw: virtio-scsi-single
sockets: 1
usb0: host=1-1.3,usb3=1
vga: none
Code: Select all
qemu-system-x86_64 \
-enable-kvm \
-machine pc-i440fx-8.0 \
-cpu host \
-smp sockets=1,cores=4 \
-m 8096 \
-usb \
-device usb-host,vendorid=0x248a,productid=0x00da \
-object memory-backend-ram,size=8096M,id=mem0 \
-numa node,memdev=mem0 \
-drive if=none,id=drive0,file=win7.qcow2,format=qcow2 \
-device ide-hd,drive=drive0,bootindex=0 \
-drive if=pflash,format=raw,readonly=on,file=/usr/share/OVMF/x64/OVMF_CODE.4m.fd \
-netdev bridge,id=net0,br=vmbr1 \
-device e1000,netdev=net0,mac=82:94:80:A2:BB:AA \
-vga none \
-device vfio-pci,host=0a:00.0,multifunction=on,romfile=/home/void/Polaris21.rom \
-device vfio-pci,host=0a:00.1
Code: Select all
sudo mkdir -p /etc/qemu
echo "allow vmbr1" | sudo tee /etc/qemu/bridge.conf
sudo chmod 644 /etc/qemu/bridge.conf
sudo ip link add name vmbr1 type bridge
sudo ip link set dev vmbr1 up
sudo ip link set dev eth0 master vmbr1
viewtopic.php?p=373&sid=ecc5f887407d297 ... 03043#p373
GPU i used in the video Radeon 7950 i think is perfect for retro games from 2005 up to 2015!
Asus PRIME X570-PRO support 2 x PCIe 4.0 x16 (x16 or dual x8) that can be used in proxmox!
youtu.be/K-9utSPmJnw
- david
- Site Admin
- Posts: 417
- Joined: Sat May 21, 2016 7:50 pm
Re: Run Windows 7 retro gaming on modern PC using Proxmox or Qemu virtual pc
Some updates to qemu 10 configuration:
We can update cpu and smbios configs for better emulation on specific device.
"-vga qxl " is only used when we need to intall from cdrom!
This is uefi special configuraion for windows 7 and patched windows 7 iso.
Currently i`m testing this on Ryzen 9900x3d and i did build new Linux PC running Void linux!
youtu.be/S2I86b0S1i8
youtu.be/XouswKTT-Ao
Another variant of the config with Q35 chipset and seabios boot!
youtu.be/bXoSH-y4WNo
This type uses virtIO for fast boot and load times and some cpu optimization for less overhead tested on Radeon 7950!
Here is similar config Seabios and 440BX!
VirtIO on system disk too will looks like this:
youtu.be/ZVAsaTqFZHg
Hyper-V flags explained briefly:
hv_relaxed – Prevents timing BSODs.
hv_vapic – Speeds up interrupt handling.
hv_spinlocks=0x1fff – Avoids CPU lockups on multi-core guests.
hv_vpindex, hv_runtime, hv_synic – Improve scheduler and timer efficiency.
hv_stimer, hv_time – Enable paravirtualized clocks.
hv_frequencies, hv_tlbflush, hv_ipi – Optimize CPU frequency reporting and inter-core communication.
hv_avic – AMD Accelerated Virtual Interrupt Controller (hardware-accelerated interrupts)
Storage setup:
Option Description
-device ich9-ahci,id=ahci Emulates an AHCI controller for SATA CD-ROM support.
-drive if=none,id=drive0,file=...,format=qcow2 Defines the main Windows 7 system image.
-device virtio-blk-pci,drive=drive0,id=virtio0,bootindex=0 Attaches the system disk via VirtIO, a paravirtualized storage interface with much higher performance than IDE/SATA.
-drive if=none,id=cdrom0,...virtio-win-0.1.173.iso Mounts the VirtIO driver ISO so Windows can load drivers during setup.
-drive if=none,id=drive1,...winxp2.qcow2 + -device virtio-blk-pci,drive=drive1 Adds a second VirtIO disk (can be used as data storage).
Gigabyte HD 7970 3 GB BIOS attached!
We can update cpu and smbios configs for better emulation on specific device.
"-vga qxl " is only used when we need to intall from cdrom!
This is uefi special configuraion for windows 7 and patched windows 7 iso.
Code: Select all
qemu-system-x86_64 \
-enable-kvm \
-machine pc-i440fx-8.0 \
-cpu Cascadelake-Server,vendor=GenuineIntel,-rtm,-hle,-pcid \
-smp sockets=1,cores=4 \
-m 8096 \
-usb \
-device usb-host,vendorid=0x248a,productid=0x00da \
-object memory-backend-ram,size=8096M,id=mem0 \
-numa node,memdev=mem0 \
-drive if=none,id=drive0,file=/run/media/void/6D14-1050/virtHDD/win7.qcow2,format=qcow2 \
-device ide-hd,drive=drive0,bootindex=0 \
-drive if=pflash,format=raw,readonly=on,file=OVMF_CODE.fd \
-drive file=/run/media/void/6D14-1050/virtHDD/CRUX_X64_V4_5.iso,media=cdrom,if=ide,format=raw,readonly=on \
-netdev user,id=net0,hostfwd=tcp::2222-:22 \
-device e1000,netdev=net0,mac=82:94:80:A2:BB:AA \
-vga qxl \
-device vfio-pci,host=01:00.0,multifunction=on,romfile=/home/void/tahiti.rom \
-device vfio-pci,host=01:00.1 \
-smbios type=0,vendor="Dell BIOS",version="A25",date="12/01/2020" \
-smbios type=1,manufacturer="Dell Inc.",product="OptiPlex 7070",serial="ABC1234XYZ",uuid=12345678-1234-1234-1234-123456789abc \
-smbios type=2,manufacturer="Dell Inc.",product="0KTD7T",version="A00"Currently i`m testing this on Ryzen 9900x3d and i did build new Linux PC running Void linux!
youtu.be/S2I86b0S1i8
youtu.be/XouswKTT-Ao
Another variant of the config with Q35 chipset and seabios boot!
Code: Select all
qemu-system-x86_64 \
-machine type=pc-q35-10.1,accel=kvm \
-cpu host,hv_relaxed,hv_vapic,hv_spinlocks=0x1fff,hv_vpindex,hv_runtime,hv_synic,hv_stimer,hv_time,hv_frequencies,hv_tlbflush,hv_ipi,hv_avic \
-smp 6,sockets=1,cores=6,threads=1 \
-m 16384 \
-vga none \
-device ich9-ahci,id=ahci \
-boot order=c \
-drive if=none,id=drive0,file=/run/media/void/6D14-1050/virtHDD/win7.qcow2,format=qcow2 \
-device virtio-blk-pci,drive=drive0,id=virtio0,bootindex=0 \
-drive if=none,id=cdrom0,media=cdrom,file=/home/void/virtio-win-0.1.173.iso \
-device ide-cd,drive=cdrom0,bus=ahci.1 \
-drive if=none,id=drive1,file=/run/media/void/6D14-1050/virtHDD/winxp2.qcow2,format=qcow2 \
-device virtio-blk-pci,drive=drive1,id=virtio1 \
-device e1000e,netdev=net0,mac=52:54:00:0c:66:e8 \
-netdev user,id=net0 \
-device virtio-balloon-pci,id=balloon0 \
-device nec-usb-xhci,id=xhci \
-device usb-host,vendorid=0x248a,productid=0x00da,bus=xhci.0,port=1 \
-device usb-host,vendorid=0x045e,productid=0x028e,bus=xhci.0,port=2 \
-device pcie-root-port,id=pcie1,slot=0,chassis=1 \
-device vfio-pci,host=01:00.0,bus=pcie1,addr=0x0,multifunction=on,romfile=/home/void/GHD7970.rom \
-device vfio-pci,host=01:00.1,bus=pcie1,addr=0x0.1
youtu.be/bXoSH-y4WNo
This type uses virtIO for fast boot and load times and some cpu optimization for less overhead tested on Radeon 7950!
Here is similar config Seabios and 440BX!
Code: Select all
qemu-system-x86_64 \
-enable-kvm \
-m 16G \
-smp sockets=1,cores=8 \
-cpu host,hv_relaxed,hv_vapic,hv_spinlocks=0x1fff,hv_vpindex,hv_runtime,hv_synic,hv_stimer,hv_time,hv_frequencies,hv_tlbflush,hv_ipi,hv_avic \
-drive file=/run/media/void/6D14-1050/virtHDD/win7.qcow2,format=qcow2,if=ide \
-drive file=/run/media/void/6D14-1050/virtHDD/winxp2.qcow2,if=none,id=drive1,format=qcow2 \
-device virtio-blk-pci,drive=drive1,id=virtio1 \
-drive file=/home/void/virtio-win-0.1.285.iso,media=cdrom,if=ide \
-device vfio-pci,host=01:00.0,multifunction=on,romfile=/home/void/GHD7970.rom \
-device vfio-pci,host=01:00.1 \
-device nec-usb-xhci,id=xhci \
-device usb-host,vendorid=0x248a,productid=0x00da,bus=xhci.0,port=1 \
-device usb-host,vendorid=0x045e,productid=0x028e,bus=xhci.0,port=2
Code: Select all
-drive file=/run/media/void/6D14-1050/virtHDD/win7.qcow2,if=none,id=drive0,format=qcow2 \
-device virtio-blk-pci,drive=drive0,id=virtio0,bootindex=0 \
youtu.be/ZVAsaTqFZHg
Hyper-V flags explained briefly:
hv_relaxed – Prevents timing BSODs.
hv_vapic – Speeds up interrupt handling.
hv_spinlocks=0x1fff – Avoids CPU lockups on multi-core guests.
hv_vpindex, hv_runtime, hv_synic – Improve scheduler and timer efficiency.
hv_stimer, hv_time – Enable paravirtualized clocks.
hv_frequencies, hv_tlbflush, hv_ipi – Optimize CPU frequency reporting and inter-core communication.
hv_avic – AMD Accelerated Virtual Interrupt Controller (hardware-accelerated interrupts)
Storage setup:
Option Description
-device ich9-ahci,id=ahci Emulates an AHCI controller for SATA CD-ROM support.
-drive if=none,id=drive0,file=...,format=qcow2 Defines the main Windows 7 system image.
-device virtio-blk-pci,drive=drive0,id=virtio0,bootindex=0 Attaches the system disk via VirtIO, a paravirtualized storage interface with much higher performance than IDE/SATA.
-drive if=none,id=cdrom0,...virtio-win-0.1.173.iso Mounts the VirtIO driver ISO so Windows can load drivers during setup.
-drive if=none,id=drive1,...winxp2.qcow2 + -device virtio-blk-pci,drive=drive1 Adds a second VirtIO disk (can be used as data storage).
Gigabyte HD 7970 3 GB BIOS attached!
You do not have the required permissions to view the files attached to this post.