Jak skonfigurować Proxmox VE 8 dla PCI/PCIE i NVIDIA GPU Passthrough

Jak Skonfigurowac Proxmox Ve 8 Dla Pci Pcie I Nvidia Gpu Passthrough



Proxmox VE 8 to jeden z najlepszych darmowych hiperwizorów typu I typu open source do uruchamiania maszyn wirtualnych QEMU/KVM i kontenerów LXC. Ma ładny interfejs zarządzania siecią i wiele funkcji.

Jedną z najbardziej niesamowitych funkcji Proxmox VE jest to, że może on przekazywać urządzenia PCI/PCIE (tj. procesor graficzny NVIDIA) z twojego komputera do maszyn wirtualnych (VM) Proxmox VE. Przepustowość PCI/PCIE jest coraz lepsza dzięki nowszym wydaniom Proxmox VE. W chwili pisania tego tekstu najnowsza wersja Proxmox VE to Proxmox VE v8.1 i oferuje doskonałą obsługę przejścia PCI/PCIE.







W tym artykule pokażę, jak skonfigurować host/serwer Proxmox VE 8 do przekazywania PCI/PCIE i skonfigurować procesor graficzny NVIDIA do przekazywania PCIE na maszynach wirtualnych (VM) Proxmox VE 8.





Spis treści

  1. Włączanie wirtualizacji z poziomu oprogramowania sprzętowego BIOS/UEFI Twojej płyty głównej
  2. Instalowanie Proxmox VE 8
  3. Włączanie repozytoriów społeczności Proxmox VE 8
  4. Instalowanie aktualizacji w Proxmox VE 8
  5. Włączanie IOMMU z poziomu oprogramowania układowego BIOS/UEFI Twojej płyty głównej
  6. Włączanie IOMMU na Proxmox VE 8
  7. Sprawdzanie, czy IOMMU jest włączone w Proxmox VE 8
  8. Ładowanie modułów jądra VFIO na Proxmox VE 8
  9. Wyświetlanie grup IOMMU na Proxmox VE 8
  10. Sprawdzanie, czy Twój procesor graficzny NVIDIA może być przekazywany do maszyny wirtualnej Proxmox VE 8 (VM)
  11. Sprawdzanie, czy moduły jądra znajdują się na czarnej liście dla przekazywania PCI/PCIE w Proxmox VE 8
  12. Umieszczanie na czarnej liście wymaganych modułów jądra do przekazywania PCI/PCIE w Proxmox VE 8
  13. Konfigurowanie procesora graficznego NVIDIA do korzystania z modułu jądra VFIO w Proxmox VE 8
  14. Przekazywanie procesora graficznego NVIDIA do maszyny wirtualnej Proxmox VE 8 (VM)
  15. Nadal masz problemy z przekazywaniem PCI/PCIE na maszynach wirtualnych (VM) Proxmox VE 8?
  16. Wniosek
  17. Bibliografia





Włączanie wirtualizacji z poziomu oprogramowania sprzętowego BIOS/UEFI Twojej płyty głównej

Zanim będziesz mógł zainstalować Proxmox VE 8 na swoim komputerze/serwerze, musisz włączyć funkcję wirtualizacji sprzętu swojego procesora w oprogramowaniu BIOS/UEFI płyty głównej. Proces ten jest inny dla różnych płyt głównych. Jeśli więc potrzebujesz pomocy przy włączaniu wirtualizacji sprzętu na płycie głównej, przeczytaj ten artykuł .



Instalowanie Proxmox VE 8

Proxmox VE 8 można pobrać, zainstalować i używać bezpłatnie. Zanim zaczniesz, upewnij się, że zainstalowałeś Proxmox VE 8 na swoim komputerze. Jeśli będziesz potrzebować pomocy w tej kwestii, przeczytaj ten artykuł .

Włączanie repozytoriów społeczności Proxmox VE 8

Po zainstalowaniu Proxmox VE 8 na swoim komputerze/serwerze pamiętaj o tym włącz repozytoria pakietów społeczności Proxmox VE 8 .

Domyślnie repozytoria pakietów Proxmox VE 8 dla przedsiębiorstw są włączone i nie będzie można pobrać/zainstalować aktualizacji i poprawek błędów z repozytoriów korporacyjnych, chyba że kupisz licencje Proxmox VE 8 dla przedsiębiorstw. Jeśli więc chcesz korzystać z Proxmox VE 8 za darmo, pamiętaj, aby to zrobić włącz repozytoria pakietów społeczności Proxmox VE 8 aby bezpłatnie otrzymywać najnowsze aktualizacje i poprawki błędów od Proxmox.

Instalowanie aktualizacji w Proxmox VE 8

Kiedy już to zrobisz włączył repozytoria pakietów społeczności Proxmox VE 8 , Upewnij się zainstaluj wszystkie dostępne aktualizacje na serwerze Proxmox VE 8 .

Włączanie IOMMU z poziomu oprogramowania układowego BIOS/UEFI Twojej płyty głównej

Konfiguracja IOMMU znajduje się w różnych lokalizacjach na różnych płytach głównych. Aby włączyć IOMMU na płycie głównej, przeczytaj ten artykuł .

Włączanie IOMMU na Proxmox VE 8

Po włączeniu IOMMU po stronie sprzętowej musisz także włączyć IOMMU po stronie oprogramowania (od Proxmox VE 8).

Aby włączyć IOMMU z Proxmox VE 8, musisz dodać następujące parametry rozruchu jądra:

Sprzedawca procesorów Parametry rozruchu jądra do dodania
Intel intel_iommu=on, iommu=pt
AMD iommu=pt

Aby zmodyfikować parametry rozruchu jądra Proxmox VE 8, otwórz plik /etc/default/grub plik za pomocą edytora tekstu nano w następujący sposób:

$ nano /etc/default/grub

Na końcu GRUB_CMDLINE_LINUX_DEFAULT , dodaj wymagane parametry rozruchowe jądra, aby włączyć IOMMU w zależności od używanego procesora.

Ponieważ używam procesora AMD, dodałem tylko parametr rozruchu jądra iommu=pt na końcu GRUB_CMDLINE_LINUX_DEFAULT linia w /etc/default/grub plik.

Gdy skończysz, naciśnij + X śledzony przez I I aby zapisać /etc/default/grub plik.

Teraz zaktualizuj konfiguracje rozruchowe GRUB za pomocą następującego polecenia:

$ aktualizacja-grub2

Po zaktualizowaniu konfiguracji rozruchu GRUB kliknij Ponowne uruchomienie aby zrestartować serwer Proxmox VE 8, aby zmiany zaczęły obowiązywać.

Sprawdzanie, czy IOMMU jest włączone w Proxmox VE 8

Aby sprawdzić, czy IOMMU jest włączone w Proxmox VE 8, uruchom następujące polecenie:

$ dmesg | grep -e DMAR -e IOMMU

Jeśli IOMMU jest włączone, zobaczysz kilka wyników potwierdzających, że IOMMU jest włączone.

Jeśli IOMMU nie jest włączone, możesz nie widzieć żadnych wyników.

Trzeba też mieć Ponowne mapowanie przerwań IOMMU włączone, aby działało przejście PCI/PCIE.

Aby sprawdzić, czy na serwerze Proxmox VE 8 włączono funkcję ponownego mapowania przerwań IOMMU, uruchom następujące polecenie:

$ dmesg | grep „ponowne mapowanie”

Jak widać, ponowne mapowanie przerwań IOMMU jest włączone na moim serwerze Proxmox VE 8.

Większość nowoczesnych procesorów AMD i Intel będzie miała włączoną opcję ponownego mapowania przerwań IOMMU. Jeśli z jakiegoś powodu nie masz włączonego ponownego mapowania przerwań IOMMU, istnieje obejście. Musisz włączyć niebezpieczne przerwania dla VFIO. Przeczytaj ten artykuł aby uzyskać więcej informacji na temat włączania niebezpiecznych przerwań na serwerze Proxmox VE 8.

Ładowanie modułów jądra VFIO na Proxmox VE 8

Przekazywanie PCI/PCIE odbywa się głównie przez moduły jądra VFIO (Virtual Function I/O) w Proxmox VE 8. Moduły jądra VFIO nie są domyślnie ładowane podczas rozruchu w Proxmox VE 8. Jednak załadowanie VFIO jest łatwe moduły jądra podczas uruchamiania systemu Proxmox VE 8.

Najpierw otwórz plik /etc/modules-load.d/vfio.conf plik z nano edytor tekstu w następujący sposób:

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

Wpisz następujące wiersze w pliku /etc/modules-load.d/vfio.conf plik.

wfio

vfio_iommu_type1

vfio_pci

Gdy skończysz, naciśnij + X śledzony przez I I aby zapisać zmiany.

Teraz zaktualizuj initramfs swojej instalacji Proxmox VE 8 za pomocą następującego polecenia:

$ update-initramfs -u -k wszystko

Po zaktualizowaniu initramfs kliknij Ponowne uruchomienie aby zrestartować serwer Proxmox VE 8, aby zmiany zaczęły obowiązywać.

Po uruchomieniu serwera Proxmox VE 8 powinieneś zobaczyć, że załadowane zostały wszystkie wymagane moduły jądra VFIO.

$ lsmod | uchwyt vfio

Wyświetlanie grup IOMMU na Proxmox VE 8

Aby przekazywać urządzenia PCI/PCIE na maszynach wirtualnych Proxmox VE 8 (VM), będziesz musiał dość często sprawdzać grupy IOMMU swoich urządzeń PCI/PCIE. Aby ułatwić sprawdzanie grup IOMMU, zdecydowałem się napisać skrypt powłoki (pobrałem go z GitHuba, ale nie pamiętam nazwy oryginalnego plakatu) w ścieżce /usr/local/bin/print-iommu-groups żebym mógł po prostu biegać grupy print-iommu polecenie i wydrukuje grupy IOMMU na powłoce Proxmox VE 8.

Najpierw utwórz nowy plik grupy print-iommu na ścieżce /usr/local/bin i otwórz go za pomocą edytora tekstu nano w następujący sposób:

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

Wpisz następujące wiersze w pliku grupy print-iommu plik:

#!/bin/bash

sklepy -S nullglob

Do G W ` znajdować / sys / jądro / iommu_groups /* -maksymalna głębokość 0 -typ D | sortować -W ` ; Do

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

Do D W $g / urządzenia /* ; Do

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

zrobione ;

zrobione ;

Gdy skończysz, naciśnij + X śledzony przez I I aby zapisać zmiany w pliku print-iommu-groups plik.

Zrób print-iommu-groups plik wykonywalny skryptu za pomocą następującego polecenia:

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

Teraz możesz uruchomić print-iommu-groups polecenie w następujący sposób, aby wydrukować grupy IOMMU urządzeń PCI/PCIE zainstalowanych na serwerze Proxmox VE 8:

$ print-iommu-groups

Jak widać, drukowane są grupy IOMMU urządzeń PCI/PCIE zainstalowanych na moim serwerze Proxmox VE 8.

Sprawdzanie, czy Twój procesor graficzny NVIDIA może być przekazywany do maszyny wirtualnej Proxmox VE 8 (VM)

Aby przekazać urządzenie PCI/PCIE do maszyny wirtualnej Proxmox VE 8 (VM), musi ono znajdować się we własnej grupie IOMMU. Jeśli 2 lub więcej urządzeń PCI/PCIE współdzieli grupę IOMMU, nie można przekazać żadnego urządzenia PCI/PCIE z tej grupy IOMMU do żadnej maszyny wirtualnej (VM) Proxmox VE 8.

Tak więc, jeśli Twój procesor graficzny NVIDIA i jego urządzenie audio znajdują się we własnej grupie IOMMU, możesz przekazać procesor graficzny NVIDIA do dowolnych maszyn wirtualnych (VM) Proxmox VE 8.

Na moim serwerze Proxmox VE 8 używam płyty głównej MSI X570 ACE w połączeniu z procesorem Ryzen 3900X i kartą graficzną NVIDIA Gigabyte RTX 4070. Zgodnie z grupami IOMMU mojego systemu, mogę przekazać kartę graficzną NVIDIA RTX 4070 (IOMMU grupa 21), kontroler Ethernet RTL8125 2,5 Gbe (IOMMU grupa 20), kontroler Intel I211 Gigabit Ethernet (IOMMU grupa 19), kontroler USB 3.0 ( IOMMU Group 24) i pokładowy kontroler HD Audio (IOMMU Group 25).

$ print-iommu-groups

Ponieważ głównym celem tego artykułu jest skonfigurowanie Proxmox VE 8 do przekazywania przez procesor graficzny NVIDIA do maszyn wirtualnych Proxmox VE 8, procesor graficzny NVIDIA i jego urządzenie audio muszą należeć do własnej grupy IOMMU.

Sprawdzanie, czy moduły jądra znajdują się na czarnej liście dla przekazywania PCI/PCIE w Proxmox VE 8

Aby przekazać urządzenie PCI/PCIE na maszynie wirtualnej Proxmox VE 8 (VM), musisz się upewnić, że Proxmox VE wymusza na nim użycie modułu jądra VFIO zamiast oryginalnego modułu jądra.

Aby dowiedzieć się, jakiego modułu jądra używają Twoje urządzenia PCI/PCIE, musisz znać identyfikator dostawcy i identyfikator urządzenia tych urządzeń PCI/PCIE. Identyfikator dostawcy i identyfikator urządzenia PCI/PCIE można znaleźć za pomocą grupy print-iommu Komenda.

$ print-iommu-groups

Na przykład identyfikator dostawcy i identyfikator urządzenia mojej karty graficznej NVIDIA RTX 4070 to 10de:2786 i jest to urządzenie audio 10de:22 p.n.e .

Aby znaleźć moduł jądra, urządzenie PCI/PCIE 10de:2786 (moja karta graficzna NVIDIA RTX 4070), uruchom plik lspci polecenie w następujący sposób:

$ lspci -v -d 10de:2786

Jak widać, mój procesor graficzny NVIDIA RTX 4070 korzysta z nvidiafb I nowy domyślnie moduły jądra. Dlatego w tym momencie nie można ich przekazać do maszyny wirtualnej (VM) Proxmox VE 8.

Urządzenie audio mojego procesora graficznego NVIDIA RTX 4070 korzysta z snd_hda_intel moduł jądra. Dlatego też w tym momencie nie można go przekazać na maszynę wirtualną Proxmox VE 8.

$ lspci -v -d 10de:22bc

Aby więc przekazać moją kartę graficzną NVIDIA RTX 4070 i jej urządzenie audio na maszynie wirtualnej Proxmox VE 8 (VM), muszę umieścić ją na czarnej liście nvidiafb , nowy , I snd_hda_intel moduły jądra i skonfiguruj mój procesor graficzny NVIDIA RTX 4070 i jego urządzenie audio do korzystania z vfio-pci moduł jądra.

Umieszczanie na czarnej liście wymaganych modułów jądra do przekazywania PCI/PCIE w Proxmox VE 8

Aby umieścić na czarnej liście moduły jądra w Proxmox VE 8, otwórz plik /etc/modprobe.d/blacklist.conf plik za pomocą edytora tekstu nano w następujący sposób:

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

Aby umieścić na czarnej liście moduły jądra nowy , nvidiafb , I snd_hda_intel moduły jądra (w celu przejścia przez procesor graficzny NVIDIA), dodaj następujące wiersze w pliku /etc/modprobe.d/blacklist.conf plik:

nowa czarna lista

czarna lista nvidiafb

czarna lista snd_hda_intel

Gdy skończysz, naciśnij + X śledzony przez I I aby zapisać /etc/modprobe.d/blacklist.conf plik.

Konfigurowanie procesora graficznego NVIDIA do korzystania z modułu jądra VFIO w Proxmox VE 8

Aby skonfigurować urządzenie PCI/PCIE (tj. procesor graficzny NVIDIA) do korzystania z modułu jądra VFIO, musisz znać jego identyfikator dostawcy i identyfikator urządzenia.

W tym przypadku identyfikator dostawcy i identyfikator urządzenia mojej karty graficznej NVIDIA RTX 4070 i jej urządzenia audio to 10de:2786 I 10de:22 p.n.e .

Aby skonfigurować procesor graficzny NVIDIA do korzystania z modułu jądra VFIO, otwórz plik /etc/modprobe.d/vfio.conf plik za pomocą edytora tekstu nano w następujący sposób:

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

Aby skonfigurować procesor graficzny NVIDIA i jego urządzenie audio za pomocą : 10de:2786 I 10de:22 p.n.e (powiedzmy), aby użyć modułu jądra VFIO, dodaj następujący wiersz do pliku /etc/modprobe.d/vfio.conf plik.

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

Gdy skończysz, naciśnij + X śledzony przez I I aby zapisać /etc/modprobe.d/vfio.conf plik.

Teraz zaktualizuj initramfs Proxmove VE 8 za pomocą następującego polecenia:

$ update-initramfs -u -k wszystko

Po zaktualizowaniu initramfs kliknij Ponowne uruchomienie aby zrestartować serwer Proxmox VE 8, aby zmiany zaczęły obowiązywać.

Po uruchomieniu serwera Proxmox VE 8 powinieneś zobaczyć, że Twój procesor graficzny NVIDIA i jego urządzenie audio ( 10de:2786 I 10de:22 p.n.e w moim przypadku) używają vfio-pci moduł jądra. Teraz Twój procesor graficzny NVIDIA jest gotowy do przekazania do maszyny wirtualnej Proxmox VE 8.

$ lspci -v -d 10de:2786

$ lspci -v -d 10de:22bc

Przekazywanie procesora graficznego NVIDIA do maszyny wirtualnej Proxmox VE 8 (VM)

Teraz, gdy Twój procesor graficzny NVIDIA jest gotowy do przekazywania na maszynach wirtualnych Proxmox VE 8 (VM), możesz przekazać procesor graficzny NVIDIA na wybranej maszynie wirtualnej Proxmox VE 8 i zainstalować sterowniki procesora graficznego NVIDIA w zależności od używanego systemu operacyjnego tę maszynę wirtualną jak zwykle.

Aby uzyskać szczegółowe informacje na temat przekazywania procesora graficznego NVIDIA na maszynie wirtualnej Proxmox VE 8 z zainstalowanymi różnymi systemami operacyjnymi, przeczytaj jeden z następujących artykułów:

  • Jak przekazać procesor graficzny NVIDIA do maszyny wirtualnej (VM) z systemem Windows 11 Proxmox VE 8
  • Jak przekazać procesor graficzny NVIDIA do maszyny wirtualnej (VM) Ubuntu 24.04 LTS Proxmox VE 8
  • Jak przekazać procesor graficzny NVIDIA do maszyny wirtualnej LinuxMint 21 Proxmox VE 8 (VM)
  • Jak przekazać procesor graficzny NVIDIA do maszyny wirtualnej (VM) Debian 12 Proxmox VE 8
  • Jak przekazać procesor graficzny NVIDIA do maszyny wirtualnej (VM) z systemem Elementary OS 8 Proxmox VE 8
  • Jak przekazać procesor graficzny NVIDIA do maszyny wirtualnej (VM) Fedora 39+ Proxmox VE 8
  • Jak przekazać procesor graficzny NVIDIA na maszynie wirtualnej Arch Linux Proxmox VE 8 (VM)
  • Jak przekazać procesor graficzny NVIDIA na maszynie wirtualnej Red Hat Enterprise Linux 9 (RHEL 9) Proxmox VE 8 (VM)

Nadal masz problemy z przekazywaniem PCI/PCIE na maszynach wirtualnych (VM) Proxmox VE 8?

Nawet po prawidłowym wypróbowaniu wszystkiego, co opisano w tym artykule, jeśli przekazywanie PCI/PCIE nadal nie działa, pamiętaj, aby to zrobić wypróbuj niektóre sztuczki i/lub obejścia dotyczące przejścia Proxmox VE PCI/PCIE którego możesz użyć do zapewnienia pracy przepustowości PCI/PCIE na swoim sprzęcie.

Wniosek

W tym artykule pokazałem, jak skonfigurować serwer Proxmox VE 8 do przekazywania PCI/PCIE, aby móc przekazywać urządzenia PCI/PCIE (tj. procesor graficzny NVIDIA) do maszyn wirtualnych Proxmox VE 8 (VM). Pokazałem także, jak znaleźć moduły jądra, które należy umieścić na czarnej liście i jak je umieścić na czarnej liście, aby pomyślnie przejść wybrane urządzenia PCI/PCIE (tj. procesor graficzny NVIDIA) do maszyny wirtualnej Proxmox VE 8. Na koniec pokazałem, jak skonfigurować żądane urządzenia PCI/PCIE (tj. procesor graficzny NVIDIA) do korzystania z modułów jądra VFIO, co jest również niezbędnym krokiem w celu pomyślnego przejścia wybranych urządzeń PCI/PCIE (tj. procesora graficznego NVIDIA ) na maszynę wirtualną Proxmox VE 8 (VM).

Bibliografia

  1. Przejście PCI(e) – Proxmox VE
  2. Przejście PCI – Proxmox VE
  3. Najlepsza wirtualna maszyna do gier na proxmox – YouTube