Having spent the last few days fighting all the subtle parts of getting this working, I put together a quick guide on how to get Proxmox, running on a Strix Halo, machine, with working GPU passthrough into LXC containers. To be clear, this is a "works right now" recipe, subject to kernel changes, ROCM changes, etc.
---------------------------------
Goal: 128GB total RAM, 64GB ram for CPU/applications + 64GB VRAM local AI server with full hardware acceleration
Paste the following into the override file:
Expected Output: Name: gfx1151 and Name: amdgcn-amd-amdhsa--gfx1151.
If the reply is instant and doesn't crash, your 64G/64G Strix Halo workstation is live.
---------------------------------
Guide: The Strix Halo AI Powerhouse (Proxmox 9.1 + ROCm 7.2)
Target Hardware: AMD STRIX HALO box (Minisforum S1-MAX etc)Goal: 128GB total RAM, 64GB ram for CPU/applications + 64GB VRAM local AI server with full hardware acceleration
Introduction
The AMD Strix Halo (RDNA 3.5 / gfx1151) is a game-changer for local AI. By leveraging a high-speed unified memory architecture, this APU can address massive amounts of system RAM as video memory. This guide details how to configure Proxmox 9.1 to carve out a 64GB VRAM pool and pass it through to a high-performance LXC container.Phase 1: Host BIOS & Kernel Tuning
Unlocking the memory gates to allow the GPU to access 64GB of RAM.1. BIOS Settings
- IOMMU: Enabled.
- UMA Framebuffer: Auto. (The kernel parameters below will override and expand this).
- Resizable BAR: Enabled.
2. Host Kernel Parameters
Edit /etc/default/grub (or /etc/kernel/cmdline) on your Proxmox Host to enable IOMMU pass-through and define the Graphics Translation Table (GTT) size.
Code:
# Edit this line in /etc/default/grub
GRUB_CMDLINE_LINUX_DEFAULT="quiet splash amd_iommu=on iommu=pt amdgpu.gttsize=65536 ttm.pages_limit=16777216 video=1024x768@60"
- amdgpu.gttsize=65536: Maps 64GB of system RAM for GPU use.
- ttm.pages_limit=16777216: Sets the page limit to exactly 64GB (16777216 times 4096 byte pages).
- video=1024x768@60: Because console graphics mode autosense is always wrong.
Code:
update-grub && reboot
Phase 2: Host Driver & Firmware Installation
Strix Halo requires the latest firmware blobs and the ROCm 7.2 userspace stack.1. Update Firmware (Critical for gfx1151)
Run this on the Proxmox Host:
Code:
apt update && apt install -y git
git clone --depth 1 https://git.kernel.org/pub/scm/linux/kernel/git/firmware/linux-firmware.git
cp linux-firmware/amdgpu/gc_11_5_1* /lib/firmware/amdgpu/
cp linux-firmware/amdgpu/sdma_6_1_1* /lib/firmware/amdgpu/
update-initramfs -u
2. Install ROCm 7.2 Userspace (Host)
Code:
apt update && apt install -y wget gpg curl
wget -q https://repo.radeon.com/amdgpu-install/latest/ubuntu/noble/amdgpu-install_7.2.70200-1_all.deb -O /tmp/amdgpu.deb
apt install -y /tmp/amdgpu.deb
amdgpu-install -y --usecase=graphics,rocm
usermod -aG render,video root
3. Host Verification
Confirm the host sees the hardware:
Code:
/usr/bin/rocminfo | grep "gfx1151"
Phase 3: LXC Creation & Hardware Mapping
1. Create the Container
- Privileged: Yes (Required for the KFD driver handshake).
- Template: Ubuntu 24 LTS
- RAM: 16GB (The GPU will pull from the 64GB GTT pool independently).
2. Map Devices (On Host)
Run these commands on the Proxmox Host to find your GIDs and map the hardware to your LXC (replace 1201 with your actual Container ID):
Code:
# Find GIDs
RENDER_GID=$(getent group render | cut -d: -f3)
VIDEO_GID=$(getent group video | cut -d: -f3)
# Native Proxmox device passthrough
pct set 1201 -dev0 /dev/kfd,gid=$RENDER_GID
pct set 1201 -dev1 /dev/dri/renderD128,gid=$RENDER_GID
pct set 1201 -dev2 /dev/dri/card0,gid=$VIDEO_GID
Phase 4: Container Internal Setup
Inside the Ubuntu 24 LTS LXC, install the ROCm stack without kernel modules (no-dkms) and configure Ollama.1. Install ROCm 7.2 (LXC)
Code:
apt update && apt install -y wget gpg curl zstd
wget -q 'https://repo.radeon.com/amdgpu-install/latest/ubuntu/noble/amdgpu-install_7.2.70200-1_all.deb' -O /tmp/amdgpu.deb
apt install -y /tmp/amdgpu.deb
amdgpu-install -y --usecase=rocm --no-dkms
usermod -aG render,video root
2. Install & Reconfigure Ollama
Code:
curl -fsSL https://ollama.com/install.sh | sh
systemctl edit ollama.service
Paste the following into the override file:
Code:
[Service]
# Force RDNA 3.5 recognition
Environment="HSA_OVERRIDE_GFX_VERSION=11.5.0"
# Stability Fix: Disable bugged SDMA for unified memory
Environment="HSA_ENABLE_SDMA=0"
Environment="OLLAMA_VULKAN=1"
# Connectivity & Performance
Environment="OLLAMA_HOST=0.0.0.0"
Environment="OLLAMA_ORIGINS=*"
Environment="OLLAMA_NUM_PARALLEL=2"
Environment="OLLAMA_KV_CACHE_TYPE=q8_0"
Environment="OLLAMA_KEEP_ALIVE=24h"
Phase 5: Functional Validation
Perform these checks inside the LXC to ensure the stack is operational.1. Driver Check
Code:
/usr/bin/rocminfo | grep "gfx1151"
Expected Output: Name: gfx1151 and Name: amdgcn-amd-amdhsa--gfx1151.
2. Functional LLM Test
Code:
systemctl daemon-reload
systemctl restart ollama
ollama pull qwen2.5:0.5b
ollama run qwen2.5:0.5b "Why is the sky blue?"
If the reply is instant and doesn't crash, your 64G/64G Strix Halo workstation is live.
Last edited: