Was ist GPU Passthrough?
PCIe Passthrough (auch VFIO-Passthrough) erlaubt es, ein physisches PCIe-Gerät – z. B. eine Grafikkarte – direkt und exklusiv an eine VM zu übergeben. Die VM hat dann nativen, hardwaredirekten Zugriff auf die GPU, ohne Virtualisierungsschicht.
Anwendungsfälle für GPU Passthrough
- Gaming-VMs: Windows-Gaming auf Proxmox-Host mit Linux als Basis
- KI/ML-Workloads: CUDA/ROCm in einer dedizierten VM
- Render-Farmen: Blender, DaVinci Resolve in isolierten VMs
- GPU-accelerated Server: TensorFlow, PyTorch, RAPIDS in Containern/VMs
- CAD/CAM-Software: GPU-beschleunigte Designsoftware in VM
Voraussetzungen
Hardware
- CPU mit IOMMU-Unterstützung:
- Intel: VT-d aktivieren im BIOS/UEFI
- AMD: AMD-Vi aktivieren im BIOS/UEFI
- Mainboard mit gutem IOMMU-Grouping (Z-Mainboards, Server-Mainboards)
- Mindestens 2 Grafikkarten (oder integrierte GPU als Primäranzeige + dedizierte GPU für Passthrough)
Ein-GPU-Setups (nur eine GPU im System) sind möglich aber deutlich komplizierter (erfordert vfio-pci unbind vor VM-Start).
IOMMU aktivieren
Intel (VT-d):
nano /etc/default/grub
Zeile ändern:GRUB_CMDLINE_LINUX_DEFAULT="quiet intel_iommu=on iommu=pt"
AMD (AMD-Vi):GRUB_CMDLINE_LINUX_DEFAULT="quiet amd_iommu=on iommu=pt"
GRUB aktualisieren:update-grub && reboot
IOMMU nach Neustart prüfen:dmesg | grep -e DMAR -e IOMMU | head -20
Ausgabe sollte enthalten: "IOMMU enabled" oder "Adding to iommu group"
IOMMU-Gruppen anzeigen
find /sys/kernel/iommu_groups/ -type l | sort -V | while read iommu_dev; do iommu_group=$(echo $iommu_dev | cut -d'/' -f5) dev=$(echo $iommu_dev | cut -d'/' -f7) echo "IOMMU Group $iommu_group: $dev" done
Ihre GPU sollte idealerweise in einer eigenen IOMMU-Gruppe sein (nur GPU + GPU-Audio).
VFIO-Kernel-Module aktivieren
Module laden
echo "vfio" >> /etc/modules echo "vfio_iommu_type1" >> /etc/modules echo "vfio_pci" >> /etc/modules echo "vfio_virqfd" >> /etc/modules
GPU-IDs für VFIO ermitteln
PCI-IDs der GPU anzeigen:
lspci -nn | grep -i nvidia
Beispielausgabe:01:00.0 VGA compatible controller [0300]: NVIDIA Corporation RTX 4070 [10de:2786] 01:00.1 Audio device [0403]: NVIDIA Corporation HD Audio [10de:22bc]
Die Zahlen in eckigen Klammern sind die PCI-IDs: 10de:2786 und 10de:22bc
VFIO an GPU-IDs binden
echo "options vfio-pci ids=10de:2786,10de:22bc" > /etc/modprobe.d/vfio.conf
NVIDIA-Treiber aus VFIO ausschließen (Blacklist)
echo "blacklist nouveau" >> /etc/modprobe.d/blacklist.conf echo "blacklist nvidia" >> /etc/modprobe.d/blacklist.conf echo "blacklist nvidiafb" >> /etc/modprobe.d/blacklist.conf
initramfs aktualisieren:update-initramfs -u -k all
Neustart:reboot
VFIO-Bindung prüfen:lspci -nnk | grep -A3 "NVIDIA"
Zeile "Kernel driver in use: vfio-pci" = Erfolg!
VM für GPU Passthrough konfigurieren
VM erstellen (empfohlene Einstellungen)
- Machine Type: q35
- BIOS: OVMF (UEFI)
- CPU Type: host
- RAM: 8+ GB
- Disk: VirtIO
- Netzwerk: VirtIO
GPU zur VM hinzufügen
VM auswählen → Hardware → Add → PCI Device
GPU aus Liste auswählen (z. B. 01:00.0 NVIDIA RTX 4070)
Optionen:
- All Functions: Aktivieren (bindet GPU + Audio zusammen)
- Primary GPU: Aktivieren wenn die VM die GPU als Primäranzeige nutzt
- PCI-Express: Aktivieren
- ROM-Bar: Aktivieren
Wiederholen für GPU-Audio (01:00.1)
Hyper-V Enlightenments für Windows
Für Windows-Gaming-VMs fügen Sie in der VM-Konfiguration hinzu:
qm set 100 --cpu host,hidden=1,flags=+pcid qm set 100 --machine q35 qm set 100 --args "-cpu host,kvm=off"
Einige NVIDIA-Treiber erkennen Virtualisierung und weigern sich zu laufen – kvm=off versteckt die KVM-Virtualisierung.
vBIOS der GPU (falls nötig)
Manche GPUs benötigen ein explizit geladenes vBIOS:
qm set 100 --hostpci0 01:00,romfile=vbios.rom
GPU-BIOS extrahieren (auf laufendem System):cd /sys/bus/pci/devices/0000:01:00.0/ && echo 1 > rom && cat rom > /tmp/vbios.rom && echo 0 > rom
NVIDIA-Treiber in der Windows-VM installieren
- Windows-VM starten (zunächst ohne GPU-Passthrough, nur mit QXL-Grafik)
- VirtIO-Treiber installieren (wichtig zuerst!)
- GPU-Passthrough in Hardware-Einstellungen aktivieren
- VM neu starten → Windows erkennt neue GPU
- NVIDIA-Treiber von nvidia.de herunterladen und installieren
GPU Passthrough verifizieren
Im Windows Geräte-Manager:
- NVIDIA GPU erscheint unter "Grafikkarten"
- Kein gelbes Ausrufezeichen
CUDA-Test in Windows:
Öffnen Sie NVIDIA Control Panel → System Information → Grafik – CUDA-Cores sollten angezeigt werden.
Linux-VM:nvidia-smi – Zeigt GPU-Status inkl. Temperatur und Auslastung
Häufige Probleme
Error 43 (NVIDIA Code 43 in Windows):
NVIDIA-Treiber erkennt Virtualisierung. Lösung: kvm=off im CPU-Argument, oder neuere NVIDIA-Treiber nutzen (ab v465 selten nötig).
VM startet nicht nach GPU-Hinzufügen:
IOMMU-Gruppen prüfen. GPU darf nicht mit anderen Geräten in einer Gruppe sein (außer GPU-Audio).
Schwarzer Bildschirm in VM:
ROM-Bar aktivieren, Primary GPU-Option prüfen, vBIOS manuell laden.
FAQ
Kann ich eine NVIDIA RTX-Karte für Passthrough nutzen?
Ja. Gaming-RTX-Karten funktionieren, aber NVIDIA hat in der Vergangenheit virtualisierungserkennung in Consumer-Karten eingebaut. Neuere Treiber (ab 2022) machen das weniger problematisch.
Ist GPU Passthrough mit einer einzigen GPU möglich?
Möglich aber komplex: Die GPU muss vor VM-Start vom Host freigegeben werden (unbind), was den Desktop-Betrieb auf dem Host unterbricht. Scripts automatisieren diesen Prozess.
Welche GPU ist am besten für Proxmox Passthrough?
AMD RX 6000/7000-Karten werden oft als unkomplizierter beschrieben (kein Code-43-Problem). NVIDIA RTX 3000/4000 funktionieren ebenfalls gut.
Fazit
GPU Passthrough in Proxmox ist technisch anspruchsvoll aber sehr leistungsfähig. Für KI/ML-Workloads und GPU-Rendering ist es die kosteneffizienteste Lösung in einer virtualisierten Umgebung.
Als Proxmox-Spezialisten in Heidelberg richten wir GPU-Passthrough und KI-Infrastrukturen für Unternehmen in Mannheim und der Rhein-Neckar-Region ein. Jetzt GPU-Infrastruktur anfragen.