VOGONS


First post, by FrankensteinTech

User metadata
Rank Newbie
Rank
Newbie

I initially searched around these forums (and tons of others online) regarding the topic of running DOS/Windows 98 under Proxmox/VirtManager (QEMU/KVM) with "passthrough" input/audio/video+acceleration, but I wasn't able to find all the answers to my questions in one place (or at all in some cases)... I spent months playing around with settings in Proxmox (my preferred hypervisor) until I found what worked well for me, and I have collected them here for everyone's reference.

TL;DR: Proxmox is capable of running DOS *or* Windows 98 as an emulated *or* virtualized machine (with virtualized legacy audio and video cards!), with virtualized PS/2 keyboard/mouse binding and passthrough PCI FX 5500 video (including 3D acceleration of VESA/DirectX/OpenGL, even over a Thunderbolt-connected PCI bridge)!

NOTE: I am not sure if this is the correct place for this topic... but it involves PCI passthrough of legacy hardware, so "General Old Hardware" felt appropriate.

*Hurdles and Solutions*

My goals/hurdles for this project were the below (all of which were successful!):

Hurdle: I wanted to use the 'newest' Intel (or AMD) hardware available to run DOS/Windows 98 near-natively via virtualization and passthrough solutions (ideally no emulation)
Solution: Any *modern* (Nehalem and up) Intel (or AMD) hardware will work fine, but the below requirements need to be met:
*Ideally, you will want to use a non-Intel GPU as the hypervisor's primary video output (Intel GPUs cause 'VGA Arbitration' issues, resulting in no output from the passed-through legacy GPU)
NOTE: This can be worked around by using the i915 VGA Arbiter patch, but that patch is not present in the Proxmox kernel.
*Motherboard/CPU must support Virtualization (VT-x) and IOMMU (VT-d or AMD-v) for PCI passthrough of the legacy GPU

Hurdle: I wanted to use Proxmox (specifically) as the hypervisor (instead of VirtManager) as I prefer being able to Proxmox' Web UI for quickly controlling VMs via cell phone/etc)
Solution: Easy-peasy, Proxmox will boot on basically anything... CSM, EFI, doesn't matter as long as it was built in the last 15 years.

Hurdle: I wanted to have native keyboard+mouse (PS/2) within DOS/Windows 98 via EVDEV passthrough (USB, bluetooth, PS/2, etc)
Solution: Proxmox doesn't expose it, but QEMU/KVM do allow the PS/2 ports of VMs to be mapped to Linux EVDEV input devices (i.e. any input device within the host OS, i.e. USB/bluetooth/PS2/etc) via arguments.

Hurdle: I wanted to have native video+acceleration (VESA, DirectX and OpenGL) from DOS/Windows 98 via PCI passthrough of a real GPU
Solution: Despite it's poor reputation, I quite like the Nvidia Geforce FX 5500 (5200 Ultra) - the PCI version works with modern hosts, and can be used over Thunderbolt with an eGPU adapter and a PCIE->PCI bridge (ASM1083).

Hurdle: I wanted to have native audio (Adlib, SB16 and optionally AC'97) from DOS/Windows 98 outputting via ALSA/PulseAudio on the hypervisor (host)
Solution: Proxmox doesn't expose it, but QEMU/KVM allow virtualization of the below sound cards with output via ALSA/PulseAudio:
*SB16 (Creative Sound Blaster 16)
*ES1370 (ENSONIQ AudioPCI ES1370)
*AC97 (Intel 82801AA AC97 Audio)
*ADLIB (Yamaha YM3812/Adlib [OPL2])
*GUS (Gravis Ultrasound GF1)
*CS4231A (CS4231A)
*HDA (Intel HD Audio)
*PCSPK (PC speaker)
Bonus: You can also use PCI passthrough to use a real sound card if you want to - I have tested YMF-7xx and CMI8738 and they both work fine.

Hurdle: I wanted the above solution to be portable between Proxmox hypervisors (hosts) using Thunderbolt
Solution: Proxmox, combined with Thunderbolt-based VM storage (NVME) *plus* Thunderbolt-based passthrough eGPU (FX 5500 via bridges/etc) and EVDEV (PS/2) + ALSA/PulseAudio (ADLIB/SB16/AC97) results in a 'portable' DOS/Windows 98 VM.

I have been successful in booting DOS/Windows 98 under Proxmox with the above VM configuration on the below hardware:
*HP DL370 G6 (GPU ROM dump required, PCIE->PCI Bridge *and* Titan Ridge TB3->NVME->PCIE->PCI Bridge))
*HP DL380 G8 (GPU ROM dump required, PCIE->PCI Bridge *and* Titan Ridge TB3->NVME->PCIE->PCI Bridge)
*Gigabyte GA-X58A-UD3R (Native PCI *and* Titan Ridge TB3->NVME->PCIE->PCI Bridge)
*Dell T3610 (Native PCI *and* Alpine Ridge TB3->NVME->PCIE->PCI Bridge)
*Dell T5810 (Native PCI *and* Alpine Ridge TB3->NVME->PCIE->PCI Bridge)
*Apple MacBook Pro 2015 (TB3->NVME->PCIE->PCI Bridge)
*Apple MacBook Air 2018 (TB3->NVME->PCIE->PCI Bridge)

*Preparation of Proxmox*

From a hypervisor preparation standpoint, this is the process I follow to stand up a new host (NOTE: I use my Proxmox hosts as 'gaming workstations'):

**Install Proxmox (at the time of writing, 7.4-3 was current)**

*Download Proxmox (https://proxmox.com/en/downloads/category/iso-images-pve) and burn to DVD/place on flash drive
*Install Proxmox on the host using CSM or EFI boto method (doesn't matter which)
*Ensure that the primary GPU in use by the Proxmox OS *is not* intended to be passed through to the VM (i.e. don't use the FX 5500 to run Proxmox)
*Don't install the Proxmox OS on a flash drive/SD card/etc (logs will kill the drive in no time)

**After Proxmox has been installed, I usually perform the below:**

*Add 'deb http://download.proxmox.com/debian/pve bullseye pve-no-subscription' repo to file '/etc/apt/sources.list'
*Run command 'apt update' to... update apt!
*Run command 'apt dist-upgrade' to... upgrade the distro!
*Run command 'apt install xfce4 chromium lightdm' to "convert Proxmox into a workstation" (i.e. xfce4 GUI + Chromium browser)
*Run command 'adduser insertusernamehere' to create a lower-privileged user account for GUI access
*Optionally run command 'apt install sudo' to install SUDO (will also require editing /etc/
*Optionally run command 'apt install bolt' to install support for Thunderbolt adapters (i.e. Gigabyte Alpine/Titan Ridge, etc)
*Optionally run command 'apt install bluez' to install support for Bluetooth adapters (keyboards, mice, audio, etc)
*Add the below lines to file '/etc/modules' (enables VFIO modules required for PCI passthrough to work smoothly):

vfio
vfio_iommu_type1
vfio_pci
vfio_virqfd

*Create file '/etc/modprobe.d/iommu_unsafe_interrupts.conf' with the below lines (configures VFIO to be less strict about interrupts):

options vfio_iommu_type1 allow_unsafe_interrupts=1

*Create file '/etc/modprobe.d/kvm_ignore_msrs.conf' with the below lines (configures KVM to ignore MSRs):

options kvm ignore_msrs=1

*Create file '/etc/modprobe.d/load-vfio-before-xxxx.conf' with the below lines (configures Kernel to load VFIO module *before* the GPU modules):

softdep radeon pre: vfio-pci
softdep amdgpu pre: vfio-pci
softdep nvidia pre: vfio-pci
softdep nouveau pre: vfio-pci

*Create file '/etc/modprobe.d/vfio.conf' with the below lines (configures VFIO module to 'hook' the listed PCI devices at boot time to allow easier passthrough - in this case, 10de:0326 is the PCI ID for the FX 5500):

options vfio-pci ids=10de:0326

NOTE: Do not list your Proxmox OS' primary video card in 'vfio.conf' - it should only contain PCI IDs for intended for PCI passthrough!
*Commit the changes to '/etc/modprobe.d' by running command 'update-initramfs -u -k all'
*Edit file '/etc/default/grub' with the below (enables/optimizes Intel's IOMMU and it's grouping, in addition to disabling PCI-E power management):

GRUB_CMDLINE_LINUX_DEFAULT="quiet intel_iommu=on iommu=pt pcie_acs_override=downstream,multifunction pcie_aspm=off"

*Commit the changes to '/etc/default/grub' by running command 'update-grub'

*Configure Proxmox OS for PulseAudio (preferred audio output method)

*Add the below line to file '/etc/pulse/default.pa' to create an 'open' PulseAudio socket in the /tmp folder:

load-module module-native-protocol-unix auth-anonymous=1 socket=/tmp/pulse-socket
*Configure Proxmox OS for ALSA Audio (alternative audio output method)

*Install ALSA tools and initialize ALSA by running the below commands:

apt install alsa-utils
apt install alsamixergui

*Initialize ALSA and make note of which Audio adapter is assigned to which number:

alsactl init

NOTE: If your Proxmox host has multiple Audio adapters (assuming they have not been intentionally 'hooked' by 'vfio.conf') then you may need to force PCM to go to a specific audio device (based on the above output) by creating file '/etc/asound.conf' with the below contents:

pcm.!default {
type hw
card 0
}

ctl.!default {
type hw
card 0
}

*After performing the above, reboot! Proxmox should automatically load into the XFCE4 Window Manager (GUI).
*Load Chromium, and browse to 'https://localhost:8006' for easy management of Proxmox VMs (don't forget to bookmark it! 😀.
*NOTE: One of the benefits of having XFCE4/Chromium installed on the Proxmox host is the ability to administer Proxmox VMs when network access is down/unavailable.

*Creating a DOS/Windows 98 Virtual Machine*
**Required Tweaks**

*Argument '-machine hpet=off' is required to ensure VM performance remains consistent in 16-bit and 32-bit OSes
*Argument '-device adlib -device sb16' enables Adlib and Sound Blaster 16 devices in VM
*Argument '-audiodev id=audio0,driver=xxxx' tells QEMU/KVM where to route the VM's audio to (ALSA or PulseAudio)
*Argument '-object input-linux,id=kbd1,evdev=/dev/input/eventX' binds the VM's virtualized PS/2 keyboard port to a Linux EVDEV keyboard input device (found in /dev/input and /dev/input/by-path - make note of the symlinks in these directories!)
*Argument '-object input-linux,id=mouse1,evdev=/dev/input/eventX' binds the VM's virtualized PS/2 mouse port to a Linux EVDEV mouse input device (found in /dev/input and /dev/input/by-path - make note of the symlinks in these directories!)
*Parameter 'hostpci0' can use value 'romfile=gpuromfilegoeshere.rom' to define a dumped GPU ROM file located in '/usr/share/kvm/gpuromfilegoeshere.rom' (this is sometimes required for finicky Proxmox hosts)
*Parameter 'hostpci0' will will need value 'x-vga=1' if you are passing a legacy GPU through to the VM (FX 5500) to ensure the VM treats it as 'Primary'
*Parameter 'machine' needs value 'pc-i440fx-2.11' to ensure Proxmox loads the correct Machine Type (2.11 was the last version to include working legacy audio)

**Optional Tweaks**

*Argument 'kvm' can have value '0' (hardware virtualization disabled) or '1' (hardware virtualization enabled)
NOTE: This setting does not actually affect PCI passthrough (works either way), but it *does* cause the HAL in the VM (Chipset/CPU/etc) to become emulated (instead of virtualized)... this is good from a compatibility standpoint, but bad from a performance standpoint. Toggle this setting if DOS/Windows 98 timing is too fast or too slow.
*Argument 'cpu' should have value 'qemu32' (artificially limits the CPU features in the VM to closely replicate a 32-bit only CPU) but optionally can instead have value 'host' to fully expose the Proxmox OS' CPU to the VM OS.

**PulseAudio-based VM Configuration File Examples (/etc/pve/qemu-server/xxx.conf)**
Example of a 'working' DOS VM configuration file in Proxmox w/Cirrus VGA and Adlib/SB16 over PulseAudio
args: -machine hpet=off -device adlib -device sb16 -audiodev id=audio0,driver=pa,server=/tmp/pulse-socket
balloon: 0
boot: order=ide0
cores: 1
cpu: qemu32
ide0: local:xxx/os.raw,backup=0,size=10G
kvm: 1
machine: pc-i440fx-2.11
memory: 512
meta: creation-qemu=7.0.0,ctime=1669278954
name: DOSGames
numa: 0
ostype: other
scsihw: virtio-scsi-pci
smbios1: uuid=xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
sockets: 1
tablet: 0
vga: cirrus
vmgenid: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
Example of a 'working' DOS VM configuration file in Proxmox w/EVDEV keyboard/mouse input, PCI Passthrough (FX 5500) and Adlib/SB16 over PulseAudio
args: -machine hpet=off -device adlib -device sb16 -audiodev id=audio0,driver=pa,server=/tmp/pulse-socket -object input-linux,id=kbd1,evdev=/dev/input/event1 -object input-linux,id=mouse1,evdev=/dev/input/event2
balloon: 0
boot: order=ide0
cores: 1
cpu: qemu32
hostpci0: 0000:1b:04,x-vga=1
ide0: local:xxx/os.raw,backup=0,size=10G
kvm: 1
machine: pc-i440fx-2.11
memory: 512
meta: creation-qemu=7.0.0,ctime=1669278954
name: DOSGames
numa: 0
ostype: other
scsihw: virtio-scsi-pci
smbios1: uuid=xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
sockets: 1
tablet: 0
vga: none
vmgenid: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
Example of a 'working' DOS VM configuration file in Proxmox w/EVDEV keyboard/mouse input, PCI Passthrough (FX 5500 w/GPU ROM dump file) and Adlib/SB16 over PulseAudio
args: -machine hpet=off -device adlib -device sb16 -audiodev id=audio0,driver=pa,server=/tmp/pulse-socket -object input-linux,id=kbd1,evdev=/dev/input/event1 -object input-linux,id=mouse1,evdev=/dev/input/event2
balloon: 0
boot: order=ide0
cores: 1
cpu: qemu32
hostpci0: 0000:1b:04,romfile=gpuromfilegoeshere.rom,x-vga=1
ide0: local:xxx/os.raw,backup=0,size=10G
kvm: 1
machine: pc-i440fx-2.11
memory: 512
meta: creation-qemu=7.0.0,ctime=1669278954
name: DOSGames
numa: 0
ostype: other
scsihw: virtio-scsi-pci
smbios1: uuid=xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
sockets: 1
tablet: 0
vga: none
vmgenid: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
**ALSA-based VM Configuration File Examples (/etc/pve/qemu-server/xxx.conf)**
Example of a 'working' DOS VM configuration file in Proxmox w/Cirrus VGA and Adlib/SB16 over ALSA
args: -machine hpet=off -device adlib -device sb16 -audiodev id=audio0,driver=alsa
balloon: 0
boot: order=ide0
cores: 1
cpu: qemu32
ide0: local:xxx/os.raw,backup=0,size=10G
kvm: 1
machine: pc-i440fx-2.11
memory: 512
meta: creation-qemu=7.0.0,ctime=1669278954
name: DOSGames
numa: 0
ostype: other
scsihw: virtio-scsi-pci
smbios1: uuid=xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
sockets: 1
tablet: 0
vga: cirrus
vmgenid: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
Example of a 'working' DOS VM configuration file in Proxmox w/EVDEV keyboard/mouse input, PCI Passthrough (FX 5500) and Adlib/SB16 over ALSA
args: -machine hpet=off -device adlib -device sb16 -audiodev id=audio0,driver=alsa -object input-linux,id=kbd1,evdev=/dev/input/event1 -object input-linux,id=mouse1,evdev=/dev/input/event2
balloon: 0
boot: order=ide0
cores: 1
cpu: qemu32
hostpci0: 0000:1b:04,x-vga=1
ide0: local:xxx/os.raw,backup=0,size=10G
kvm: 1
machine: pc-i440fx-2.11
memory: 512
meta: creation-qemu=7.0.0,ctime=1669278954
name: DOSGames
numa: 0
ostype: other
scsihw: virtio-scsi-pci
smbios1: uuid=xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
sockets: 1
tablet: 0
vga: none
vmgenid: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
Example of a 'working' DOS VM configuration file in Proxmox w/EVDEV keyboard/mouse input, PCI Passthrough (FX 5500 w/GPU ROM dump file) and Adlib/SB16 over ALSA
args: -machine hpet=off -device adlib -device sb16 -audiodev id=audio0,driver=alsa -object input-linux,id=kbd1,evdev=/dev/input/event1 -object input-linux,id=mouse1,evdev=/dev/input/event2
balloon: 0
boot: order=ide0
cores: 1
cpu: qemu32
hostpci0: 0000:1b:04,romfile=gpuromfilegoeshere.rom,x-vga=1
ide0: local:xxx/os.raw,backup=0,size=10G
kvm: 1
machine: pc-i440fx-2.11
memory: 512
meta: creation-qemu=7.0.0,ctime=1669278954
name: DOSGames
numa: 0
ostype: other
scsihw: virtio-scsi-pci
smbios1: uuid=xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
sockets: 1
tablet: 0
vga: none
vmgenid: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
**DOS Drivers**

My go-to drivers for DOS are:
*JEMMEX
*HIMEM
*CTMOUSE
*MOSLO
*SHSUCD
*UNIVBE (works with virtualized Cirrus VGA!)

**Windows 98 Drivers**

The only drivers needed in Windows 98 would be:
*Audio Driver (Adlib/SB16 drivers are already built-in to Windows 98 and use default ports)
*Audio Driver (Intel AC'97, attached as file "intel_ac97_windows98.zip"- hard to find!)
*Video Driver (Fx 5500, I use 81.98 from here: https://www.vogonsdrivers.com/getfile.php?fil … 952&menustate=0)

**Installation of DOS/Windows 98**

Nothing special here - upload a Windows 98 Setup ISO file to the Proxmox OS host, mount as CD-ROM in VM and install Windows 98 (or DOS) as normal.

*Thunderbolt Stuff! a.k.a. how to slap together a $300+ FX 5500 (ha! wtf...) eGPU!*

Alrighty... so, you wanna get a legacy GPU (FX 5500 PCI *wink wink nudge nudge*) working on a DOS/Windows 98 VM running on a Thunderbolt-enabled Proxmox host eh?

Maybe something crazy like a MacBook Pro running Proxmox, with a Windows 98 VM passthrough via Thunderbolt? 😁

If so, here's the parts list you will need! 😀

Corsair CX750 (PSU) ~$50
EDIY eGPU Bracket ~$40
ADT-LINK R3G (PCI-E -> TB3) ~$150
Startech PEX1PCI1 (ASM1083 PCI -> PCI-E) ~$40
Nvidia Geforce FX 5500 256MB PCI ~$50

Total: $330

Proxmox host doesn't have Thunderbolt?

Optional: Gigabyte GC-TR (or GC-AR) w/SL0 Firmware from eBay/etc (TB3 -> PCI-E) ~$50

Once you have the above, you can use 'boltctl enroll' on the shell in Proxmox to 'trust' the Thunderbolt adapter and then use 'lspci -v' to confirm if the PCI device is visible on the PCI bus - once visible, it can be passed through to a VM as normal in the Proxmox UI.

Attachments

Last edited by FrankensteinTech on 2023-05-26, 23:13. Edited 1 time in total.

Reply 1 of 7, by FrankensteinTech

User metadata
Rank Newbie
Rank
Newbie

Not Windows 98/DOS related, but I have also just recently found out that PowerPC versions of Mac OS9/OSX can be emulated pretty well with QEMU's PPC support, and QEMU also supports PCI passthrough with emulated CPUs (PPC).

It seems others have also been successful in other forums in passing through an ATI Rage 128 to OS X, so it should also be possible to get my PCI FX 5200 working via PCI Passthrough in OS 10.5 (Leopard) and a PCI ATI 9250 working in OS9.

https://forums.macrumors.com/threads/qemu-sys … hrough.2229861/

I will update this thread with my results.

Reply 2 of 7, by Dominus

User metadata
Rank DOSBox Moderator
Rank
DOSBox Moderator

Sounds quite interesting, so yes, keep us posted!

Windows 3.1x guide for DOSBox
60 seconds guide to DOSBox
DOSBox SVN snapshot for macOS (10.4-11.x ppc/intel 32/64bit) notarized for gatekeeper

Reply 3 of 7, by hyoenmadan

User metadata
Rank Member
Rank
Member

From that forum, it says:

We still need to implement some words to Openbios for nVidia FCode ROM's, and I don't think the patch Zotan commited for the Rage128's words are upstream in Openbios, yet.

This means passthrough wasn't working for Nvidia cards at time, only ATI, and looks like only Rage128. Also looks like you need an special OpenBIOS firmware build for this.
With that said, last topic post was done there in May 2020. Actually I somewhat remember conversations about it in Emaculation forums too. I wonder if anything changed in the last 3 years about the subject. But I dunno, giving the status of the Qemu 4op PReP which still can't boot NT PPC.

Reply 5 of 7, by FrankensteinTech

User metadata
Rank Newbie
Rank
Newbie

Adding this link for future reference - although out of date (3/2020) it will allow a full featured install of QEMU on Proxmox (required to use PPC CPU emulation, as Proxmox normally only supports x86 CPU in QEMU):

https://github.com/lillypad/pve-qemu-unlocked

My initial testing of OS9+9250 will be done using VirtManager (since it already uses current versions of QEMU with PPC CPU type included) - once I have it working well, I will worry about getting QEMU updated in Proxmox for PPC support.

Updates to follow! 😀

Reply 6 of 7, by FrankensteinTech

User metadata
Rank Newbie
Rank
Newbie

Update! 😀

In order to build a *current* copy of pve-qemu with all targets, I ultimately had to use portions of both of the below out-of-date repos:

After pulling the above files, I left the Makefile (from lillypad) as-is but I did have to edit the Dockerfile (from kleberbaum) with some additional 2023 dependencies:

New dependencies for 'pve-qemu' master (5/26/2023):

libepoxy-dev
libgbm-dev
libslirp-dev
libvirglrenderer-dev
libzstd-dev
flex
bison

Final Dockerfile:

FROM debian:bullseye
RUN apt-get update
RUN apt-get install -y git wget curl
RUN mkdir -p /opt/
WORKDIR /opt/
RUN git clone git://git.proxmox.com/git/pve-qemu
WORKDIR /opt/pve-qemu/
RUN git checkout master
RUN echo "deb http://download.proxmox.com/debian/pve bullseye pve-no-subscription" > /etc/apt/sources.list.d/pve.list
RUN wget http://download.proxmox.com/debian/proxmox-release-bullseye.gpg -O /etc/apt/trusted.gpg.d/proxmox-release-bullseye.gpg
RUN apt update
RUN apt-get install -y make \
wget \
libcap-ng-dev \
libjson-perl \
libjack-dev \
libproxmox-backup-qemu0-dev \
libsystemd-dev \
liburing-dev \
meson \
sed \
nano \
build-essential \
autotools-dev \
check \
debhelper \
libacl1-dev \
libaio-dev \
libcap-dev \
libcurl4-gnutls-dev \
libfdt-dev \
libglusterfs-dev \
libgnutls28-dev \
libiscsi-dev \
libjemalloc-dev \
libjpeg-dev \
libnuma-dev \
libpci-dev \
libpixman-1-dev \
librbd-dev \
libsdl1.2-dev \
libseccomp-dev \
libspice-protocol-dev \
libspice-server-dev \
libusb-1.0-0-dev \
libusbredirparser-dev \
python3-minimal \
python3-sphinx \
python3-sphinx-rtd-theme \
quilt texi2html \
texinfo \
uuid-dev \
xfslibs-dev \
lintian \
libepoxy-dev \
libgbm-dev \
libslirp-dev \
libvirglrenderer-dev \
libzstd-dev \
flex \
Show last 5 lines
        bison

RUN sed -i '/.*--target-list=.*/d' debian/rules
RUN sed -i 's|--audio-drv-list="alsa"|--audio-drv-list="alsa,pa,jack"|g' debian/rules
RUN make -j4

After grabbing both files (and editing the Dockerfile with the additional dependencies) I installed Docker on my Proxmox host:

curl -fsSL https://get.docker.com -o get-docker.sh
sh get-docker.sh

I then ran 'make' in the folder containing Makefile and Dockerfile (on the Proxmox host) - about 15 minutes later, a 'bin' folder appeared with file "pve-qemu-kvm_8.0.0-1_amd64.tar.gz" which contained both debug and non-debug DEB packages for PVE-QEMU 8.0.0-1 (current).

I then installed the above 'non-debug' DEB package over Proxmox 7.4-3 using the below command:

dpkg -i pve-qemu-kvm_8.0.0-1_amd64.deb

And received the below results:

root@proxision:/qemu_project# pveversion
pve-manager/7.4-3/9002ab8a (running kernel: 5.15.107-1-pve)
root@proxision:/qemu_project#

Before:

root@proxision:/qemu_project# /usr/bin/qemu-system-x86_64 --version
QEMU emulator version 7.2.0 (pve-qemu-kvm_7.2.0-8)
Copyright (c) 2003-2022 Fabrice Bellard and the QEMU Project developers
root@proxision:/qemu_project# /usr/bin/qemu-system-ppc --version
-bash: /usr/bin/qemu-system-ppc: No such file or directory
root@proxision:/qemu_project#

After:

root@proxision:/qemu_project# /usr/bin/qemu-system-x86_64 --version
QEMU emulator version 8.0.0 (pve-qemu-kvm_8.0.0-1)
Copyright (c) 2003-2022 Fabrice Bellard and the QEMU Project developers
root@proxision:/qemu_project# /usr/bin/qemu-system-ppc --version
QEMU emulator version 8.0.0 (pve-qemu-kvm_8.0.0-1)
Copyright (c) 2003-2022 Fabrice Bellard and the QEMU Project developers
root@proxision:/qemu_project#

So it looks like I am good to move forward with PPC testing for OS9/9250 passthrough! 😀

P.S. I am also going to attempt to merge this repo's patches into the above PVE-QEMU 8.0.0-1 (all targets) for 3dfx emulation/acceleration support:

https://github.com/kjliew/qemu-3dfx

Attachments

Reply 7 of 7, by FrankensteinTech

User metadata
Rank Newbie
Rank
Newbie

Initial testing with OS 9.2.2 seems to work fine on Proxmox 7.4-3 (after restoring the '/usr/share/kvm/openbios-ppc' file that the pve-qemu build does not provide by default).

Next step is testing a cross-flashed ATI Radeon 9250 128MB PCI (VROM pulled from The Mac Elite's site, along with resistor mod diagrams for PC/MAC support):

http://themacelite.wikidot.com/9250-trick
http://campahunta.free.fr/Downloads/ROMs/ati_ … pciagp_full.zip

I have also attached pics of my modded 9250 for reference (EEPROM swapped from a 64KB 25P05VP -> 128KB 25P10VP, above firmware flashed with external programmer, and resistors removed and bridged).

NOTE: I have a 256MB 9250 also, but it's in use in my G3 currently - so the 128MB (pictured) will be the testing GPU for now.

Here's my QEMU startup script for reference (sets up the VM, starts it and then automatically launches the VNC session):

#!/bin/bash
qemu-system-ppc \
-L pc-bios \
-M mac99,via=pmu \
-m 512 \
-boot d \
-drive file=MacOS9.2.iso,format=raw,media=cdrom \
-drive file=MacOS9.2.img,format=raw,media=disk & remmina -c vnc://127.0.0.1:5900

Attachments

  • OS9.2.2_BOOT.JPG
    Filename
    OS9.2.2_BOOT.JPG
    File size
    180 KiB
    Views
    787 views
    File license
    Fair use/fair dealing exception
  • OpenBIOS-PPC_POST.JPG
    Filename
    OpenBIOS-PPC_POST.JPG
    File size
    255.75 KiB
    Views
    787 views
    File license
    Fair use/fair dealing exception
  • 9250_EEPROM - Copy.jpg
    Filename
    9250_EEPROM - Copy.jpg
    File size
    218.82 KiB
    Views
    787 views
    File license
    Fair use/fair dealing exception
  • 9250_JUMPERS.jpg
    Filename
    9250_JUMPERS.jpg
    File size
    207.47 KiB
    Views
    787 views
    File license
    Fair use/fair dealing exception