So konfigurieren Sie Proxmox VE 8 für PCI/PCIE und NVIDIA GPU Passthrough

So Konfigurieren Sie Proxmox Ve 8 Fur Pci Pcie Und Nvidia Gpu Passthrough



Proxmox VE 8 ist einer der besten Open-Source- und kostenlosen Typ-I-Hypervisoren für die Ausführung virtueller QEMU/KVM-Maschinen (VMs) und LXC-Container. Es verfügt über eine schöne Webverwaltungsoberfläche und viele Funktionen.

Eine der erstaunlichsten Funktionen von Proxmox VE besteht darin, dass es PCI/PCIE-Geräte (d. h. eine NVIDIA-GPU) von Ihrem Computer an virtuelle Maschinen (VMs) von Proxmox VE weiterleiten kann. Der PCI/PCIE-Passthrough wird mit neueren Proxmox VE-Releases immer besser. Zum Zeitpunkt des Verfassens dieses Artikels ist Proxmox VE v8.1 die neueste Version von Proxmox VE und bietet hervorragende PCI/PCIE-Passthrough-Unterstützung.







In diesem Artikel zeige ich Ihnen, wie Sie Ihren Proxmox VE 8-Host/Server für PCI/PCIE-Passthrough konfigurieren und Ihre NVIDIA-GPU für PCIE-Passthrough auf virtuellen Proxmox VE 8-Maschinen (VMs) konfigurieren.





Inhaltsverzeichnis

  1. Aktivieren der Virtualisierung über die BIOS/UEFI-Firmware Ihres Motherboards
  2. Proxmox VE 8 installieren
  3. Aktivieren von Proxmox VE 8 Community Repositories
  4. Updates auf Proxmox VE 8 installieren
  5. Aktivieren Sie IOMMU über die BIOS/UEFI-Firmware Ihres Motherboards
  6. IOMMU auf Proxmox VE 8 aktivieren
  7. Überprüfen, ob IOMMU auf Proxmox VE 8 aktiviert ist
  8. Laden von VFIO-Kernelmodulen auf Proxmox VE 8
  9. Auflisten von IOMMU-Gruppen auf Proxmox VE 8
  10. Prüfen, ob Ihre NVIDIA-GPU Passthrough zu einer virtuellen Proxmox VE 8-Maschine (VM) durchführen kann
  11. Suche nach Kernelmodulen, die für PCI/PCIE-Passthrough auf Proxmox VE 8 auf die schwarze Liste gesetzt werden sollen
  12. Erforderliche Kernelmodule für PCI/PCIE-Passthrough auf Proxmox VE 8 auf die schwarze Liste setzen
  13. Konfigurieren Ihrer NVIDIA-GPU für die Verwendung des VFIO-Kernelmoduls auf Proxmox VE 8
  14. Passthrough der NVIDIA-GPU an eine virtuelle Proxmox VE 8-Maschine (VM)
  15. Haben Sie immer noch Probleme mit PCI/PCIE-Passthrough auf virtuellen Proxmox VE 8-Maschinen (VMs)?
  16. Abschluss
  17. Verweise





Aktivieren der Virtualisierung über die BIOS/UEFI-Firmware Ihres Motherboards

Bevor Sie Proxmox VE 8 auf Ihrem Computer/Server installieren können, müssen Sie die Hardware-Virtualisierungsfunktion Ihres Prozessors über die BIOS/UEFI-Firmware Ihres Motherboards aktivieren. Der Vorgang ist bei verschiedenen Motherboards unterschiedlich. Wenn Sie also Hilfe bei der Aktivierung der Hardware-Virtualisierung auf Ihrem Motherboard benötigen, wenden Sie sich an uns. Lesen Sie diesen Artikel .



Proxmox VE 8 installieren

Proxmox VE 8 kann kostenlos heruntergeladen, installiert und verwendet werden. Bevor Sie beginnen, stellen Sie sicher, dass Sie Proxmox VE 8 auf Ihrem Computer installieren. Wenn Sie dabei Hilfe benötigen, Lesen Sie diesen Artikel .

Aktivieren von Proxmox VE 8 Community Repositories

Sobald Sie Proxmox VE 8 auf Ihrem Computer/Server installiert haben, stellen Sie sicher, dass dies der Fall ist Aktivieren Sie die Proxmox VE 8 Community-Paket-Repositorys .

Standardmäßig sind Proxmox VE 8 Enterprise-Paket-Repositories aktiviert und Sie können keine Updates und Fehlerbehebungen aus den Enterprise-Repositories abrufen/installieren, es sei denn, Sie haben Proxmox VE 8 Enterprise-Lizenzen erworben. Wenn Sie also Proxmox VE 8 kostenlos nutzen möchten, sollten Sie dies unbedingt tun Aktivieren Sie die Proxmox VE 8 Community-Paket-Repositorys um kostenlos die neuesten Updates und Fehlerbehebungen von Proxmox zu erhalten.

Updates auf Proxmox VE 8 installieren

Sobald Sie es getan haben aktivierte die Proxmox VE 8 Community-Paket-Repositorys , stellen Sie sicher, dass Installieren Sie alle verfügbaren Updates auf Ihrem Proxmox VE 8 Server .

Aktivieren Sie IOMMU über die BIOS/UEFI-Firmware Ihres Motherboards

Die IOMMU-Konfiguration befindet sich an verschiedenen Stellen auf verschiedenen Motherboards. Um IOMMU auf Ihrem Motherboard zu aktivieren, Lesen Sie diesen Artikel .

IOMMU auf Proxmox VE 8 aktivieren

Sobald IOMMU auf der Hardwareseite aktiviert ist, müssen Sie IOMMU auch auf der Softwareseite (ab Proxmox VE 8) aktivieren.

Um IOMMU von Proxmox VE 8 aus zu aktivieren, müssen Sie die folgenden Kernel-Boot-Parameter hinzufügen:

Prozessoranbieter Hinzuzufügende Kernel-Boot-Parameter
Intel intel_iommu=on, iommu=pt
AMD iommu=pt

Um die Kernel-Boot-Parameter von Proxmox VE 8 zu ändern, öffnen Sie die /etc/default/grub Datei mit dem Nano-Texteditor wie folgt:

$ nano /etc/default/grub

Am Ende von GRUB_CMDLINE_LINUX_DEFAULT , fügen Sie je nach verwendetem Prozessor die erforderlichen Kernel-Boot-Parameter hinzu, um IOMMU zu aktivieren.

Da ich einen AMD-Prozessor verwende, habe ich nur den Kernel-Boot-Parameter hinzugefügt iommu=pt am Ende von GRUB_CMDLINE_LINUX_DEFAULT Linie in der /etc/default/grub Datei.

Wenn Sie fertig sind, drücken Sie + X gefolgt von UND Und um das zu retten /etc/default/grub Datei.

Aktualisieren Sie nun die GRUB-Boot-Konfigurationen mit dem folgenden Befehl:

$ update-grub2

Sobald die GRUB-Boot-Konfigurationen aktualisiert sind, klicken Sie auf Neustart Sie müssen Ihren Proxmox VE 8-Server neu starten, damit die Änderungen wirksam werden.

Überprüfen, ob IOMMU auf Proxmox VE 8 aktiviert ist

Um zu überprüfen, ob IOMMU auf Proxmox VE 8 aktiviert ist, führen Sie den folgenden Befehl aus:

$ dmesg | grep -e DMAR -e IOMMU

Wenn IOMMU aktiviert ist, werden einige Ausgaben angezeigt, die bestätigen, dass IOMMU aktiviert ist.

Wenn IOMMU nicht aktiviert ist, werden möglicherweise keine Ausgaben angezeigt.

Sie müssen auch das haben IOMMU-Interrupt-Neuzuordnung aktiviert, damit PCI/PCIE-Passthrough funktioniert.

Um zu überprüfen, ob IOMMU Interrupt Remapping auf Ihrem Proxmox VE 8-Server aktiviert ist, führen Sie den folgenden Befehl aus:

$ dmesg | grep 'remapping'

Wie Sie sehen können, ist IOMMU Interrupt Remapping auf meinem Proxmox VE 8-Server aktiviert.

Bei den meisten modernen AMD- und Intel-Prozessoren ist IOMMU Interrupt Remapping aktiviert. Wenn Sie aus irgendeinem Grund IOMMU Interrupt Remapping nicht aktiviert haben, gibt es eine Problemumgehung. Sie müssen unsichere Interrupts für VFIO aktivieren. Lesen Sie diesen Artikel Weitere Informationen zum Aktivieren unsicherer Interrupts auf Ihrem Proxmox VE 8-Server.

Laden von VFIO-Kernelmodulen auf Proxmox VE 8

Der PCI/PCIE-Passthrough erfolgt hauptsächlich über die VFIO-Kernelmodule (Virtual Function I/O) auf Proxmox VE 8. Die VFIO-Kernelmodule werden auf Proxmox VE 8 standardmäßig nicht beim Booten geladen. Das Laden des VFIO ist jedoch einfach Kernel-Module beim Booten auf Proxmox VE 8.

Öffnen Sie zunächst die /etc/modules-load.d/vfio.conf Datei mit der Nano Texteditor wie folgt:

$ nano /etc/modules-load.d/vfio.conf

Geben Sie die folgenden Zeilen ein /etc/modules-load.d/vfio.conf Datei.

vfio

vfio_iommu_type1

vfio_pci

Wenn Sie fertig sind, drücken Sie + X gefolgt von UND Und um die Änderungen zu speichern.

Aktualisieren Sie nun die Initramfs Ihrer Proxmox VE 8-Installation mit dem folgenden Befehl:

$ update-initramfs -u -k all

Sobald die initramfs aktualisiert sind, klicken Sie auf Neustart Sie müssen Ihren Proxmox VE 8-Server neu starten, damit die Änderungen wirksam werden.

Sobald Ihr Proxmox VE 8-Server startet, sollten Sie sehen, dass alle erforderlichen VFIO-Kernelmodule geladen sind.

$ lsmod | grip vfio

Auflisten von IOMMU-Gruppen auf Proxmox VE 8

Um PCI/PCIE-Geräte auf virtuellen Proxmox VE 8-Maschinen (VMs) weiterzuleiten, müssen Sie die IOMMU-Gruppen Ihrer PCI/PCIE-Geräte regelmäßig überprüfen. Um die Suche nach IOMMU-Gruppen zu vereinfachen, habe ich beschlossen, ein Shell-Skript (ich habe es von GitHub erhalten, kann mich aber nicht an den Namen des Originalposters erinnern) in den Pfad zu schreiben /usr/local/bin/print-iommu-groups damit ich einfach laufen kann print-iommu-groups Befehl und es werden die IOMMU-Gruppen auf der Proxmox VE 8-Shell gedruckt.

Erstellen Sie zunächst eine neue Datei print-iommu-groups in dem Weg /usr/local/bin und öffnen Sie es mit dem Nano-Texteditor wie folgt:

$ nano /usr/local/bin/print-iommu-groups

Geben Sie die folgenden Zeilen ein print-iommu-groups Datei:

#!/bin/bash

Geschäfte -S nullglob

für G In ` finden / sys / Kernel / iommu_groups /* -maximale Tiefe 0 -Typ D | Sortieren -IN ` ; Tun

Echo „IOMMU-Gruppe ${g##*/} :'

für D In $g / Geräte /* ; Tun

Echo -Es ist ' \T $(lspci -nns ${d##*/}) '

Erledigt ;

Erledigt ;

Wenn Sie fertig sind, drücken Sie + X gefolgt von UND Und um die Änderungen zu speichern print-iommu-groups Datei.

Mach das print-iommu-groups Skriptdatei mit dem folgenden Befehl ausführbar:

$ chmod +x /usr/local/bin/print-iommu-groups

Jetzt können Sie das ausführen print-iommu-groups Befehl wie folgt, um die IOMMU-Gruppen der auf Ihrem Proxmox VE 8-Server installierten PCI/PCIE-Geräte zu drucken:

$ print-iommu-groups

Wie Sie sehen können, werden die IOMMU-Gruppen der auf meinem Proxmox VE 8-Server installierten PCI/PCIE-Geräte gedruckt.

Prüfen, ob Ihre NVIDIA-GPU Passthrough zu einer virtuellen Proxmox VE 8-Maschine (VM) durchführen kann

Um ein PCI/PCIE-Gerät an eine virtuelle Proxmox VE 8-Maschine (VM) weiterzuleiten, muss es sich in einer eigenen IOMMU-Gruppe befinden. Wenn zwei oder mehr PCI/PCIE-Geräte eine IOMMU-Gruppe teilen, können Sie keines der PCI/PCIE-Geräte dieser IOMMU-Gruppe an virtuelle Proxmox VE 8-Maschinen (VMs) weiterleiten.

Wenn sich Ihre NVIDIA-GPU und ihr Audiogerät also in einer eigenen IOMMU-Gruppe befinden, können Sie die NVIDIA-GPU an alle virtuellen Maschinen (VMs) von Proxmox VE 8 weiterleiten.

Auf meinem Proxmox VE 8-Server verwende ich ein MSI X570 ACE-Motherboard gepaart mit einem Ryzen 3900X-Prozessor und einer Gigabyte RTX 4070 NVIDIA-GPU. Gemäß den IOMMU-Gruppen meines Systems kann ich die NVIDIA RTX 4070-GPU (IOMMU-Gruppe 21), den RTL8125 2.5Gbe Ethernet Controller (IOMMU-Gruppe 20), den Intel I211 Gigabit Ethernet Controller (IOMMU-Gruppe 19) und einen USB 3.0-Controller ( IOMMU-Gruppe 24) und der Onboard HD Audio Controller (IOMMU-Gruppe 25).

$ print-iommu-groups

Da der Schwerpunkt dieses Artikels auf der Konfiguration von Proxmox VE 8 für die Weitergabe der NVIDIA-GPU an virtuelle Proxmox VE 8-Maschinen liegt, müssen sich die NVIDIA-GPU und ihr Audiogerät in einer eigenen IOMMU-Gruppe befinden.

Suche nach Kernelmodulen, die für PCI/PCIE-Passthrough auf Proxmox VE 8 auf die schwarze Liste gesetzt werden sollen

Um ein PCI/PCIE-Gerät auf einer virtuellen Maschine (VM) von Proxmox VE 8 durchzuleiten, müssen Sie sicherstellen, dass Proxmox VE die Verwendung des VFIO-Kernelmoduls anstelle seines ursprünglichen Kernelmoduls erzwingt.

Um herauszufinden, welches Kernelmodul Ihre PCI/PCIE-Geräte verwenden, müssen Sie die Hersteller-ID und Geräte-ID dieser PCI/PCIE-Geräte kennen. Die Hersteller-ID und Geräte-ID der PCI/PCIE-Geräte finden Sie über die print-iommu-groups Befehl.

$ print-iommu-groups

Beispielsweise lautet die Hersteller-ID und Geräte-ID meiner NVIDIA RTX 4070-GPU 10de:2786 und sein Audiogerät ist 10de:22 v. Chr .

Um das Kernelmodul zu finden, ist ein PCI/PCIE-Gerät erforderlich 10de:2786 (meine NVIDIA RTX 4070 GPU) verwendet, führen Sie das aus lspci Befehl wie folgt:

$ lspci -v -d 10de:2786

Wie Sie sehen können, verwendet meine NVIDIA RTX 4070 GPU die nvidiafb Und neu Kernel-Module standardmäßig. Daher können sie derzeit nicht an eine virtuelle Maschine (VM) von Proxmox VE 8 übergeben werden.

Das Audiogerät meiner NVIDIA RTX 4070 GPU verwendet das snd_hda_intel Kernelmodul. Daher kann es derzeit auch nicht an eine virtuelle Proxmox VE 8-Maschine weitergegeben werden.

$ lspci -v -d 10de:22bc

Um also meine NVIDIA RTX 4070-GPU und ihr Audiogerät auf einer virtuellen Proxmox VE 8-Maschine (VM) durchzuleiten, muss ich sie auf die schwarze Liste setzen nvidiafb , neu , Und snd_hda_intel Kernel-Module und konfigurieren Sie meine NVIDIA RTX 4070-GPU und ihr Audiogerät für die Verwendung vfio-pci Kernelmodul.

Erforderliche Kernelmodule für PCI/PCIE-Passthrough auf Proxmox VE 8 auf die schwarze Liste setzen

Um Kernel-Module auf Proxmox VE 8 auf die schwarze Liste zu setzen, öffnen Sie die /etc/modprobe.d/blacklist.conf Datei mit dem Nano-Texteditor wie folgt:

$ nano /etc/modprobe.d/blacklist.conf

Um die Kernelmodule auf die schwarze Liste zu setzen neu , nvidiafb , Und snd_hda_intel Kernel-Module (zur Durchleitung der NVIDIA-GPU) hinzufügen, fügen Sie die folgenden Zeilen in die Datei ein /etc/modprobe.d/blacklist.conf Datei:

schwarze Liste im Jugendstil

Nvidiafb auf die schwarze Liste setzen

Blacklist snd_hda_intel

Wenn Sie fertig sind, drücken Sie + X gefolgt von UND Und um das zu retten /etc/modprobe.d/blacklist.conf Datei.

Konfigurieren Ihrer NVIDIA-GPU für die Verwendung des VFIO-Kernelmoduls auf Proxmox VE 8

Um das PCI/PCIE-Gerät (d. h. Ihre NVIDIA-GPU) für die Verwendung des VFIO-Kernelmoduls zu konfigurieren, müssen Sie dessen Hersteller-ID und Geräte-ID kennen.

In diesem Fall sind es die Hersteller-ID und die Geräte-ID meiner NVIDIA RTX 4070 GPU und ihres Audiogeräts 10de:2786 Und 10de:22 v. Chr .

Um Ihre NVIDIA-GPU für die Verwendung des VFIO-Kernelmoduls zu konfigurieren, öffnen Sie die /etc/modprobe.d/vfio.conf Datei mit dem Nano-Texteditor wie folgt:

$ nano /etc/modprobe.d/vfio.conf

So konfigurieren Sie Ihre NVIDIA-GPU und ihr Audiogerät mit der : 10de:2786 Und 10de:22 v. Chr (Sagen wir) Um das VFIO-Kernelmodul zu verwenden, fügen Sie die folgende Zeile hinzu /etc/modprobe.d/vfio.conf Datei.

Optionen vfio-pci ids=10de:2786,10de:22bc

Wenn Sie fertig sind, drücken Sie + X gefolgt von UND Und um das zu retten /etc/modprobe.d/vfio.conf Datei.

Aktualisieren Sie nun die Initramfs von Proxmove VE 8 mit dem folgenden Befehl:

$ update-initramfs -u -k all

Sobald initramfs aktualisiert ist, klicken Sie auf Neustart Sie müssen Ihren Proxmox VE 8-Server neu starten, damit die Änderungen wirksam werden.

Sobald Ihr Proxmox VE 8-Server startet, sollten Sie sehen, dass Ihre NVIDIA-GPU und ihr Audiogerät ( 10de:2786 Und 10de:22 v. Chr in meinem Fall) verwenden die vfio-pci Kernelmodul. Jetzt kann Ihre NVIDIA-GPU an eine virtuelle Proxmox VE 8-Maschine übergeben werden.

$ lspci -v -d 10de:2786

$ lspci -v -d 10de:22bc

Passthrough der NVIDIA-GPU an eine virtuelle Proxmox VE 8-Maschine (VM)

Da Ihre NVIDIA-GPU nun für das Passthrough auf virtuellen Proxmox VE 8-Maschinen (VMs) bereit ist, können Sie Ihre NVIDIA-GPU auf Ihrer gewünschten virtuellen Proxmox VE 8-Maschine weiterleiten und die NVIDIA-GPU-Treiber je nach dem von Ihnen verwendeten Betriebssystem installieren diese virtuelle Maschine wie gewohnt.

Ausführliche Informationen zum Passthrough Ihrer NVIDIA-GPU auf einer virtuellen Maschine (VM) Proxmox VE 8 mit verschiedenen installierten Betriebssystemen finden Sie in einem der folgenden Artikel:

  • So übergeben Sie eine NVIDIA-GPU an eine virtuelle Maschine (VM) mit Windows 11 Proxmox VE 8
  • So übergeben Sie eine NVIDIA-GPU an eine virtuelle Maschine (VM) mit Ubuntu 24.04 LTS Proxmox VE 8
  • So übergeben Sie eine NVIDIA-GPU an eine virtuelle LinuxMint 21 Proxmox VE 8-Maschine (VM)
  • So übergeben Sie eine NVIDIA-GPU an eine virtuelle Debian 12 Proxmox VE 8-Maschine (VM)
  • So übergeben Sie eine NVIDIA-GPU an eine virtuelle Maschine (VM) mit Elementary OS 8 Proxmox VE 8
  • So übergeben Sie eine NVIDIA-GPU an eine virtuelle Maschine (VM) mit Fedora 39+ Proxmox VE 8
  • So führen Sie eine NVIDIA-GPU auf einer virtuellen Arch Linux Proxmox VE 8-Maschine (VM) durch
  • So führen Sie eine NVIDIA-GPU auf einer virtuellen Maschine (VM) mit Red Hat Enterprise Linux 9 (RHEL 9) Proxmox VE 8 durch

Haben Sie immer noch Probleme mit PCI/PCIE-Passthrough auf virtuellen Proxmox VE 8-Maschinen (VMs)?

Selbst nachdem Sie alles, was in diesem Artikel aufgeführt ist, richtig ausprobiert haben, stellen Sie sicher, dass PCI/PCIE-Passthrough bei Ihnen immer noch nicht funktioniert Probieren Sie einige der Proxmox VE PCI/PCIE-Passthrough-Tricks und/oder Workarounds aus mit dem Sie PCI/PCIE-Passthrough auf Ihrer Hardware zum Laufen bringen können.

Abschluss

In diesem Artikel habe ich Ihnen gezeigt, wie Sie Ihren Proxmox VE 8-Server für PCI/PCIE-Passthrough konfigurieren, damit Sie PCI/PCIE-Geräte (d. h. Ihre NVIDIA-GPU) an Ihre virtuellen Proxmox VE 8-Maschinen (VMs) weiterleiten können. Ich habe Ihnen auch gezeigt, wie Sie die Kernel-Module herausfinden, die Sie auf die schwarze Liste setzen müssen, und wie Sie sie für einen erfolgreichen Passthrough Ihrer gewünschten PCI/PCIE-Geräte (d. h. Ihrer NVIDIA-GPU) zu einer virtuellen Proxmox VE 8-Maschine auf die schwarze Liste setzen. Abschließend habe ich Ihnen gezeigt, wie Sie Ihre gewünschten PCI/PCIE-Geräte (d. h. Ihre NVIDIA-GPU) für die Verwendung der VFIO-Kernelmodule konfigurieren. Dies ist auch ein wesentlicher Schritt für einen erfolgreichen Passthrough Ihrer gewünschten PCI/PCIE-Geräte (d. h. Ihrer NVIDIA-GPU). ) auf eine virtuelle Proxmox VE 8-Maschine (VM).

Verweise

  1. PCI(e) Passthrough – Proxmox VE
  2. PCI-Passthrough – Proxmox VE
  3. Die ultimative virtuelle Gaming-Maschine auf Proxmox – YouTube