Stellen Sie sich vor: Sie haben Stunden damit verbracht, Ihre ideale virtuelle Maschine (VM) in Proxmox einzurichten. Alles läuft reibungslos, bis auf das eine, entscheidende Detail: Sie möchten die volle Leistung Ihrer dedizierten Grafikkarte direkt an die VM durchreichen, um Spiele zu spielen, Videos zu bearbeiten oder KI-Anwendungen zu beschleunigen. Sie folgen Anleitungen, konfigurieren Proxmox sorgfältig, starten die VM – und dann schlägt der Blitz ein: Im Geräte-Manager Ihrer Windows-VM prangt er, der gefürchtete Error Code 10. „Das Gerät konnte nicht gestartet werden.” Ein Albtraum, der viele Proxmox-Nutzer zur Verzweiflung treibt.
Dieser Fehler ist besonders heimtückisch, weil er oft nur eine generische Meldung für ein tieferliegendes Problem ist. Er kann auf eine Vielzahl von Schwierigkeiten hindeuten, von falschen BIOS-Einstellungen über Kernel-Konflikte bis hin zu komplexen Treiber-Problemen oder sogar Hardware-Inkompatibilitäten. Aber keine Sorge: Sie sind nicht allein, und vor allem – es gibt eine Lösung! Dieser umfassende Leitfaden wird Sie Schritt für Schritt durch die Welt des Proxmox GPU Passthrough führen und Ihnen zeigen, wie Sie den Error Code 10 endgültig besiegen können.
Die Grundlagen verstehen: Was ist GPU Passthrough und warum scheitert es oft?
Bevor wir uns in die Fehlersuche stürzen, lassen Sie uns kurz klären, was GPU Passthrough überhaupt ist. Im Wesentlichen bedeutet es, dass Sie eine physikalische Hardwarekomponente, in diesem Fall Ihre Grafikkarte, direkt an eine virtuelle Maschine „durchreichen”. Die VM kann dann so darauf zugreifen, als wäre sie direkt mit dem physischen System verbunden. Dies ist entscheidend für Anwendungen, die hohe Grafikleistung erfordern, da die Emulation einer Grafikkarte oft nicht ausreicht.
Der Schlüssel zu diesem Prozess ist die IOMMU (Input/Output Memory Management Unit), eine Hardwarefunktion, die es dem Host-Betriebssystem (Proxmox) ermöglicht, bestimmte PCIe-Geräte zu isolieren und sie exklusiv einer VM zuzuweisen. Doch genau hier beginnt oft die Komplexität:
- Hardware-Kompatibilität: Nicht jede CPU, jedes Mainboard oder jede Grafikkarte ist gleichermaßen gut für Passthrough geeignet.
- BIOS/UEFI-Einstellungen: Falsche oder fehlende Aktivierung von IOMMU-Funktionen im BIOS/UEFI ist eine häufige Fehlerquelle.
- Kernel-Module: Das Host-System muss richtig konfiguriert sein, um die GPU zu isolieren und für das Passthrough vorzubereiten (z.B. mittels vfio-pci).
- Treiber im Gastsystem: Selbst wenn die GPU erfolgreich durchgereicht wird, kann es zu Problemen mit den Treibern im Gastsystem kommen, insbesondere bei NVIDIA-Karten (bekannt als Error Code 43), die versuchen, eine Virtualisierungsumgebung zu erkennen.
Der Error Code 10 ist oft eine Oberflächenmanifestation dieser tieferliegenden Probleme. Er signalisiert Windows, dass das Gerät zwar vorhanden ist, aber nicht initialisiert werden konnte – sei es wegen fehlender Ressourcen, Konflikten oder weil die Hardware nicht so reagiert, wie der Treiber es erwartet.
Vorbereitung ist alles: Bevor Sie beginnen
Eine gute Vorbereitung spart viele Stunden Frust. Nehmen Sie sich die Zeit, die folgenden Punkte sorgfältig zu überprüfen.
1. Hardware-Voraussetzungen prüfen
- CPU mit IOMMU: Ihre CPU muss Intel VT-d (für Intel) oder AMD-v (für AMD) unterstützen. Prüfen Sie dies auf der Hersteller-Website. Die meisten modernen CPUs tun dies.
- Mainboard mit IOMMU-Unterstützung: Das Mainboard muss IOMMU ebenfalls unterstützen und die Funktion über das BIOS/UEFI zugänglich machen.
- Dedizierte GPU: Für Passthrough ist eine dedizierte Grafikkarte erforderlich. Es ist ideal, wenn der Host eine separate Grafikausgabe (z.B. eine integrierte GPU der CPU oder eine zweite, kleine dGPU) nutzen kann, damit die dedizierte GPU exklusiv der VM zur Verfügung steht.
2. BIOS/UEFI-Einstellungen optimieren
Dies ist einer der kritischsten Schritte. Starten Sie Ihren Server neu und rufen Sie das BIOS/UEFI auf (meist durch Drücken von Entf, F2 oder F10 beim Start).
- IOMMU / VT-d / AMD-v aktivieren: Suchen Sie nach Optionen wie „Intel VT-d”, „AMD-v”, „IOMMU” oder „Virtualization Technology” und aktivieren Sie diese. Sie finden sie oft unter „Advanced”, „CPU Configuration” oder „North Bridge”.
- Primary Display: Wenn Sie eine integrierte Grafikkarte (iGPU) haben, stellen Sie diese als primäre Grafikausgabe ein. Dadurch wird sichergestellt, dass die dedizierte GPU beim Booten des Hosts nicht vom Proxmox-System beansprucht wird. Wenn Sie keine iGPU haben, stellen Sie die integrierte Grafik (falls vorhanden) im BIOS auf „Auto” oder deaktivieren Sie sie, wenn Sie eine andere PCIe-Karte für den Host-Ausgang verwenden.
- CSM (Compatibility Support Module) deaktivieren: Wenn Sie OVMF (UEFI) als BIOS für Ihre VM verwenden möchten (was für neuere GPUs und Passthrough dringend empfohlen wird), muss CSM im Host-BIOS deaktiviert sein. Andernfalls kann es zu Problemen kommen.
- Above 4G Decoding aktivieren: Diese Option ist für neuere GPUs (oft ab der NVIDIA RTX 20er Serie oder AMD RX 5000er Serie) unerlässlich, da diese mehr als 4 GB Adressraum belegen können. Sie finden sie meist unter „Advanced” -> „PCIe Subsystem Settings”. Wenn diese Option fehlt oder deaktiviert ist, kann dies direkt zu Error Code 10 oder 43 führen.
3. Proxmox-Installation überprüfen
- Stellen Sie sicher, dass Ihr Proxmox-System auf dem neuesten Stand ist. Führen Sie `apt update && apt dist-upgrade -y` aus.
- Überprüfen Sie, ob Proxmox erfolgreich gebootet ist und die Konsole erreichbar ist.
Schritt für Schritt zur Lösung: Proxmox Konfiguration
Jetzt geht es ans Eingemachte. Wir werden das Proxmox-System so konfigurieren, dass es Ihre Grafikkarte ordnungsgemäß für das Passthrough isoliert.
1. IOMMU im Kernel aktivieren
Öffnen Sie die GRUB-Konfigurationsdatei:
nano /etc/default/grub
Suchen Sie die Zeile, die mit `GRUB_CMDLINE_LINUX_DEFAULT` beginnt, und fügen Sie die entsprechenden Parameter hinzu:
- Für Intel-CPUs: `GRUB_CMDLINE_LINUX_DEFAULT=”quiet intel_iommu=on iommu=pt”`
- Für AMD-CPUs: `GRUB_CMDLINE_LINUX_DEFAULT=”quiet amd_iommu=on iommu=pt”`
`iommu=pt` (Pass Through) ist oft hilfreich, um die Leistung zu optimieren und Kompatibilitätsprobleme zu vermeiden. Speichern Sie die Datei (Strg+O, Enter, Strg+X). Aktualisieren Sie GRUB und starten Sie neu:
update-grub
reboot
Überprüfen Sie nach dem Neustart, ob IOMMU aktiv ist:
dmesg | grep -e DMAR -e IOMMU
Sie sollten Ausgaben sehen, die bestätigen, dass IOMMU aktiviert wurde.
2. IOMMU-Gruppen überprüfen
Es ist entscheidend zu wissen, welche Geräte sich in welchen IOMMU-Gruppen befinden. Jedes Gerät, das Sie durchreichen möchten, muss in einer eigenen Gruppe sein, oder die gesamte Gruppe muss durchgereicht werden.
for d in /sys/kernel/iommu_groups/*/devices/*; do n=${d##*/}; d=${d%/*}; printf 'IOMMU Group %s %sn' "${d##*/}" "$(lspci -nns "$n")"; done
Suchen Sie in der Ausgabe nach Ihrer Grafikkarte. Eine typische GPU besteht aus zwei Geräten: der Grafikkarte selbst und dem HDMI-Audio-Controller. Diese sollten idealerweise in derselben IOMMU-Gruppe sein. Wenn andere wichtige Geräte (z.B. USB-Controller, die Sie nicht durchreichen möchten) in derselben Gruppe sind, könnte dies zu Problemen führen. Das ist das „IOMMU Grouping”-Problem.
3. GPU und Audiogerät isolieren (Blacklisting/vfio-pci)
Damit Proxmox die GPU nicht selbst verwendet, müssen wir sie für das vfio-pci-Modul reservieren und die Standardtreiber blacklisten.
Zuerst finden Sie die Vendor- und Device-IDs Ihrer GPU und ihres Audio-Controllers:
lspci -n -s <Ihre_GPU_PCIe_Adresse>
Ersetzen Sie `
01:00.0 0300: 10de:1e04 (rev a1)
01:00.1 0403: 10de:10f0 (rev a1)
Hier wären die IDs `10de:1e04` (GPU) und `10de:10f0` (Audio).
Erstellen Sie eine Konfigurationsdatei für vfio-pci:
echo "options vfio-pci ids=10de:1e04,10de:10f0 disable_vga=1" > /etc/modprobe.d/vfio.conf
Ersetzen Sie die IDs durch Ihre eigenen. `disable_vga=1` ist besonders wichtig für NVIDIA-Karten, um den sogenannten NVIDIA Error Code 43 zu vermeiden, der oft nach dem Error Code 10 auftritt, wenn die Karte vom Gastsystem erkannt wird, aber die Initialisierung fehlschlägt.
Nun müssen Sie die Standardtreiber der GPU blacklisten, damit sie vom Host nicht geladen werden. Für NVIDIA:
echo "blacklist nouveau" >> /etc/modprobe.d/blacklist.conf
Für AMD (Sie können alle drei hinzufügen, um sicherzustellen):
echo "blacklist radeon" >> /etc/modprobe.d/blacklist.conf
echo "blacklist amdgpu" >> /etc/modprobe.d/blacklist.conf
Aktualisieren Sie das Initramfs und starten Sie neu:
update-initramfs -u -k all
reboot
Nach dem Neustart sollten Sie überprüfen, ob die GPU erfolgreich vom vfio-pci-Modul übernommen wurde:
lspci -k | grep -EA3 'VGA|3D|Display'
Unter „Kernel driver in use” sollte jetzt `vfio-pci` stehen.
4. Virtuelle Maschine vorbereiten
Erstellen Sie eine neue VM in Proxmox oder bearbeiten Sie eine bestehende. Beachten Sie folgende wichtige Einstellungen:
- Maschinentyp: Wählen Sie
q35
. Dies ist der modernere Maschinentyp und bietet bessere Unterstützung für PCIe Passthrough als i440fx. - BIOS: Verwenden Sie
OVMF (UEFI)
. Dies ist für neuere GPUs und insbesondere in Verbindung mit „Above 4G Decoding” und CSM-Deaktivierung im Host-BIOS unerlässlich. - SCSI-Controller: `VirtIO SCSI single` ist eine gute Wahl.
- Disk: Verwenden Sie `virtio` für die beste Performance.
- CPU: Stellen Sie „Typ” auf
host
ein. Dies gibt dem Gastsystem Zugriff auf alle CPU-Funktionen und -Erweiterungen Ihrer Host-CPU, was für die Performance und Kompatibilität von Passthrough-GPUs entscheidend ist. - Display: Stellen Sie „Grafikkarte” auf
none
ein, sobald Sie die dedizierte GPU hinzugefügt haben. Das Gastsystem wird die Passthrough-GPU direkt nutzen. - PCI Gerät hinzufügen: Fügen Sie Ihre Grafikkarte und den zugehörigen Audio-Controller als PCI-Gerät hinzu.
- Wählen Sie die korrekte PCI-Adresse aus der Liste.
- Aktivieren Sie
All Functions
. - Wenn es Ihre einzige Grafikkarte ist, aktivieren Sie
Primary GPU
. - Wählen Sie
PCIe
für den Typ. - Aktivieren Sie
Rom-Bar
, besonders wenn Sie Probleme mit der Initialisierung haben.
Wichtige QEMU-Argumente für NVIDIA Error Code 43:
Für NVIDIA-Karten müssen Sie oft zusätzliche Argumente hinzufügen, um die Erkennung der Virtualisierungsumgebung zu umgehen. Dies wird im Feld „VM Options” -> „Add” -> „Args” eingetragen:
-cpu 'host,kvm=off,hv_vendor_id=null'
Diese Argumente verbergen von der VM, dass sie in einer KVM-Umgebung läuft, was NVIDIA-Treiber oft zum Verweigern des Dienstes (Error Code 43, eine spezifischere Form von Error Code 10) veranlasst.
Besondere Fälle und häufige Stolpersteine (Error Code 10 spezifisch)
Manchmal sind es die kleinen Details, die den Unterschied machen. Hier sind weitere spezifische Probleme, die zu Error Code 10 führen können:
1. NVIDIA Error Code 43 und das GPU-BIOS (ROM)
Wie bereits erwähnt, ist Error Code 43 oft eine spezifische Ausprägung von Error Code 10 bei NVIDIA-Karten in Windows-VMs. Die oben genannten QEMU-Argumente helfen meist. Manchmal ist das Problem jedoch tiefer liegend und hängt mit dem GPU-BIOS (ROM) zusammen. Bestimmte Karten benötigen ein spezielles ROM, um korrekt in einer virtuellen Umgebung zu initialisieren.
- ROM-File verwenden: Sie können versuchen, das ROM-File Ihrer Grafikkarte zu extrahieren (z.B. unter Linux mit `dd` oder speziellen Tools) und es der VM explizit zuzuweisen. Fügen Sie dazu in den VM-Optionen (unter „Hardware” -> „PCI Gerät”) die Option `romfile=/path/to/your/gpu_bios.rom` hinzu. Achten Sie darauf, dass der Pfad zum ROM-File auf dem Proxmox-Host korrekt ist (z.B. `/usr/share/kvm/gpu_bios.rom`).
- Deaktivierung der integrierten VGA: Stellen Sie sicher, dass `disable_vga=1` in Ihrer `vfio.conf` (siehe oben) korrekt ist.
2. AMD Reset Bug
Ältere AMD-Grafikkarten hatten oft einen „Reset Bug”, der dazu führte, dass die Karte nach dem Herunterfahren oder Neustarten einer VM nicht erneut initialisiert werden konnte, ohne den Host komplett neu zu starten. Neuere Kernel (5.x+) und GPU-Firmware haben dieses Problem oft behoben. Sollten Sie immer noch Probleme haben:
- Suchen Sie nach Kernel-Modulen wie `vendor-reset` (Drittanbieter), die dieses Problem umgehen können.
- Stellen Sie sicher, dass Ihre Proxmox-Installation auf dem neuesten Stand ist.
3. Above 4G Decoding
Nochmals hervorzuheben: Diese BIOS-Einstellung ist für neuere GPUs (oft mit mehr als 4 GB VRAM) unerlässlich. Fehlt sie oder ist sie deaktiviert, kann die VM die GPU nicht korrekt ansprechen, was zu Error Code 10 führen kann.
4. BIOS/UEFI und CSM-Konflikte
Wenn Sie im Proxmox VM-BIOS OVMF (UEFI) verwenden, muss CSM (Compatibility Support Module) im BIOS Ihres Hosts deaktiviert sein. Andernfalls kann es zu Boot-Problemen oder Passthrough-Fehlern kommen, da UEFI und CSM sich bei der Initialisierung von Hardware in die Quere kommen können.
5. Treiberprobleme im Gastsystem
Manchmal ist der Error Code 10 einfach ein Hinweis darauf, dass die Treiber im Gastsystem korrupt oder veraltet sind. Verwenden Sie ein Tool wie DDU (Display Driver Uninstaller) im abgesicherten Modus der Windows-VM, um alle Grafiktreiber vollständig zu entfernen. Installieren Sie dann die neuesten Treiber frisch vom Hersteller.
Troubleshooting und Debugging
Wenn es immer noch nicht funktioniert, ist systematisches Debugging gefragt:
- Proxmox Logs: Überprüfen Sie die Systemprotokolle des Proxmox-Hosts.
journalctl -xe
dmesg | grep vfio
Suchen Sie nach Fehlermeldungen, die auf Probleme beim Laden von vfio-pci oder der Initialisierung der GPU hindeuten.
- Windows Ereignisanzeige: Im Gastsystem ist die Ereignisanzeige (Event Viewer) unter „System” und „Anwendungen und Dienste-Protokolle” -> „Microsoft” -> „Windows” -> „Kernel-PnP” eine Goldgrube für Informationen zu Hardware-Initialisierungsfehlern.
- Testen mit Linux-VM: Manchmal ist es einfacher, das Passthrough zuerst mit einer Linux-VM zu testen. Linux-Treiber sind oft weniger wählerisch als NVIDIA-Treiber unter Windows und können Ihnen schnell zeigen, ob die GPU an sich korrekt durchgereicht wird. Wenn es unter Linux funktioniert, liegt das Problem wahrscheinlich an Windows oder NVIDIA-spezifischen Anti-Virtualisierungsmaßnahmen.
- PCIe-Slot wechseln: Versuchen Sie, die Grafikkarte in einen anderen PCIe-Slot zu stecken. Manchmal haben bestimmte Slots bessere IOMMU-Gruppen oder sind direkter mit der CPU verbunden.
- Proxmox Forum und Community: Die Proxmox-Community ist riesig und hilfsbereit. Suchen Sie nach ähnlichen Problemen oder stellen Sie Ihre Frage mit allen relevanten Informationen (Hardware, Proxmox-Konfiguration, Fehlermeldungen).
Fazit
Der Error Code 10 in Verbindung mit Proxmox GPU Passthrough kann eine zermürbende Erfahrung sein. Doch wie Sie gesehen haben, ist er selten ein unlösbares Problem. Er ist vielmehr ein Sammelbegriff für eine Reihe von Konfigurations- und Kompatibilitätsproblemen, die sich durch geduldige und systematische Fehlersuche beheben lassen.
Von der Aktivierung von IOMMU im BIOS und Kernel über die korrekte Isolierung der GPU mittels vfio-pci bis hin zur feinen Abstimmung der VM-Einstellungen und der Behandlung spezifischer Probleme wie dem NVIDIA Error Code 43 oder dem AMD Reset Bug – jeder Schritt ist entscheidend. Haben Sie all diese Punkte sorgfältig geprüft und umgesetzt, werden Sie die Früchte Ihrer Arbeit ernten: eine voll funktionsfähige virtuelle Maschine mit der vollen Leistung Ihrer dedizierten Grafikkarte.
Der Weg kann steinig sein, aber das Gefühl, wenn Ihre Spiele in 4K ruckelfrei laufen oder Ihre KI-Berechnungen in der VM mit voller GPU-Power durchrauschen, ist die Mühe absolut wert. Geben Sie nicht auf – Sie werden den gefürchteten Error Code 10 besiegen!