GPU Passthrough in VM

MickyF

Member
Nov 18, 2025
52
12
8
Hi!

Ich habe versucht auf meinem MinisForum NAB6 mit i5 12600H und einer iGPU GPU Passthrough freizuschalten.
Lange Rede kurzer Sinn. Nach wie vor kann ich keine GPU beim Hinzufügen eines PCI Devices auswählen. Die Drop Down Box ist dort leer. Die VM soll später Immich hosten um dort die GPU Unterstützung zu nutzen.

Die VM ist mit Debian OS konfiguriert. Aber ich denke dies spielt erstmal keine Rolle, da ich bereits an der Hardware-Konfiguration scheitere.

Folgende Schritte bzw. Befehle wurden bereits durchgeführt.
  1. nano /etc/default/grub
    Folgende Zeile geändert:
    Code:
    GRUB_CMDLINE_LINUX_DEFAULT="quiet intel_iommu=on iommu=pt video=efifb:off"
  2. update-grub
  3. nano /etc/modules-load.d/vfio.conf
    Folgende Zeilen eingetragen:
    Code:
    vfio
    vfio_iommu_type1
    vfio_pci
    vfio_virqfd
  4. nano /etc/modprobe.d/vfio-pci.conf
    Folgende Zeilen eingetragen, die Gerätedetails zuvor mit lspci -nn | grep -i vga ermittelt
    Code:
    options vfio-pci ids=8086:46a6
  5. update-initramfs -u
  6. reboot

Speziell bei 6. bin ich mir nicht sicher, was denn letztendlich rebootet wurde, der komplett MiniPC kann es nicht gewesen sein, denn der Vorgang war viel zu schnell und der Eindruck entstand dass es lediglich der Node war.

Durch einen Tipp ging es aber noch weiter:
  1. nano /etc/modprobe.d/blacklist-i915.conf
    Folgende Zeilen eingefügt:
    Code:
    blacklist i915
    blacklist xe
  2. update-initramfs -u
  3. reboot
Der Befehl lspci -nnk -d 8086:46a6 gibt dabei folgendes aus:
Code:
00:02.0 VGA compatible controller [0300]: Intel Corporation Alder Lake-P GT2 [Iris Xe Graphics] [8086:46a6] (rev 0c)
        DeviceName: Onboard - Video
        Subsystem: Intel Corporation Device [8086:2212]
        Kernel driver in use: vfio-pci
        Kernel modules: i915, xe
Denke, bis jetzt ist alles soweit soweit OK, oder?

Trotzdem ist die Auswahl beim Hinzufügen eines PCI Devices zur VM nach wie vor leer.

Ich habe so meine Zweifel, dass bei jedem Reboot der komplette MiniPC gestartet wurde und nicht nur der Node. Ich meine Grub wird ja nur beim vollständigen Neustart durchlaufen und nicht nur beim Reboot des Node, oder?

Warum dann aber trotzdem alle Kontrollausgaben die richtigen Werte zeigen und augenscheinlich die GPU durchgereicht wird, ist mir schleierhaft.

Wo ist also mein Denkfehler bzw. welcher zusätzlichen Schritte fehlen mir noch?
 
Kannst du ein Bild dieser Auswahl und die Ausgabe hiervon zeigen?
Bash:
{
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;
}
Für immich/frigate und die meisten anderen Dinge die die GPU brauchen können würde ich wenn möglich ein CT empfehlen. Ja, auch wenn das heißt, dass du Docker in einem CT benutzen musst.
 
Last edited:
Kannst du ein Bild dieser Auswahl und die Ausgabe hiervon zeigen?
...
Für immich/frigate und die meisten anderen Dinge die die GPU brauchen können würde ich wenn möglich ein CT empfehlen. Ja, auch wenn das heißt, dass du Docker in einem CT benutzen musst.
Hilft dir das vielleicht schon Mal?

Diese Ausgabe habe ich in der Vergangenheit bereits Mal durchgeführt, gleicher PC natürlich:
Code:
find /sys/kernel/iommu_groups/ -type l
/sys/kernel/iommu_groups/7/devices/0000:00:1d.0
/sys/kernel/iommu_groups/5/devices/0000:00:17.0
/sys/kernel/iommu_groups/13/devices/0000:04:00.0
/sys/kernel/iommu_groups/3/devices/0000:00:14.2
/sys/kernel/iommu_groups/3/devices/0000:00:14.0
/sys/kernel/iommu_groups/11/devices/0000:02:00.0
/sys/kernel/iommu_groups/1/devices/0000:00:00.0
/sys/kernel/iommu_groups/8/devices/0000:00:1d.1
/sys/kernel/iommu_groups/6/devices/0000:00:1c.0
/sys/kernel/iommu_groups/4/devices/0000:00:16.0
/sys/kernel/iommu_groups/12/devices/0000:03:00.0
/sys/kernel/iommu_groups/2/devices/0000:00:06.0
/sys/kernel/iommu_groups/10/devices/0000:01:00.0
/sys/kernel/iommu_groups/0/devices/0000:00:02.0
/sys/kernel/iommu_groups/9/devices/0000:00:1f.0
/sys/kernel/iommu_groups/9/devices/0000:00:1f.5
/sys/kernel/iommu_groups/9/devices/0000:00:1f.3
/sys/kernel/iommu_groups/9/devices/0000:00:1f.4

Und ja, ich hatte Immich für eine CT bereits angedacht und am Laufen, widerspricht halt den Empfehlungen der Programmierer und daher bin ich auf VM -> Docker -> Immich umgestiegen.
 
Ja, das sagt mir zumindestens schon mal das IOMMU funktioniert und die GPU in einer eigenen Gruppe ist was gut ist. Wir können uns dann mal auf die GUI konzentrieren.
 
Ja, das sagt mir zumindestens schon mal das IOMMU funktioniert und die GPU in einer eigenen Gruppe ist was gut ist. Wir können uns dann mal auf die GUI konzentrieren.
Prima, kann ich dazu was beisteuern? Bspw. die Config der VM?
 
Das kann helfen, sollte dieses Problem aber nicht beeinflussen. Momentan möchte ich nur ein Bild von diesem (geöffneten) Auswahlfeld.

Für Passthrough habe ich hier ein paar Tips und Vorschläge.
Dankeschön, ich werde dies heute Abend Mal durchgehen und sehen was sich machen lässt.

Ich habe oben geschrieben, dass ich die durchgeschleifte GPU bei Hardware - Add PCI Device gesucht habe, genau genommen unter dem Eintrag Mapped Device.

War dies möglicherweise nicht der richtige Ort. Soll die GPU vielmehr unter Raw Device stehen, so wie in deinem Link im Abschnitt IOMMU groups PVE GUI zu sehen?
 
Das wird das Problem gewesen sein. RAW Device ist okay für Tests aber für die Produktion ist Mapping meine Empfehlung. Das muss via Datacenter > Resource Mappings konfiguriert werden. Da wird im verlinkten Artikel aber auch darauf hingewiesen. Bitte nicht jede Nachricht zitieren.
 
Last edited:
  • Like
Reactions: MickyF
OK, konnte per VPN soeben vom Handy aus auf den Node zugreifen und dort in Datacenter Ressource Mappings die GPU "freischalten".
Denke es war das Device mit der ID: 0000:02:00.0 da ich dieses anderweitig schon Mal präsentiert bekam.
Ja, ist die richtige ID, weil die Vendor und DeviceId derjenigen entspricht, die bereits ermittelt war.

Anschließend in der Hardware-Einstellung der VM und dort das Device tatsächlich auch gefunden und ich konnte es zuweisen. Die Frage dies sich mir noch stellt: Muss ich die Einstellung PCI-Express dort aktivieren oder nicht? Bringt dies einen Vorteil oder eher Nachteil.

Ob die Grafikkarte dann auch tatsächlich von Immich verwendet wird, wird sich später dann herausstellen, die Voraussetzungen sind meiner Meinung nach aber jetzt gegeben.
 
Passing through devices as PCIe just sets a flag for the guest to tell it that the device is a PCIe device instead of a "really fast legacy PCI device". Some guest applications benefit from this.
Quelle: https://pve.proxmox.com/wiki/PCI(e)_Passthrough
Ob es in deinem Fall notwendig ist weiß ich nicht. Ich würde es aktiviert lassen und bei Problemen ohne testen. Innerhalb der VM muss halt noch der NVIDIA Treiber installiert sein. Ich habe bei Bedarf auch dafür eine Anleitung: https://gist.github.com/Impact123/3...e3#install-nvidia-driversmodules-via-run-file
 
Last edited:
  • Like
Reactions: MickyF