Cum se configurează Proxmox VE 8 pentru PCI/PCIE și NVIDIA GPU Passthrough

Cum Se Configureaza Proxmox Ve 8 Pentru Pci Pcie Si Nvidia Gpu Passthrough



Proxmox VE 8 este unul dintre cele mai bune hipervizoare de tip I cu sursă deschisă și gratuite pentru rularea mașinilor virtuale (VM) QEMU/KVM și a containerelor LXC. Are o interfață de administrare web frumoasă și o mulțime de funcții.

Una dintre cele mai uimitoare caracteristici ale Proxmox VE este că poate trece prin dispozitivele PCI/PCIE (adică un GPU NVIDIA) de la computer la mașinile virtuale (VM) Proxmox VE. Passthrough-ul PCI/PCIE devine din ce în ce mai bun cu versiunile mai noi Proxmox VE. La momentul scrierii acestui articol, cea mai recentă versiune de Proxmox VE este Proxmox VE v8.1 și are un suport excelent PCI/PCIE passthrough.







În acest articol, vă voi arăta cum să vă configurați gazda/serverul Proxmox VE 8 pentru trecerea PCI/PCIE și cum să configurați GPU-ul NVIDIA pentru trecerea PCIE pe mașinile virtuale (VM) Proxmox VE 8.





Cuprins

  1. Activarea virtualizării din firmware-ul BIOS/UEFI al plăcii de bază
  2. Instalarea Proxmox VE 8
  3. Activarea depozitelor comunitare Proxmox VE 8
  4. Instalarea actualizărilor pe Proxmox VE 8
  5. Activarea IOMMU din firmware-ul BIOS/UEFI al plăcii de bază
  6. Activarea IOMMU pe Proxmox VE 8
  7. Se verifică dacă IOMMU este activat pe Proxmox VE 8
  8. Încărcarea modulelor kernel VFIO pe Proxmox VE 8
  9. Listarea grupurilor IOMMU pe Proxmox VE 8
  10. Verificarea dacă GPU-ul dvs. NVIDIA poate fi transferat la o mașină virtuală (VM) Proxmox VE 8
  11. Verificarea modulelor kernel pe lista neagră pentru PCI/PCIE Passthrough pe Proxmox VE 8
  12. Lista neagră a modulelor Kernel necesare pentru PCI/PCIE Passthrough pe Proxmox VE 8
  13. Configurarea GPU-ului dvs. NVIDIA pentru a utiliza modulul kernel VFIO pe Proxmox VE 8
  14. Trecerea prin GPU-ul NVIDIA la o mașină virtuală (VM) Proxmox VE 8
  15. Încă mai aveți probleme cu PCI/PCIE Passthrough pe mașinile virtuale (VM) Proxmox VE 8?
  16. Concluzie
  17. Referințe





Activarea virtualizării din firmware-ul BIOS/UEFI al plăcii de bază

Înainte de a putea instala Proxmox VE 8 pe computer/server, trebuie să activați caracteristica de virtualizare hardware a procesorului din firmware-ul BIOS/UEFI al plăcii de bază. Procesul este diferit pentru diferite plăci de bază. Deci, dacă aveți nevoie de asistență pentru a activa virtualizarea hardware pe placa de bază, citeste acest articol .



Instalarea Proxmox VE 8

Proxmox VE 8 poate fi descărcat, instalat și utilizat gratuit. Înainte de a începe, asigurați-vă că instalați Proxmox VE 8 pe computer. Dacă aveți nevoie de ajutor în acest sens, citeste acest articol .

Activarea depozitelor comunitare Proxmox VE 8

După ce aveți Proxmox VE 8 instalat pe computer/server, asigurați-vă că activați depozitele de pachete comunitare Proxmox VE 8 .

În mod implicit, depozitele de pachete de întreprindere Proxmox VE 8 sunt activate și nu veți putea obține/instala actualizări și remedieri de erori din arhivele de întreprindere decât dacă ați cumpărat licențe de întreprindere Proxmox VE 8. Deci, dacă doriți să utilizați Proxmox VE 8 gratuit, asigurați-vă că activați depozitele de pachete comunitare Proxmox VE 8 pentru a obține gratuit cele mai recente actualizări și remedieri de erori de la Proxmox.

Instalarea actualizărilor pe Proxmox VE 8

Odată ce ai a activat depozitele de pachete comunitare Proxmox VE 8 , asigura-te ca instalați toate actualizările disponibile pe serverul dvs. Proxmox VE 8 .

Activarea IOMMU din firmware-ul BIOS/UEFI al plăcii de bază

Configurația IOMMU se găsește în diferite locații în diferite plăci de bază. Pentru a activa IOMMU pe placa de bază, citeste acest articol .

Activarea IOMMU pe Proxmox VE 8

Odată ce IOMMU este activat pe partea hardware, trebuie să activați IOMMU și din partea software (de la Proxmox VE 8).

Pentru a activa IOMMU din Proxmox VE 8, trebuie să adăugați următorii parametri de pornire a nucleului:

Furnizor procesor Parametrii de boot kernel de adăugat
Intel intel_iommu=on, iommu=pt
AMD iommu=pt

Pentru a modifica parametrii de boot kernel ai Proxmox VE 8, deschideți /etc/default/grub fișier cu editorul de text nano, după cum urmează:

$ nano /etc/default/grub

La sfârșitul GRUB_CMDLINE_LINUX_DEFAULT , adăugați parametrii necesari de pornire a nucleului pentru activarea IOMMU, în funcție de procesorul pe care îl utilizați.

Deoarece folosesc un procesor AMD, am adăugat doar parametrul de boot kernel iommu=pt la sfârșitul GRUB_CMDLINE_LINUX_DEFAULT linie în /etc/default/grub fişier.

După ce ați terminat, apăsați + X urmată de ȘI și pentru a salva /etc/default/grub fişier.

Acum, actualizați configurațiile de boot GRUB cu următoarea comandă:

$ update-grub2

Odată ce configurațiile de boot GRUB sunt actualizate, faceți clic pe Reporniți pentru a reporni serverul Proxmox VE 8 pentru ca modificările să intre în vigoare.

Se verifică dacă IOMMU este activat pe Proxmox VE 8

Pentru a verifica dacă IOMMU este activat pe Proxmox VE 8, rulați următoarea comandă:

$ dmesg | grep -e DMAR -e IOMMU

Dacă IOMMU este activat, veți vedea câteva ieșiri care confirmă că IOMMU este activat.

Dacă IOMMU nu este activat, este posibil să nu vedeți nicio ieșire.

De asemenea, trebuie să aveți Remaparea întreruperii IOMMU activat pentru ca trecerea PCI/PCIE să funcționeze.

Pentru a verifica dacă IOMMU Interrupt Remapping este activată pe serverul dvs. Proxmox VE 8, executați următoarea comandă:

$ dmesg | grep 'remapping'

După cum puteți vedea, IOMMU Interrupt Remapping este activată pe serverul meu Proxmox VE 8.

Cele mai multe procesoare moderne AMD și Intel vor avea activată IOMMU Interrupt Remapping. Dacă, din orice motiv, nu aveți activată IOMMU Interrupt Remapping, există o soluție. Trebuie să activați întreruperi nesigure pentru VFIO. Citiți acest articol pentru mai multe informații despre activarea întreruperilor nesigure pe serverul dumneavoastră Proxmox VE 8.

Încărcarea modulelor kernel VFIO pe Proxmox VE 8

Transmiterea PCI/PCIE este realizată în principal de modulele kernel-ului VFIO (Virtual Function I/O) de pe Proxmox VE 8. Modulele kernel-ului VFIO nu sunt încărcate implicit la momentul pornirii pe Proxmox VE 8. Dar, este ușor să încărcați VFIO modulele kernel la momentul pornirii pe Proxmox VE 8.

Mai întâi, deschideți /etc/modules-load.d/vfio.conf dosar cu nano editor de text după cum urmează:

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

Introduceți următoarele rânduri în /etc/modules-load.d/vfio.conf fişier.

vfio

vfio_iommu_type1

vfio_pci

După ce ați terminat, apăsați + X urmată de ȘI și pentru a salva modificările.

Acum, actualizați initramfs-ul instalării Proxmox VE 8 cu următoarea comandă:

$ update-initramfs -u -k all

Odată ce initramfs este actualizat, faceți clic pe Reporniți pentru a reporni serverul Proxmox VE 8 pentru ca modificările să intre în vigoare.

Odată ce serverul Proxmox VE 8 pornește, ar trebui să vedeți că sunt încărcate toate modulele necesare kernel-ului VFIO.

$ lsmod | prindere vfio

Listarea grupurilor IOMMU pe Proxmox VE 8

Pentru a trece prin dispozitivele PCI/PCIE de pe mașinile virtuale (VM) Proxmox VE 8, va trebui să verificați destul de des grupurile IOMMU ale dispozitivelor dumneavoastră PCI/PCIE. Pentru a ușura verificarea grupurilor IOMMU, am decis să scriu un script shell (l-am primit de la GitHub, dar nu-mi amintesc numele posterului original) în cale /usr/local/bin/print-iommu-groups ca să pot pur și simplu să alerg print-iommu-groups comanda și va imprima grupurile IOMMU pe shell-ul Proxmox VE 8.

Mai întâi, creați un fișier nou print-iommu-groups în potecă /usr/local/bin și deschideți-l cu editorul de text nano după cum urmează:

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

Introduceți următoarele rânduri în print-iommu-groups fişier:

#!/bin/bash

magazine -s nullglob

pentru g în ` găsi / sys / nucleu / iommu_groups /* -adancime maxima 0 -tip d | fel -ÎN ` ; do

ecou „Grupul IOMMU ${g##*/} :'

pentru d în $g / dispozitive /* ; do

ecou -Este ' \t $(lspci -nns ${d##*/}) '

Terminat ;

Terminat ;

După ce ați terminat, apăsați + X urmată de ȘI și pentru a salva modificările la print-iommu-groups fişier.

print-iommu-groups fișier script executabil cu următoarea comandă:

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

Acum, puteți rula print-iommu-groups comandă după cum urmează pentru a imprima grupurile IOMMU ale dispozitivelor PCI/PCIE instalate pe serverul dumneavoastră Proxmox VE 8:

$ print-iommu-groups

După cum puteți vedea, sunt tipărite grupurile IOMMU ale dispozitivelor PCI/PCIE instalate pe serverul meu Proxmox VE 8.

Verificarea dacă GPU-ul dvs. NVIDIA poate fi transferat la o mașină virtuală (VM) Proxmox VE 8

Pentru a trece printr-un dispozitiv PCI/PCIE la o mașină virtuală (VM) Proxmox VE 8, acesta trebuie să fie în propriul grup IOMMU. Dacă 2 sau mai multe dispozitive PCI/PCIE partajează un grup IOMMU, nu puteți trece prin niciunul dintre dispozitivele PCI/PCIE ale grupului IOMMU respectiv la nicio mașină virtuală (VM) Proxmox VE 8.

Deci, dacă GPU-ul dvs. NVIDIA și dispozitivul său audio se află pe propriul grup IOMMU, puteți trece prin GPU-ul NVIDIA către orice mașină virtuală (VM) Proxmox VE 8.

Pe serverul meu Proxmox VE 8, folosesc o placă de bază MSI X570 ACE asociată cu un procesor Ryzen 3900X și GPU Gigabyte RTX 4070 NVIDIA. Conform grupurilor IOMMU ale sistemului meu, pot trece prin GPU-ul NVIDIA RTX 4070 (IOMMU Group 21), RTL8125 2.5Gbe Ethernet Controller (IOMMU Group 20), Intel I211 Gigabit Ethernet Controller (IOMMU Group 19), un controler USB 3.0 ( IOMMU Group 24) și controlerul audio HD Onboard (IOMMU Group 25).

$ print-iommu-groups

Deoarece obiectivul principal al acestui articol este configurarea Proxmox VE 8 pentru a trece prin GPU-ul NVIDIA la mașinile virtuale Proxmox VE 8, GPU-ul NVIDIA și dispozitivul său audio trebuie să fie în propriul grup IOMMU.

Verificarea modulelor kernel pe lista neagră pentru PCI/PCIE Passthrough pe Proxmox VE 8

Pentru a trece printr-un dispozitiv PCI/PCIE pe o mașină virtuală (VM) Proxmox VE 8, trebuie să vă asigurați că Proxmox VE îl forțează să utilizeze modulul kernel VFIO în loc de modulul kernel original.

Pentru a afla modulul de kernel pe care îl folosesc dispozitivele dumneavoastră PCI/PCIE, va trebui să cunoașteți ID-ul furnizorului și ID-ul dispozitivului acestor dispozitive PCI/PCIE. Puteți găsi ID-ul furnizorului și ID-ul dispozitivului dispozitivelor PCI/PCIE utilizând print-iommu-groups comanda.

$ print-iommu-groups

De exemplu, ID-ul furnizorului și ID-ul dispozitivului GPU-ului meu NVIDIA RTX 4070 este 10de:2786 și dispozitivul audio este 10de:22bc .

Pentru a găsi modulul kernel, un dispozitiv PCI/PCIE 10de:2786 (GPU-ul meu NVIDIA RTX 4070) folosește, rulați lspci comanda după cum urmează:

$ lspci -v -d 10de:2786

După cum puteți vedea, GPU-ul meu NVIDIA RTX 4070 folosește nvidiafb și nou modulele kernel în mod implicit. Deci, acestea nu pot fi transmise la o mașină virtuală (VM) Proxmox VE 8 în acest moment.

Dispozitivul audio al GPU-ului meu NVIDIA RTX 4070 folosește snd_hda_intel modulul nucleului. Deci, nici în acest moment nu poate fi transmis pe o mașină virtuală Proxmox VE 8.

$ lspci -v -d 10de:22bc

Deci, pentru a trece prin GPU-ul meu NVIDIA RTX 4070 și dispozitivul său audio pe o mașină virtuală (VM) Proxmox VE 8, trebuie să pun pe lista neagră nvidiafb , nou , și snd_hda_intel modulele kernelului și configurați GPU-ul meu NVIDIA RTX 4070 și dispozitivul său audio pentru a utiliza vfio-pci modulul kernelului.

Lista neagră a modulelor Kernel necesare pentru PCI/PCIE Passthrough pe Proxmox VE 8

Pentru a pune pe lista neagră modulele nucleului de pe Proxmox VE 8, deschideți /etc/modprobe.d/blacklist.conf fișier cu editorul de text nano, după cum urmează:

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

Pentru a lista neagră modulele kernelului nou , nvidiafb , și snd_hda_intel modulele nucleului (pentru a trece prin GPU NVIDIA), adăugați următoarele linii în fișierul /etc/modprobe.d/blacklist.conf fişier:

lista neagră nouveau

lista neagră nvidiafb

lista neagră snd_hda_intel

După ce ați terminat, apăsați + X urmată de ȘI și pentru a salva /etc/modprobe.d/blacklist.conf fişier.

Configurarea GPU-ului dvs. NVIDIA pentru a utiliza modulul kernel VFIO pe Proxmox VE 8

Pentru a configura dispozitivul PCI/PCIE (adică GPU-ul dvs. NVIDIA) pentru a utiliza modulul kernel VFIO, trebuie să cunoașteți ID-ul furnizorului și ID-ul dispozitivului.

În acest caz, ID-ul furnizorului și ID-ul dispozitivului GPU-ului meu NVIDIA RTX 4070 și al dispozitivului său audio sunt 10de:2786 și 10de:22bc .

Pentru a configura GPU-ul NVIDIA să utilizeze modulul kernel VFIO, deschideți /etc/modprobe.d/vfio.conf fișier cu editorul de text nano, după cum urmează:

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

Pentru a configura GPU-ul NVIDIA și dispozitivul său audio cu : 10de:2786 și 10de:22bc (să spunem), respectiv pentru a utiliza modulul kernel VFIO, adăugați următoarea linie la /etc/modprobe.d/vfio.conf fişier.

opțiuni vfio-pci ids=10de:2786,10de:22bc

După ce ați terminat, apăsați + X urmată de ȘI și pentru a salva /etc/modprobe.d/vfio.conf fişier.

Acum, actualizați initramf-urile lui Proxmove VE 8 cu următoarea comandă:

$ update-initramfs -u -k all

Odată ce initramfs este actualizat, faceți clic pe Reporniți pentru a reporni serverul Proxmox VE 8 pentru ca modificările să intre în vigoare.

Odată ce serverul Proxmox VE 8 pornește, ar trebui să vedeți că GPU-ul dvs. NVIDIA și dispozitivul său audio ( 10de:2786 și 10de:22bc în cazul meu) folosesc vfio-pci modulul kernelului. Acum, GPU-ul dvs. NVIDIA este gata pentru a fi transmis la o mașină virtuală Proxmox VE 8.

$ lspci -v -d 10de:2786

$ lspci -v -d 10de:22bc

Trecerea prin GPU-ul NVIDIA la o mașină virtuală (VM) Proxmox VE 8

Acum că GPU-ul dvs. NVIDIA este gata pentru trecerea pe mașinile virtuale (VM) Proxmox VE 8, puteți trece prin GPU-ul NVIDIA pe mașina virtuală Proxmox VE 8 dorită și puteți instala driverele GPU NVIDIA în funcție de sistemul de operare pe care îl utilizați. acea mașină virtuală ca de obicei.

Pentru informații detaliate despre cum să treceți prin GPU-ul dvs. NVIDIA pe o mașină virtuală (VM) Proxmox VE 8 cu diferite sisteme de operare instalate, citiți unul dintre următoarele articole:

  • Cum să treceți printr-un GPU NVIDIA la o mașină virtuală (VM) Windows 11 Proxmox VE 8
  • Cum să treceți printr-un GPU NVIDIA la o mașină virtuală (VM) Ubuntu 24.04 LTS Proxmox VE 8
  • Cum să treceți printr-un GPU NVIDIA la o mașină virtuală (VM) LinuxMint 21 Proxmox VE 8
  • Cum să treceți printr-un GPU NVIDIA la o mașină virtuală (VM) Debian 12 Proxmox VE 8
  • Cum să treceți printr-un GPU NVIDIA la o mașină virtuală (VM) elementar OS 8 Proxmox VE 8
  • Cum să treceți printr-un GPU NVIDIA la o mașină virtuală (VM) Fedora 39+ Proxmox VE 8
  • Cum să treceți printr-un GPU NVIDIA pe o mașină virtuală (VM) Arch Linux Proxmox VE 8
  • Cum să treceți printr-un GPU NVIDIA pe o mașină virtuală (VM) Red Hat Enterprise Linux 9 (RHEL 9) Proxmox VE 8

Încă mai aveți probleme cu PCI/PCIE Passthrough pe mașinile virtuale (VM) Proxmox VE 8?

Chiar și după ce ați încercat corect tot ce este enumerat în acest articol, dacă trecerea PCI/PCIE încă nu funcționează pentru dvs., asigurați-vă că încercați unele dintre trucurile și/sau soluțiile de soluționare PCI/PCIE Proxmox VE pe care îl puteți folosi pentru a obține lucru de trecere PCI/PCIE pe hardware-ul dvs.

Concluzie

În acest articol, v-am arătat cum să vă configurați serverul Proxmox VE 8 pentru trecerea PCI/PCIE, astfel încât să puteți trece prin dispozitivele PCI/PCIE (adică GPU-ul dvs. NVIDIA) către mașinile virtuale (VM) Proxmox VE 8. De asemenea, v-am arătat cum să aflați modulele de kernel pe care trebuie să le puneți pe lista neagră și cum să le puneți pe lista neagră pentru o trecere cu succes a dispozitivelor PCI/PCIE dorite (adică GPU-ul dvs. NVIDIA) la o mașină virtuală Proxmox VE 8. În cele din urmă, v-am arătat cum să configurați dispozitivele PCI/PCIE dorite (adică GPU-ul dvs. NVIDIA) pentru a utiliza modulele nucleului VFIO, care este, de asemenea, un pas esențial pentru o trecere cu succes a dispozitivelor PCI/PCIE dorite (adică GPU-ul dvs. NVIDIA). ) la o mașină virtuală (VM) Proxmox VE 8.

Referințe

  1. PCI(e) Passthrough – Proxmox VE
  2. PCI Passthrough – Proxmox VE
  3. Cea mai bună mașină virtuală de jocuri pe proxmox – YouTube