Как да конфигурирате Proxmox VE 8 за PCI/PCIE и NVIDIA GPU Passthrough

Kak Da Konfigurirate Proxmox Ve 8 Za Pci Pcie I Nvidia Gpu Passthrough



Proxmox VE 8 е един от най-добрите отворени кодове и безплатни хипервайзори от тип I за работа с QEMU/KVM виртуални машини (VM) и LXC контейнери. Има приятен интерфейс за уеб управление и много функции.

Една от най-невероятните характеристики на Proxmox VE е, че може да преминава през PCI/PCIE устройства (т.е. NVIDIA GPU) от вашия компютър към Proxmox VE виртуални машини (VM). PCI/PCIE преминаването става все по-добро и по-добро с по-новите версии на Proxmox VE. Към момента на писане на това, най-новата версия на Proxmox VE е Proxmox VE v8.1 и има страхотна поддръжка на PCI/PCIE passthrough.







В тази статия ще ви покажа как да конфигурирате вашия Proxmox VE 8 хост/сървър за PCI/PCIE passthrough и как да конфигурирате вашия NVIDIA GPU за PCIE passthrough на Proxmox VE 8 виртуални машини (VM).





Съдържание

  1. Активиране на виртуализация от фърмуера на BIOS/UEFI на вашата дънна платка
  2. Инсталиране на Proxmox VE 8
  3. Активиране на общностни хранилища на Proxmox VE 8
  4. Инсталиране на актуализации на Proxmox VE 8
  5. Активиране на IOMMU от фърмуера на BIOS/UEFI на вашата дънна платка
  6. Активиране на IOMMU на Proxmox VE 8
  7. Проверка дали IOMMU е активиран на Proxmox VE 8
  8. Зареждане на VFIO модули на ядрото на Proxmox VE 8
  9. Изброяване на IOMMU групи в Proxmox VE 8
  10. Проверка дали вашият NVIDIA GPU може да бъде прехвърлен към Proxmox VE 8 виртуална машина (VM)
  11. Проверка за модулите на ядрото в черен списък за PCI/PCIE Passthrough на Proxmox VE 8
  12. Черен списък на необходимите модули на ядрото за PCI/PCIE Passthrough на Proxmox VE 8
  13. Конфигуриране на вашия NVIDIA GPU за използване на модула на ядрото VFIO на Proxmox VE 8
  14. Преминаване през NVIDIA GPU към Proxmox VE 8 виртуална машина (VM)
  15. Все още имате проблеми с PCI/PCIE Passthrough на Proxmox VE 8 виртуални машини (VM)?
  16. Заключение
  17. Препратки





Активиране на виртуализация от фърмуера на BIOS/UEFI на вашата дънна платка

Преди да можете да инсталирате Proxmox VE 8 на вашия компютър/сървър, трябва да активирате функцията за хардуерна виртуализация на вашия процесор от BIOS/UEFI фърмуера на вашата дънна платка. Процесът е различен за различните дънни платки. Така че, ако имате нужда от помощ за активиране на хардуерна виртуализация на вашата дънна платка, прочетете тази статия .



Инсталиране на Proxmox VE 8

Proxmox VE 8 е безплатен за изтегляне, инсталиране и използване. Преди да започнете, не забравяйте да инсталирате Proxmox VE 8 на вашия компютър. Ако имате нужда от помощ за това, прочетете тази статия .

Активиране на общностни хранилища на Proxmox VE 8

След като инсталирате Proxmox VE 8 на вашия компютър/сървър, уверете се, че активирайте хранилищата на пакети на общността Proxmox VE 8 .

По подразбиране Proxmox VE 8 корпоративни хранилища на пакети са активирани и няма да можете да получавате/инсталирате актуализации и корекции на грешки от корпоративните хранилища, освен ако не сте закупили Proxmox VE 8 корпоративни лицензи. Така че, ако искате да използвате Proxmox VE 8 безплатно, уверете се активирайте хранилищата на пакети на общността Proxmox VE 8 за да получите най-новите актуализации и корекции на грешки от Proxmox безплатно.

Инсталиране на актуализации на Proxmox VE 8

След като сте активира хранилищата на пакети на общността Proxmox VE 8 , уверете се, че инсталирайте всички налични актуализации на вашия Proxmox VE 8 сървър .

Активиране на IOMMU от фърмуера на BIOS/UEFI на вашата дънна платка

Конфигурацията на IOMMU се намира на различни места в различни дънни платки. За да активирате IOMMU на вашата дънна платка, прочетете тази статия .

Активиране на IOMMU на Proxmox VE 8

След като IOMMU е активиран от страна на хардуера, вие също трябва да активирате IOMMU от страна на софтуера (от Proxmox VE 8).

За да активирате IOMMU от Proxmox VE 8, трябва да добавите следните параметри за зареждане на ядрото:

Доставчик на процесор Параметри за зареждане на ядрото за добавяне
Intel intel_iommu=включено, iommu=pt
AMD iommu=pt

За да промените параметрите за стартиране на ядрото на Proxmox VE 8, отворете /etc/default/grub файл с нано текстовия редактор, както следва:

$ nano /etc/default/grub

В края на GRUB_CMDLINE_LINUX_DEFAULT , добавете необходимите параметри за зареждане на ядрото за активиране на IOMMU в зависимост от процесора, който използвате.

Тъй като използвам AMD процесор, добавих само параметъра за зареждане на ядрото iommu=pt в края на GRUB_CMDLINE_LINUX_DEFAULT линия в /etc/default/grub файл.

След като сте готови, натиснете + х следван от И и за да спаси /etc/default/grub файл.

Сега актуализирайте конфигурациите за стартиране на GRUB със следната команда:

$ актуализиране-grub2

След като конфигурациите за стартиране на GRUB се актуализират, щракнете върху Рестартирайте за да рестартирате вашия Proxmox VE 8 сървър, за да влязат в сила промените.

Проверка дали IOMMU е активиран на Proxmox VE 8

За да проверите дали IOMMU е активиран на Proxmox VE 8, изпълнете следната команда:

$ dmesg | grep -e DMAR -e IOMMU

Ако IOMMU е активиран, ще видите някои резултати, потвърждаващи, че IOMMU е активиран.

Ако IOMMU не е активиран, може да не видите никакви резултати.

Вие също трябва да имате Пренасочване на прекъсване на IOMMU активиран за работа на PCI/PCIE passthrough.

За да проверите дали IOMMU Interrupt Remapping е активирано на вашия Proxmox VE 8 сървър, изпълнете следната команда:

$ dmesg | grep 'пренасочване'

Както можете да видите, IOMMU Interrupt Remapping е активирано на моя Proxmox VE 8 сървър.

Повечето модерни AMD и Intel процесори ще имат активирано IOMMU Interrupt Remapping. Ако по някаква причина не сте активирали IOMMU Interrupt Remapping, има заобиколно решение. Трябва да активирате небезопасни прекъсвания за VFIO. Прочетете тази статия за повече информация относно активирането на небезопасни прекъсвания на вашия Proxmox VE 8 сървър.

Зареждане на VFIO модули на ядрото на Proxmox VE 8

PCI/PCIE преминаването се извършва главно от модулите на ядрото VFIO (Виртуална функция I/O) на Proxmox VE 8. Модулите на ядрото VFIO не се зареждат по подразбиране при зареждане на Proxmox VE 8. Но е лесно да заредите VFIO модули на ядрото по време на зареждане на Proxmox VE 8.

Първо отворете /etc/modules-load.d/vfio.conf файл с нано текстов редактор, както следва:

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

Въведете следните редове в /etc/modules-load.d/vfio.conf файл.

vfio

vfio_iommu_type1

vfio_pci

След като сте готови, натиснете + х следван от И и за да запазите промените.

Сега актуализирайте initramfs на вашата инсталация на Proxmox VE 8 със следната команда:

$ update-initramfs -u -k всички

След като initramfs се актуализира, щракнете върху Рестартирайте за да рестартирате вашия Proxmox VE 8 сървър, за да влязат в сила промените.

След като вашият сървър Proxmox VE 8 се стартира, трябва да видите, че всички необходими VFIO модули на ядрото са заредени.

$ lsmod | захващане vfio

Изброяване на IOMMU групи в Proxmox VE 8

За да преминете през PCI/PCIE устройства на Proxmox VE 8 виртуални машини (VM), ще трябва да проверявате IOMMU групите на вашите PCI/PCIE устройства доста често. За да направя проверката за IOMMU групи по-лесна, реших да напиша shell скрипт (взех го от GitHub, но не мога да си спомня името на оригиналния плакат) в пътя /usr/local/bin/print-iommu-groups за да мога просто да тичам print-iommu-groups и ще отпечата групите IOMMU в обвивката на Proxmox VE 8.

Първо създайте нов файл print-iommu-groups в пътя /usr/local/bin и го отворете с нано текстовия редактор, както следва:

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

Въведете следните редове в print-iommu-groups файл:

#!/bin/bash

магазини nullglob

за ж в ` намирам / система / ядро / iommu_groups /* -максимална дълбочина 0 -Тип д | вид -IN ` ; направи

ехо „IOMMU Group ${g##*/} :'

за д в $g / устройства /* ; направи

ехо -То е ' \T $(lspci -nns ${d##*/}) '

Свършен ;

Свършен ;

След като сте готови, натиснете + х следван от И и за да запазите промените в print-iommu-groups файл.

Направи print-iommu-groups скриптов файл, изпълним със следната команда:

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

Сега можете да стартирате print-iommu-groups команда, както следва, за да отпечатате IOMMU групите на PCI/PCIE устройствата, инсталирани на вашия Proxmox VE 8 сървър:

$ print-iommu-groups

Както можете да видите, IOMMU групите на PCI/PCIE устройствата, инсталирани на моя Proxmox VE 8 сървър, са отпечатани.

Проверка дали вашият NVIDIA GPU може да бъде прехвърлен към Proxmox VE 8 виртуална машина (VM)

За да прехвърлите PCI/PCIE устройство към Proxmox VE 8 виртуална машина (VM), то трябва да бъде в собствена IOMMU група. Ако 2 или повече PCI/PCIE устройства споделят IOMMU група, не можете да прехвърлите никое от PCI/PCIE устройствата на тази IOMMU група към никакви Proxmox VE 8 виртуални машини (VM).

Така че, ако вашият NVIDIA GPU и неговото аудио устройство са в собствена IOMMU група, можете да преминете през NVIDIA GPU към всякакви Proxmox VE 8 виртуални машини (VM).

На моя сървър Proxmox VE 8 използвам дънна платка MSI X570 ACE, съчетана с процесор Ryzen 3900X и Gigabyte RTX 4070 NVIDIA GPU. Според IOMMU групите на моята система мога да премина през NVIDIA RTX 4070 GPU (IOMMU група 21), RTL8125 2.5Gbe Ethernet контролер (IOMMU група 20), Intel I211 Gigabit Ethernet контролер (IOMMU група 19), USB 3.0 контролер ( IOMMU Group 24) и вградения HD аудио контролер (IOMMU Group 25).

$ print-iommu-groups

Тъй като основният фокус на тази статия е конфигурирането на Proxmox VE 8 за преминаване през NVIDIA GPU към Proxmox VE 8 виртуални машини, NVIDIA GPU и неговото аудио устройство трябва да бъдат в собствена IOMMU група.

Проверка за модулите на ядрото в черен списък за PCI/PCIE Passthrough на Proxmox VE 8

За да преминете през PCI/PCIE устройство на Proxmox VE 8 виртуална машина (VM), трябва да се уверите, че Proxmox VE го принуждава да използва модула на ядрото VFIO вместо оригиналния модул на ядрото.

За да разберете модула на ядрото, който вашите PCI/PCIE устройства използват, ще трябва да знаете идентификатора на доставчика и идентификатора на устройството на тези PCI/PCIE устройства. Можете да намерите идентификатора на доставчика и идентификатора на устройството на PCI/PCIE устройствата, като използвате print-iommu-groups команда.

$ print-iommu-groups

Например идентификаторът на доставчика и идентификаторът на устройството на моя графичен процесор NVIDIA RTX 4070 е 10 декември 2786 г и това е аудио устройството 10де:22 пр.н.е .

За да намерите модула на ядрото, PCI/PCIE устройство 10 декември 2786 г (моят NVIDIA RTX 4070 GPU) използва, стартирайте lspci команда, както следва:

$ lspci -v -d 10de:2786

Както можете да видите, моят графичен процесор NVIDIA RTX 4070 използва nvidiafb и нов модули на ядрото по подразбиране. Така че те не могат да бъдат предадени на Proxmox VE 8 виртуална машина (VM) в този момент.

Аудио устройството на моя графичен процесор NVIDIA RTX 4070 използва snd_hda_intel модул на ядрото. Така че и на този етап не може да бъде предадено на виртуална машина Proxmox VE 8.

$ lspci -v -d 10de:22bc

Така че, за да премина през моя NVIDIA RTX 4070 GPU и неговото аудио устройство на Proxmox VE 8 виртуална машина (VM), трябва да поставя в черен списък nvidiafb , нов , и snd_hda_intel модули на ядрото и конфигурирайте моя графичен процесор NVIDIA RTX 4070 и неговото аудио устройство да използват vfio-pci модул на ядрото.

Черен списък на необходимите модули на ядрото за PCI/PCIE Passthrough на Proxmox VE 8

За да поставите в черен списък модулите на ядрото на Proxmox VE 8, отворете /etc/modprobe.d/blacklist.conf файл с нано текстовия редактор, както следва:

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

За черен списък на модулите на ядрото нов , nvidiafb , и snd_hda_intel модули на ядрото (за преминаване през NVIDIA GPU), добавете следните редове в /etc/modprobe.d/blacklist.conf файл:

черен списък нуво

черен списък nvidiafb

черен списък snd_hda_intel

След като сте готови, натиснете + х следван от И и за да спаси /etc/modprobe.d/blacklist.conf файл.

Конфигуриране на вашия NVIDIA GPU за използване на модула на ядрото VFIO на Proxmox VE 8

За да конфигурирате PCI/PCIE устройството (т.е. вашия NVIDIA GPU) да използва модула на ядрото VFIO, трябва да знаете техния ID на доставчика и ID на устройството.

В този случай идентификаторът на доставчика и идентификаторът на устройството на моя графичен процесор NVIDIA RTX 4070 и неговото аудио устройство са 10 декември 2786 г и 10де:22 пр.н.е .

За да конфигурирате вашия NVIDIA GPU да използва модула на ядрото VFIO, отворете /etc/modprobe.d/vfio.conf файл с нано текстовия редактор, както следва:

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

За да конфигурирате вашия NVIDIA GPU и неговото аудио устройство с : 10 декември 2786 г и 10де:22 пр.н.е (да кажем) съответно, за да използвате модула на ядрото VFIO, добавете следния ред към /etc/modprobe.d/vfio.conf файл.

опции vfio-pci ids=10de:2786,10de:22bc

След като сте готови, натиснете + х следван от И и за да спаси /etc/modprobe.d/vfio.conf файл.

Сега актуализирайте initramfs на Proxmove VE 8 със следната команда:

$ update-initramfs -u -k всички

След като initramfs се актуализира, щракнете върху Рестартирайте за да рестартирате вашия Proxmox VE 8 сървър, за да влязат в сила промените.

След като вашият Proxmox VE 8 сървър се стартира, трябва да видите, че вашият NVIDIA GPU и неговото аудио устройство ( 10 декември 2786 г и 10де:22 пр.н.е в моя случай) използват vfio-pci модул на ядрото. Сега вашият графичен процесор NVIDIA е готов за предаване към виртуална машина Proxmox VE 8.

$ lspci -v -d 10de:2786

$ lspci -v -d 10de:22bc

Преминаване през NVIDIA GPU към Proxmox VE 8 виртуална машина (VM)

Сега, когато вашият NVIDIA GPU е готов за преминаване през Proxmox VE 8 виртуални машини (VM), можете да прехвърлите своя NVIDIA GPU на желаната от вас виртуална машина Proxmox VE 8 и да инсталирате драйверите на NVIDIA GPU в зависимост от операционната система, която използвате на тази виртуална машина, както обикновено.

За подробна информация как да преминете през вашия NVIDIA GPU на Proxmox VE 8 виртуална машина (VM) с инсталирани различни операционни системи, прочетете една от следните статии:

  • Как да прехвърлите NVIDIA GPU към Windows 11 Proxmox VE 8 виртуална машина (VM)
  • Как да прехвърлите NVIDIA GPU към виртуална машина (VM) на Ubuntu 24.04 LTS Proxmox VE 8
  • Как да прехвърлите NVIDIA GPU към LinuxMint 21 Proxmox VE 8 виртуална машина (VM)
  • Как да прехвърлите NVIDIA GPU към виртуална машина (VM) на Debian 12 Proxmox VE 8
  • Как да прехвърлите NVIDIA GPU към елементарна OS 8 Proxmox VE 8 виртуална машина (VM)
  • Как да прехвърлите NVIDIA GPU към Fedora 39+ Proxmox VE 8 виртуална машина (VM)
  • Как да преминете през NVIDIA GPU на Arch Linux Proxmox VE 8 виртуална машина (VM)
  • Как да преминете през NVIDIA GPU на Red Hat Enterprise Linux 9 (RHEL 9) Proxmox VE 8 виртуална машина (VM)

Все още имате проблеми с PCI/PCIE Passthrough на Proxmox VE 8 виртуални машини (VM)?

Дори след като сте изпробвали правилно всичко, изброено в тази статия, ако PCI/PCIE преминаването все още не работи за вас, не забравяйте да изпробвайте някои от триковете и/или заобиколни решения на Proxmox VE PCI/PCIE които можете да използвате, за да получите PCI/PCIE passthrough работа на вашия хардуер.

Заключение

В тази статия ви показах как да конфигурирате вашия Proxmox VE 8 сървър за PCI/PCIE преминаване, така че да можете да предавате PCI/PCIE устройства (т.е. вашия NVIDIA GPU) към вашите Proxmox VE 8 виртуални машини (VM). Също така ви показах как да намерите модулите на ядрото, които трябва да включите в черния списък, и как да ги поставите в черния списък за успешно преминаване на желаните от вас PCI/PCIE устройства (т.е. вашия NVIDIA GPU) към виртуална машина Proxmox VE 8. Накрая ви показах как да конфигурирате желаните от вас PCI/PCIE устройства (т.е. вашия NVIDIA GPU) да използват VFIO модулите на ядрото, което също е важна стъпка за успешно преминаване на желаните от вас PCI/PCIE устройства (т.е. вашия NVIDIA GPU ) към виртуална машина (VM) Proxmox VE 8.

Препратки

  1. PCI(e) преминаване – Proxmox VE
  2. PCI Passthrough – Proxmox VE
  3. Най-добрата виртуална машина за игри на proxmox – YouTube