GPU PASSTHROUGH VM
EINFÜHRUNG
Eine virtuelle Maschine zu betreiben bedeutet normalerweise, Grafikleistung zu opfern. GPU Passthrough (VFIO) löst dieses Problem, indem es der VM direkten Zugriff auf eine physische GPU gibt – für nahezu native Leistung. Das ist der heilige Gral für Linux-Nutzer, die Windows-Spiele oder Adobe-Software ohne Dual-Boot nutzen wollen.
Mit richtiger Konfiguration erreichst du 95-99% der Bare-Metal-Leistung, kannst Anti-Cheat-Spiele spielen und behältst deine sichere Linux-Host-Umgebung.
VFIO GPU Passthrough Architektur
VFIO Treiber
Isolierung
Direkter Zugriff
VORAUSSETZUNGEN
- CPU mit VT-d (Intel) oder AMD-Vi (AMD) - Prüfe deine Prozessor-Specs
- Motherboard mit IOMMU-Support - Jedes moderne Board unterstützt das
- Zwei GPUs ODER Single-GPU Passthrough - Dual-GPU ist einfacher für Anfänger
- Linux Host - Arch Linux empfohlen (beste Dokumentation), Ubuntu/Fedora funktionieren auch
- Mindestens 16GB RAM - Du musst 8GB+ der VM zuweisen
⚠️ WARNUNG
Falsche BIOS-Modifikationen können dein Motherboard bricken. Habe immer einen Backup-Plan und lies den kompletten Guide, bevor du anfängst.
SCHRITT-FÜR-SCHRITT ANLEITUNG
Schritt 1: IOMMU im BIOS/UEFI aktivieren
Starte ins BIOS (meist DEL oder F2 beim Booten). Navigiere zum Advanced- oder CPU-Konfigurationsbereich.
Suche und aktiviere:
- Intel VT-d (Intel CPUs) oder AMD-Vi / IOMMU (AMD CPUs)
- Intel Virtualization Technology / SVM Mode
- Deaktiviere CSM/Legacy Boot (nur UEFI verwenden)
Schritt 2: IOMMU in Kernel-Parametern aktivieren
Bearbeite deine Bootloader-Config um IOMMU auf Kernel-Ebene zu aktivieren. Für GRUB, bearbeite
/etc/default/grub:
GRUB_CMDLINE_LINUX_DEFAULT="quiet intel_iommu=on iommu=pt"
# Für AMD CPUs:
GRUB_CMDLINE_LINUX_DEFAULT="quiet amd_iommu=on iommu=pt"
Dann GRUB aktualisieren und neustarten:
sudo reboot
Schritt 3: IOMMU-Gruppen verifizieren
Nach dem Neustart, prüfe deine IOMMU-Gruppen um sicherzustellen, dass Geräte richtig isoliert sind:
shopt -s nullglob
for g in $(find /sys/kernel/iommu_groups/* -maxdepth 0 -type d | sort -V); do
echo "IOMMU Group ${g##*/}:"
for d in $g/devices/*; do
echo -e "\t$(lspci -nns ${d##*/})"
done;
done;
Schritt 4: GPU mit VFIO isolieren
Finde die PCI-IDs deiner GPU mit lspci -nnk.
Erstelle /etc/modprobe.d/vfio.conf:
options vfio-pci ids=10de:1b80,10de:10f0
# Lade vfio-pci vor Grafiktreibern
softdep nvidia pre: vfio-pci
softdep amdgpu pre: vfio-pci
Initramfs aktualisieren und neustarten:
sudo update-initramfs -u # Ubuntu/Debian
Schritt 5: Virtualisierungssoftware installieren
sudo pacman -S qemu libvirt virt-manager ovmf
# Ubuntu/Debian
sudo apt install qemu-kvm libvirt-daemon-system virt-manager ovmf
Libvirt aktivieren und starten:
sudo usermod -aG libvirt $USER
Schritt 6: VM in Virt-Manager erstellen
- Virt-Manager öffnen und "Neue virtuelle Maschine erstellen" klicken
- "Lokales Installationsmedium" wählen und Windows-ISO auswählen
- Mindestens 8GB RAM und 4 CPU-Kerne zuweisen
- Wichtig: "Konfiguration vor Installation anpassen" auswählen
- In Übersicht, Firmware auf "UEFI x86_64: /usr/share/OVMF/OVMF_CODE.fd" setzen
- Bei CPUs "Host-CPU-Konfiguration kopieren" ankreuzen
- Standard-Videoadapter entfernen (Spice/QXL)
- "Hardware hinzufügen" → "PCI-Host-Gerät" → Deine GPU auswählen
- Erneut Hardware hinzufügen und GPU-Audio-Controller auswählen
FAZIT & TROUBLESHOOTING
Wenn erfolgreich, hast du jetzt eine Windows-VM, die 95-99% der Bare-Metal-Leistung erreicht. Du kannst die meisten Spiele mit Anti-Cheat spielen und CUDA-Beschleunigung nutzen.
Häufige Probleme:
- Code 43 Error: vendor_id hinzufügen um VM vor Nvidia-Treibern zu verstecken
- Schwarzer Bildschirm: Andere OVMF-Firmware-Versionen probieren oder video=efifb:off zu Kernel-Params hinzufügen
- VM startet nicht: IOMMU-Gruppen prüfen und sicherstellen, dass GPU nicht vom Host genutzt wird
FAQ / PROBLEMLÖSUNG
⚠️ Detaillierte Antworten zu den häufigsten Problemen
❌ Code 43 Fehler im Windows-Geräte-Manager für die durchgereichte GPU
Nvidia und AMD blockieren Treiber, wenn sie eine VM erkennen. Fix: füge
<vendor_id state="on" value="1234567890ab"/> in der <features/>-Sektion
der VM hinzu. Für Nvidia brauchst du außerdem
<hyperv_relaxed state="on"/>, <vendor_id state="on"/> und
hidden state="on" in den Hyper-V-Features.
❌ Meine GPU ist mit dem USB-Controller in einer IOMMU-Gruppe
Häufig bei älteren AMD-Boards. Du brauchst einen
ACS-Override-Patch im Kernel, oder du nutzt
vfio-pci.ids= um die ganze Gruppe auf einmal zu binden. Langfristig: neueres Motherboard mit
besserer IOMMU-Segmentierung.
❌ Audio über HDMI/DP der durchgereichten GPU funktioniert nicht
Du musst beide durchreichen: den VGA-Controller und den Audio-Controller
(meist 01:00.1). In Windows dann HDMI-Audio als Standard-Wiedergabegerät setzen.
❌ Performance nur 80% statt 95-99% von Bare-Metal
Prüfe folgendes:
hv_vendor_id=whateverin der Kernel-Cmdlinecpu host-passthroughin der VM-XML (nichthost-model)- CPU-Cores mit
<vcpupin>an die VM pinnen - Hugepages nutzen:
echo 1024 > /proc/sys/vm/nr_hugepages - Disk-Driver auf
virtio(single-driver) und Cache aufwriteback
❌ Geht Single-GPU-Passthrough (ohne zweite GPU)?
Ja, aber komplexer. Der Host muss die GPU vor dem VM-Start freigeben, und du
brauchst eine vfio-pci.ids-Zeile im Bootloader, um sie vor dem Displaytreiber zu binden. Siehe
die Single-GPU-Passthrough-Anleitung für das volle Verfahren.
❌ Anti-Cheat erkennt meine VM — was nun?
EAC und BattlEye unterstützen Linux/Wine/Proton offiziell — nutze Heroic / ProtonDB stattdessen. Vanguard (Valorant) und manche Kernel-Level-Anti-Cheats erkennen VM-Umgebungen. Es gibt keinen zuverlässigen Workaround jenseits der obigen Techniken.
❌ Mein CPU hat kein VT-d / AMD-Vi
GPU-Passthrough ist dann nicht möglich. Das IOMMU-Hardware-Feature ist zwingend erforderlich. Intel-Consumer-CPUs vor Haswell (4. Gen) und AMD vor Ryzen unterstützen es nicht. Siehe die CPU-Virtualisierungs-Liste.
❓ Brauchst du Hilfe?
→ Arch Wiki: PCI passthrough via OVMF ist die kanonische Referenz. Das r/VFIO Subreddit ist extrem hilfreich.