How to setup Proxmox 9 with GPU passthrough to an Ubuntu 25 VM (to use Ollama/Steam) on Strix Halo
Disclaimer:
I am new to the forums and thought I’d contribute! I am a techie who doesn’t know a ton about Linux but I’ve been learning and following guides, recently I purchased a Bosgame MiniPC with the AI Max 395+ Strix Halo (was the cheapest I could find) and wanted to have a dedicated Proxmox 9 server running LXC and a single VM that would handle both AI inference using Ollama (running Home Assistant with it as an Agent) and also be able to play Steam games connected to my living room TV. I scoured the internet and was able to get it done and working following the steps below. It’s very possible I did things I didn’t need to do, and I definitely did things the hard way (but how I learn LOL) - but this is 100% working for me now. ![]()
A few of my gothca moments:
-
When enabling primary GPU the console stops working (as expected), but what I didn’t know was even before I enabled the Primary GPU checkbox flag it created a secondary display that actually connected up to my TV - this messed me up as sometimes a dialog box was showing on that but not in console (DOH!)
-
Bluetooth just won’t work for me (even still) I think it’s this adapter and/or drivers being too new - so I bought a pair of TP Link USB Bluetooth adapters (1 for HOAS and 1 for Xbox controllers)
-
Without setting the gtt manually in GRUB, Ubuntu would only ever see 50% of RAM as GPU RAM (amdgpu.gttsize=fixed this)
-
Didn’t know I needed romfiles vbios_8060s.bin/AMDGopDriver.rom so eventually found it but drove me nuts until I got that!
-
The Reset/Reboot bug - still looking for a fix for this but every time Ubuntu needs a reboot, I have to reboot the entire Proxmox host for GPU passthrough to stay working. I think I saw a fix for this on the forums here somewhere, so tbd!
-
I have an Xbox USB dongle that I can’t get to work, so just reverted to USB BT adapter… some fights just aren’t worth the $15 fix.
In BIOS set gpu ram to 0.5MB, disable Secure Boot, set preferred performance mode, enable IOMMU
Install latest Proxmox 9 and ensure that either the pve-no-subscription or pvetest repository is set up correctly.
Open a shell as root, e.g. through SSH or using the integrated shell on the web UI.
apt update
apt upgrade
apt install proxmox-kernel-6.17
reboot
Edit GRUB to Add Kernel Boot Options
Open a terminal and run:
nano /etc/default/grub
Find the line:
GRUB_CMDLINE_LINUX_DEFAULT="quiet splash"
Modify it to include:
GRUB_CMDLINE_LINUX_DEFAULT="quiet splash amd_iommu=on iommu=pt initcall_blacklist=sysfb_init amdgpu.gttsize=131072 ttm.pages_limit=33554432"
Then
update-grub
nano /etc/modules
Add this and then save:
vfio
vfio_iommu_type1
vfio_pci
vfio_virqfd
Then
nano /etc/modprobe.d/blacklist.conf
Add this and save
blacklist nvidia
blacklist nouveau
blacklist radeon
blacklist amdgpu
blacklist snd_hda_intel
Bind GPU to VFIO:** Find your GPU’s PCI ID:
lspci -nn | grep -E "VGA|3D|Display"
Then create /etc/modprobe.d/vfio.conf:
nano /etc/modprobe.d/vfio.conf
Paste this (Replace YOUR_GPU_ID with your ID example 00:02.0):
options vfio-pci ids=YOUR_GPU_ID
Important: You must pass through all three devices:
- GPU (c6:00.0)
- GPU audio (c6:00.1)
- HD Audio (c6:00.6)
Mine looks like this:
options vfio-pci ids=1002:1640,1002:1586,1022:15e3 disable_vga=1
5. Rebuild initramfs and reboot:
update-initramfs -u -k all
Then reboot
reboot
Time to create the Ubuntu 25 VM!
When you create the VM select Windows (even though we are doing Linux - this sets up ovmf and efs)
Boot that, hit escape, get into VM BIOS and disable secure boot (Device Manage > Secure Boot Configuration > Remove the X from the “Attempt Secure Boot” inside the VM bios)
Now we can add the Ubuntu ISO (presuming you know how to upload the ISO to Proxmox storage)
Then we need to make manual edits to our new VM in Proxmox shell.
cd /etc/pve/qemu-server
Here is a copy of mine the main difference from ‘stock’ is the hostpci0/1/2, note they reference a romfile as well as the machine: line adds viommu=virtio
agent: 1
bios: ovmf
boot: order=scsi0
cores: 16
cpu: host
efidisk0: local-lvm:vm-115-disk-0,efitype=4m,pre-enrolled-keys=1,size=4M
hostpci0: 0000:c5:00.0,pcie=1,romfile=vbios_8060s.bin,x-vga=1
hostpci1: 0000:c5:00.1,pcie=1,romfile=AMDGopDriver.rom
hostpci2: 0000:c5:00.6,pcie=1
ide0: none,media=cdrom
localtime: 0
machine: pc-q35-10.0+pve1,viommu=virtio
memory: 110592
meta: creation-qemu=10.0.2,ctime=1760454042
name: ollamaubuntu
net0: virtio=BC:24:11:E9:78:10,bridge=vmbr0,firewall=1
numa: 0
onboot: 1
ostype: win11
parent: lastknowngood
scsi0: local-lvm:vm-115-disk-1,iothread=1,size=1000G
scsihw: virtio-scsi-single
smbios1: uuid=f88dbfb6-395e-4baf-bd07-68c48ca1449c
sockets: 1
usb0: host=046d:c537,usb3=1
usb1: host=3-2,usb3=1
vmgenid: b3ac3d04-f94b-44fa-8fd1-96c26218c79f
You will need to upload the 8060s ROMs via WinSCP
Full guide:
GitHub - Uhh-IDontKnow/Proxmox_AMD_AI_Max_395_Radeon_8060s_GPU_Passthrough: Proxmox GPU Passthrough Guide for AMD Ryzen AI Max+ 395 (Strix Halo / 8060S)
- ROMs: vbios_8060s.bin, AMDGopDriver.rom — upload to
/usr/share/kvm/with scp
In theory at this point you can do a normal install of Ubuntu 25, I did select the option to install optional drivers when I did mine.
After install the qemu agent:
apt-get install qemu-guest-agent
Once you get the VM running you will need to also edit the Ubuntu VM GRUB - this will tell Ubuntu how much GPU VRAM to use for OLLAMA (will use GTT)
Open a terminal and run:
nano /etc/default/grub
Find the line:
GRUB_CMDLINE_LINUX_DEFAULT="quiet splash"
Modify it to include IOMMU OFF (this time) and your GPU RAM size for OLLAMA:
GRUB_CMDLINE_LINUX_DEFAULT="quiet splash amd_iommu=off amdgpu.gttsize=98304 ttm.pages_limit=33554432"
Then
update-grub
So in this example, you are saying 96gb of GPU VRAM - so you would need to allocate more than that in your VM settings for RAM. Figure GPT-OSS:120b will be about 75GB with full context.
Install Ollama
curl -fsSL https://ollama.com/install.sh | sh
sudo nano /etc/systemd/system/ollama.service
My config that works for me, adjust as needed.
Environment="OLLAMA_HOST=0.0.0.0"
Environment="OLLAMA_MAX_LOADED_MODELS=3"
Environment="OLLAMA_FLASH_ATTENTION=1"
Environment="OLLAMA_GPU_MEMORY_FRACTION=0.9"
Environment="ROCBLAS_USE_HIPBLAST=1"
Environment="HSA_OVERRIDE_GFX_VERSION=11.0.1"
Environment="HIP_VISIBLE_DEVICES=0"
Environment="ROCR_VISIBLE_DEVICES=0"
Environment="OLLAMA_KEEP_ALIVE=-1"
Environment="OLLAMA_ORIGINS=*"
Environment="OLLAMA_NUM_PARALLEL=2"
Environment="OLLAMA_VULKAN=1"
systemctl daemon-reload
systemctl restart ollama
Pull and Run your model of choice, verify with ollama ps that its 100% GPU
Install Steam connect your Xbox remotes via Bluetooth and Game ON! Hope this helps someone struggle less than I did.