Run Windows 7 retro gaming on modern PC using Proxmox or Qemu virtual pc

all for operating system
Post Reply
User avatar
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

Post by david »

Image

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
If you want to run on Qemu here is example tested by me working on Void linux on Qemu 10

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
  
Make sure you enable the network bridge before you run the vm:

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
If you wana learn how to install qemu with GPU passed to the virtual mashine on void linux visit the link:
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!
Image

Asus PRIME X570-PRO support 2 x PCIe 4.0 x16 (x16 or dual x8) that can be used in proxmox!
Image


youtu.be/K-9utSPmJnw


User avatar
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

Post by david »

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.

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 
 
VirtIO on system disk too will looks like this:

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.


Post Reply