Hoe Proxmox VE 8 te configureren voor PCI/PCIE en NVIDIA GPU Passthrough

Hoe Proxmox Ve 8 Te Configureren Voor Pci Pcie En Nvidia Gpu Passthrough



Proxmox VE 8 is een van de beste open-source en gratis Type-I-hypervisors die er zijn voor het uitvoeren van QEMU/KVM virtuele machines (VM's) en LXC-containers. Het heeft een mooie webbeheerinterface en veel functies.

Een van de meest verbazingwekkende kenmerken van Proxmox VE is dat het PCI/PCIE-apparaten (dat wil zeggen een NVIDIA GPU) van uw computer naar Proxmox VE virtuele machines (VM's) kan doorgeven. De PCI/PCIE-passthrough wordt steeds beter met nieuwere Proxmox VE-releases. Op het moment dat we dit schrijven is de nieuwste versie van Proxmox VE Proxmox VE v8.1 en deze biedt geweldige PCI/PCIE-passthrough-ondersteuning.







In dit artikel laat ik u zien hoe u uw Proxmox VE 8-host/server kunt configureren voor PCI/PCIE-passthrough en hoe u uw NVIDIA GPU kunt configureren voor PCIE-passthrough op Proxmox VE 8 virtuele machines (VM's).





Inhoudsopgave

  1. Virtualisatie inschakelen vanaf de BIOS/UEFI-firmware van uw moederbord
  2. Proxmox VE 8 installeren
  3. Proxmox VE 8 Community-opslagplaatsen inschakelen
  4. Updates installeren op Proxmox VE 8
  5. IOMMU inschakelen via de BIOS/UEFI-firmware van uw moederbord
  6. IOMMU inschakelen op Proxmox VE 8
  7. Controleren of IOMMU is ingeschakeld op Proxmox VE 8
  8. VFIO-kernelmodules laden op Proxmox VE 8
  9. IOMMU-groepen vermelden op Proxmox VE 8
  10. Controleren of uw NVIDIA GPU kan worden doorgestuurd naar een Proxmox VE 8 virtuele machine (VM)
  11. Controleren of de kernelmodules op de zwarte lijst staan ​​voor PCI/PCIE Passthrough op Proxmox VE 8
  12. Op de zwarte lijst zetten van vereiste kernelmodules voor PCI/PCIE-doorvoer op Proxmox VE 8
  13. Uw NVIDIA GPU configureren om de VFIO-kernelmodule op Proxmox VE 8 te gebruiken
  14. Voer de NVIDIA GPU door naar een Proxmox VE 8 virtuele machine (VM)
  15. Heeft u nog steeds problemen met PCI/PCIE Passthrough op Proxmox VE 8 virtuele machines (VM's)?
  16. Conclusie
  17. Referenties





Virtualisatie inschakelen vanaf de BIOS/UEFI-firmware van uw moederbord

Voordat u Proxmox VE 8 op uw computer/server kunt installeren, moet u de hardwarevirtualisatiefunctie van uw processor inschakelen via de BIOS/UEFI-firmware van uw moederbord. Het proces is verschillend voor verschillende moederborden. Dus als u hulp nodig heeft bij het inschakelen van hardwarevirtualisatie op uw moederbord, lees dit artikel .



Proxmox VE 8 installeren

Proxmox VE 8 kan gratis worden gedownload, geïnstalleerd en gebruikt. Zorg ervoor dat u Proxmox VE 8 op uw computer installeert voordat u aan de slag gaat. Als u daarbij hulp nodig heeft, lees dit artikel .

Proxmox VE 8 Community-opslagplaatsen inschakelen

Zodra Proxmox VE 8 op uw computer/server is geïnstalleerd, zorg er dan voor dat u dit doet schakel de Proxmox VE 8 communitypakketrepository's in .

Standaard zijn Proxmox VE 8 enterprise-pakketrepository's ingeschakeld en kunt u geen updates en bugfixes uit de enterprise-repository's verkrijgen/installeren, tenzij u Proxmox VE 8 enterprise-licenties hebt gekocht. Dus als u Proxmox VE 8 gratis wilt gebruiken, zorg er dan voor dat u dat doet schakel de Proxmox VE 8 communitypakketrepository's in om gratis de nieuwste updates en bugfixes van Proxmox te ontvangen.

Updates installeren op Proxmox VE 8

Zodra je dat hebt gedaan schakelde de Proxmox VE 8 communitypakketrepository's in , zorg ervoor dat installeer alle beschikbare updates op uw Proxmox VE 8-server .

IOMMU inschakelen via de BIOS/UEFI-firmware van uw moederbord

De IOMMU-configuratie is te vinden op verschillende locaties op verschillende moederborden. Om IOMMU op uw moederbord in te schakelen, lees dit artikel .

IOMMU inschakelen op Proxmox VE 8

Zodra IOMMU aan de hardwarekant is ingeschakeld, moet u IOMMU ook aan de softwarekant inschakelen (vanaf Proxmox VE 8).

Om IOMMU vanaf Proxmox VE 8 in te schakelen, moet u de volgende kernel-opstartparameters toevoegen:

Verwerkerleverancier Kernel-opstartparameters om toe te voegen
Intel intel_iommu=aan, iommu=pt
AMD iommu=pt

Om de kernel-opstartparameters van Proxmox VE 8 te wijzigen, opent u het /etc/default/grub bestand als volgt met de nano-teksteditor:

$ nano /etc/default/grub

Aan het einde van de GRUB_CMDLINE_LINUX_DEFAULT , voeg de vereiste kernel-opstartparameters toe om IOMMU in te schakelen, afhankelijk van de processor die u gebruikt.

Omdat ik een AMD-processor gebruik, heb ik alleen de kernel-opstartparameter toegevoegd iommu=pt aan het einde van de GRUB_CMDLINE_LINUX_DEFAULT lijn in de /etc/default/grub bestand.

Als u klaar bent, drukt u op + X gevolgd door EN En om de te redden /etc/default/grub bestand.

Update nu de GRUB-opstartconfiguraties met de volgende opdracht:

$ update-grub2

Zodra de GRUB-opstartconfiguraties zijn bijgewerkt, klikt u op Opnieuw opstarten om uw Proxmox VE 8-server opnieuw op te starten zodat de wijzigingen van kracht worden.

Controleren of IOMMU is ingeschakeld op Proxmox VE 8

Om te controleren of IOMMU is ingeschakeld op Proxmox VE 8, voert u de volgende opdracht uit:

$ dmesg | grep -e DMAR -e IOMMU

Als IOMMU is ingeschakeld, ziet u enkele uitgangen die bevestigen dat IOMMU is ingeschakeld.

Als IOMMU niet is ingeschakeld, ziet u mogelijk geen uitvoer.

Je moet ook de IOMMU Onderbreken opnieuw toewijzen ingeschakeld om PCI/PCIE-passthrough te laten werken.

Om te controleren of IOMMU Interrupt Remapping is ingeschakeld op uw Proxmox VE 8-server, voert u de volgende opdracht uit:

$ dmesg | grep 'opnieuw toewijzen'

Zoals u kunt zien, is IOMMU Interrupt Remapping ingeschakeld op mijn Proxmox VE 8-server.

Bij de meeste moderne AMD- en Intel-processors is IOMMU Interrupt Remapping ingeschakeld. Als u om welke reden dan ook IOMMU Interrupt Remapping niet hebt ingeschakeld, is er een oplossing. U moet Unsafe Interrupts voor VFIO inschakelen. Lees dit artikel voor meer informatie over het inschakelen van onveilige interrupts op uw Proxmox VE 8-server.

VFIO-kernelmodules laden op Proxmox VE 8

De PCI/PCIE-passthrough wordt voornamelijk gedaan door de VFIO-kernelmodules (Virtual Function I/O) op Proxmox VE 8. De VFIO-kernelmodules worden standaard niet geladen tijdens het opstarten op Proxmox VE 8. Maar het is eenvoudig om de VFIO te laden kernelmodules tijdens het opstarten van Proxmox VE 8.

Open eerst de /etc/modules-load.d/vfio.conf bestand met de nano teksteditor als volgt:

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

Typ de volgende regels in het /etc/modules-load.d/vfio.conf bestand.

vfio

vfio_iommu_type1

vfio_pci

Als u klaar bent, drukt u op + X gevolgd door EN En om de wijzigingen op te slaan.

Werk nu de initramfs van uw Proxmox VE 8-installatie bij met de volgende opdracht:

$ update-initramfs -u -k alles

Zodra de initramfs zijn bijgewerkt, klikt u op Opnieuw opstarten om uw Proxmox VE 8-server opnieuw op te starten zodat de wijzigingen van kracht worden.

Zodra uw Proxmox VE 8-server opstart, zou u moeten zien dat alle vereiste VFIO-kernelmodules zijn geladen.

$ lsmod | greep vfio

IOMMU-groepen vermelden op Proxmox VE 8

Om PCI/PCIE-apparaten op Proxmox VE 8 virtuele machines (VM's) door te geven, moet u de IOMMU-groepen van uw PCI/PCIE-apparaten regelmatig controleren. Om het controleren op IOMMU-groepen gemakkelijker te maken, besloot ik een shellscript te schrijven (ik heb het van GitHub, maar ik kan me de naam van de originele poster niet herinneren) in het pad /usr/local/bin/print-iommu-groups zodat ik gewoon kan rennen print-iommu-groepen commando en het zal de IOMMU-groepen op de Proxmox VE 8-shell afdrukken.

Maak eerst een nieuw bestand print-iommu-groepen in het pad /usr/lokaal/bin en open het als volgt met de nano-teksteditor:

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

Typ de volgende regels in het print-iommu-groepen bestand:

#!/bin/bash

shopt -S nulglob

voor G in ` vinden / sys / kern / iommu_groups /* -maximale diepte 0 -type D | soort -IN ` ; Doen

echo 'IOMMU-groep ${g##*/} :'

voor D in $g / apparaten /* ; Doen

echo -Het is ' \T $(lspci -nns ${d##*/}) '

klaar ;

klaar ;

Als u klaar bent, drukt u op + X gevolgd door EN En om de wijzigingen in de print-iommu-groepen bestand.

Maak de print-iommu-groepen scriptbestand uitvoerbaar met de volgende opdracht:

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

Nu kunt u de print-iommu-groepen opdracht als volgt om de IOMMU-groepen af ​​te drukken van de PCI/PCIE-apparaten die op uw Proxmox VE 8-server zijn geïnstalleerd:

$ print-iommu-groepen

Zoals u kunt zien, worden de IOMMU-groepen van de PCI/PCIE-apparaten die op mijn Proxmox VE 8-server zijn geïnstalleerd afgedrukt.

Controleren of uw NVIDIA GPU kan worden doorgestuurd naar een Proxmox VE 8 virtuele machine (VM)

Om een ​​PCI/PCIE-apparaat door te geven aan een Proxmox VE 8 virtuele machine (VM), moet het zich in zijn eigen IOMMU-groep bevinden. Als 2 of meer PCI/PCIE-apparaten een IOMMU-groep delen, kunt u geen van de PCI/PCIE-apparaten van die IOMMU-groep doorgeven aan Proxmox VE 8 virtuele machines (VM's).

Dus als uw NVIDIA GPU en het bijbehorende audioapparaat zich in een eigen IOMMU-groep bevinden, kunt u de NVIDIA GPU doorgeven aan alle Proxmox VE 8 virtuele machines (VM's).

Op mijn Proxmox VE 8-server gebruik ik een MSI X570 ACE-moederbord gecombineerd met een Ryzen 3900X-processor en Gigabyte RTX 4070 NVIDIA GPU. Volgens de IOMMU-groepen van mijn systeem kan ik de NVIDIA RTX 4070 GPU (IOMMU Group 21), RTL8125 2.5Gbe Ethernet Controller (IOMMU Group 20), Intel I211 Gigabit Ethernet Controller (IOMMU Group 19), een USB 3.0-controller ( IOMMU Groep 24) en de ingebouwde HD Audio Controller (IOMMU Groep 25).

$ print-iommu-groepen

Omdat de belangrijkste focus van dit artikel ligt op het configureren van Proxmox VE 8 voor het doorgeven via de NVIDIA GPU naar Proxmox VE 8 virtuele machines, moeten de NVIDIA GPU en het bijbehorende audioapparaat zich in hun eigen IOMMU-groep bevinden.

Controleren of de kernelmodules op de zwarte lijst staan ​​voor PCI/PCIE Passthrough op Proxmox VE 8

Om een ​​PCI/PCIE-apparaat op een Proxmox VE 8 virtuele machine (VM) door te geven, moet u ervoor zorgen dat Proxmox VE het apparaat dwingt de VFIO-kernelmodule te gebruiken in plaats van de originele kernelmodule.

Om erachter te komen welke kernelmodule uw PCI/PCIE-apparaten gebruiken, moet u de leveranciers-ID en apparaat-ID van deze PCI/PCIE-apparaten kennen. U kunt de leveranciers-ID en apparaat-ID van de PCI/PCIE-apparaten vinden met behulp van de print-iommu-groepen commando.

$ print-iommu-groepen

De leveranciers-ID en apparaat-ID van mijn NVIDIA RTX 4070 GPU zijn bijvoorbeeld 10de:2786 en het is een audioapparaat 10de:22 v. Chr .

Om de kernelmodule te vinden, een PCI/PCIE-apparaat 10de:2786 (mijn NVIDIA RTX 4070 GPU) gebruikt, voer de lspci opdracht als volgt:

$ lspci -v -d 10de:2786

Zoals je kunt zien, gebruikt mijn NVIDIA RTX 4070 GPU de nvidiafb En nieuw kernelmodules standaard. Ze kunnen op dit moment dus niet worden doorgegeven aan een Proxmox VE 8 virtuele machine (VM).

Het audioapparaat van mijn NVIDIA RTX 4070 GPU gebruikt de snd_hda_intel kernelmodule. Het kan dus op dit moment ook niet worden doorgegeven op een Proxmox VE 8 virtuele machine.

$ lspci -v -d 10de:22bc

Dus om mijn NVIDIA RTX 4070 GPU en het bijbehorende audioapparaat op een Proxmox VE 8 virtuele machine (VM) door te geven, moet ik de nvidiafb , nieuw , En snd_hda_intel kernelmodules en configureer mijn NVIDIA RTX 4070 GPU en het audioapparaat om de vfio-pci kernelmodule.

Op de zwarte lijst zetten van vereiste kernelmodules voor PCI/PCIE-doorvoer op Proxmox VE 8

Om kernelmodules op Proxmox VE 8 op de zwarte lijst te zetten, opent u het /etc/modprobe.d/blacklist.conf bestand als volgt met de nano-teksteditor:

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

Om de kernelmodules op de zwarte lijst te zetten nieuw , nvidiafb , En snd_hda_intel kernelmodules (om NVIDIA GPU door te geven), voeg de volgende regels toe in de /etc/modprobe.d/blacklist.conf bestand:

zwarte lijst nouveau

zwarte lijst nvidiafb

zwarte lijst snd_hda_intel

Als u klaar bent, drukt u op + X gevolgd door EN En om de te redden /etc/modprobe.d/blacklist.conf bestand.

Uw NVIDIA GPU configureren om de VFIO-kernelmodule op Proxmox VE 8 te gebruiken

Om het PCI/PCIE-apparaat (dat wil zeggen uw NVIDIA GPU) te configureren om de VFIO-kernelmodule te gebruiken, moet u hun leveranciers-ID en apparaat-ID kennen.

In dit geval zijn de leveranciers-ID en apparaat-ID van mijn NVIDIA RTX 4070 GPU en het bijbehorende audioapparaat 10de:2786 En 10de:22 v. Chr .

Om uw NVIDIA GPU te configureren om de VFIO-kernelmodule te gebruiken, opent u het /etc/modprobe.d/vfio.conf bestand als volgt met de nano-teksteditor:

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

Om uw NVIDIA GPU en het bijbehorende audioapparaat te configureren met de : 10de:2786 En 10de:22 v. Chr (laten we zeggen) om respectievelijk de VFIO-kernelmodule te gebruiken, voegt u de volgende regel toe aan de /etc/modprobe.d/vfio.conf bestand.

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

Als u klaar bent, drukt u op + X gevolgd door EN En om de te redden /etc/modprobe.d/vfio.conf bestand.

Update nu de initramfs van Proxmove VE 8 met de volgende opdracht:

$ update-initramfs -u -k alles

Zodra initramfs is bijgewerkt, klikt u op Opnieuw opstarten om uw Proxmox VE 8-server opnieuw op te starten zodat de wijzigingen van kracht worden.

Zodra uw Proxmox VE 8-server opstart, zou u moeten zien dat uw NVIDIA GPU en het bijbehorende audioapparaat ( 10de:2786 En 10de:22 v. Chr in mijn geval) gebruiken de vfio-pci kernelmodule. Nu is uw NVIDIA GPU klaar om te worden doorgegeven aan een Proxmox VE 8 virtuele machine.

$ lspci -v -d 10de:2786

$ lspci -v -d 10de:22bc

Voer de NVIDIA GPU door naar een Proxmox VE 8 virtuele machine (VM)

Nu uw NVIDIA GPU klaar is voor passthrough op Proxmox VE 8 virtuele machines (VM's), kunt u uw NVIDIA GPU doorgeven op de gewenste Proxmox VE 8 virtuele machine en de NVIDIA GPU-stuurprogramma's installeren, afhankelijk van het besturingssysteem dat u gebruikt. die virtuele machine zoals gewoonlijk.

Voor gedetailleerde informatie over hoe u uw NVIDIA GPU kunt doorgeven op een Proxmox VE 8 virtuele machine (VM) waarop verschillende besturingssystemen zijn geïnstalleerd, leest u een van de volgende artikelen:

  • Een NVIDIA GPU doorgeven aan een Windows 11 Proxmox VE 8 virtuele machine (VM)
  • Een NVIDIA GPU doorgeven aan een Ubuntu 24.04 LTS Proxmox VE 8 virtuele machine (VM)
  • Een NVIDIA GPU doorgeven aan een LinuxMint 21 Proxmox VE 8 virtuele machine (VM)
  • Een NVIDIA GPU doorgeven aan een Debian 12 Proxmox VE 8 virtuele machine (VM)
  • Een NVIDIA GPU doorgeven aan een Elementair OS 8 Proxmox VE 8 Virtual Machine (VM)
  • Hoe een NVIDIA GPU door te geven aan een Fedora 39+ Proxmox VE 8 virtuele machine (VM)
  • Een NVIDIA GPU doorgeven op een Arch Linux Proxmox VE 8 virtuele machine (VM)
  • Een NVIDIA GPU doorgeven op een Red Hat Enterprise Linux 9 (RHEL 9) Proxmox VE 8 Virtual Machine (VM)

Heeft u nog steeds problemen met PCI/PCIE Passthrough op Proxmox VE 8 virtuele machines (VM's)?

Als PCI/PCIE-passthrough nog steeds niet voor u werkt, zelfs nadat u alles in dit artikel correct hebt geprobeerd, zorg er dan voor dat u dat doet probeer enkele Proxmox VE PCI/PCIE passthrough-trucs en/of oplossingen uit die u kunt gebruiken om PCI/PCIE passthrough op uw hardware te laten werken.

Conclusie

In dit artikel heb ik u laten zien hoe u uw Proxmox VE 8-server kunt configureren voor PCI/PCIE-passthrough, zodat u PCI/PCIE-apparaten (dat wil zeggen uw NVIDIA GPU) kunt doorgeven aan uw Proxmox VE 8 virtuele machines (VM's). Ik heb je ook laten zien hoe je de kernelmodules kunt achterhalen die je op de zwarte lijst moet zetten en hoe je ze op de zwarte lijst kunt zetten voor een succesvolle passthrough van je gewenste PCI/PCIE-apparaten (dat wil zeggen je NVIDIA GPU) naar een Proxmox VE 8 virtuele machine. Ten slotte heb ik u laten zien hoe u uw gewenste PCI/PCIE-apparaten (dat wil zeggen uw NVIDIA GPU) kunt configureren om de VFIO-kernelmodules te gebruiken, wat ook een essentiële stap is voor een succesvolle passthrough van uw gewenste PCI/PCIE-apparaten (dat wil zeggen uw NVIDIA GPU ) naar een Proxmox VE 8 virtuele machine (VM).

Referenties

  1. PCI(e)-doorvoer – Proxmox VE
  2. PCI-doorvoer – Proxmox VE
  3. De ultieme virtuele gamingmachine op proxmox – YouTube