Como configurar o Proxmox VE 8 para PCI/PCIE e NVIDIA GPU Passthrough

Como Configurar O Proxmox Ve 8 Para Pci Pcie E Nvidia Gpu Passthrough



Proxmox VE 8 é um dos melhores hipervisores Tipo I gratuitos e de código aberto disponíveis para executar máquinas virtuais (VMs) QEMU/KVM e contêineres LXC. Possui uma interface de gerenciamento web agradável e muitos recursos.

Um dos recursos mais incríveis do Proxmox VE é que ele pode passar por dispositivos PCI/PCIE (ou seja, uma GPU NVIDIA) do seu computador para máquinas virtuais (VMs) Proxmox VE. A passagem PCI/PCIE está cada vez melhor com os lançamentos mais recentes do Proxmox VE. No momento em que este artigo foi escrito, a versão mais recente do Proxmox VE era Proxmox VE v8.1 e tinha excelente suporte de passagem PCI/PCIE.







Neste artigo, vou mostrar como configurar seu host/servidor Proxmox VE 8 para passagem PCI/PCIE e configurar sua GPU NVIDIA para passagem PCIE em máquinas virtuais (VMs) Proxmox VE 8.





Índice

  1. Habilitando a virtualização do firmware BIOS/UEFI da sua placa-mãe
  2. Instalando Proxmox VE 8
  3. Habilitando repositórios da comunidade Proxmox VE 8
  4. Instalando atualizações no Proxmox VE 8
  5. Habilitando IOMMU do firmware BIOS/UEFI da sua placa-mãe
  6. Habilitando IOMMU no Proxmox VE 8
  7. Verificando se o IOMMU está habilitado no Proxmox VE 8
  8. Carregando módulos VFIO Kernel no Proxmox VE 8
  9. Listando grupos IOMMU no Proxmox VE 8
  10. Verificando se sua GPU NVIDIA pode ser transmitida para uma máquina virtual (VM) Proxmox VE 8
  11. Verificando os módulos do kernel na lista negra para passagem PCI/PCIE no Proxmox VE 8
  12. Lista negra de módulos de kernel necessários para passagem PCI/PCIE no Proxmox VE 8
  13. Configurando sua GPU NVIDIA para usar o módulo VFIO Kernel no Proxmox VE 8
  14. Passagem da GPU NVIDIA para uma máquina virtual (VM) Proxmox VE 8
  15. Ainda tendo problemas com passagem PCI/PCIE em máquinas virtuais (VMs) Proxmox VE 8?
  16. Conclusão
  17. Referências





Habilitando a virtualização do firmware BIOS/UEFI da sua placa-mãe

Antes de instalar o Proxmox VE 8 em seu computador/servidor, você deve habilitar o recurso de virtualização de hardware do seu processador a partir do firmware BIOS/UEFI da sua placa-mãe. O processo é diferente para diferentes placas-mãe. Então, se você precisar de ajuda para habilitar a virtualização de hardware em sua placa-mãe, leia este artigo .



Instalando Proxmox VE 8

O Proxmox VE 8 é gratuito para baixar, instalar e usar. Antes de começar, certifique-se de instalar o Proxmox VE 8 em seu computador. Se você precisar de alguma ajuda nisso, leia este artigo .

Habilitando repositórios da comunidade Proxmox VE 8

Depois de instalar o Proxmox VE 8 em seu computador/servidor, certifique-se de habilitar os repositórios de pacotes da comunidade Proxmox VE 8 .

Por padrão, os repositórios de pacotes empresariais do Proxmox VE 8 estão habilitados e você não poderá obter/instalar atualizações e correções de bugs dos repositórios empresariais, a menos que tenha comprado licenças empresariais do Proxmox VE 8. Então, se você quiser usar o Proxmox VE 8 gratuitamente, certifique-se de habilitar os repositórios de pacotes da comunidade Proxmox VE 8 para obter as atualizações e correções de bugs mais recentes do Proxmox gratuitamente.

Instalando atualizações no Proxmox VE 8

Depois de ativou os repositórios de pacotes da comunidade Proxmox VE 8 , tenha certeza de instale todas as atualizações disponíveis em seu servidor Proxmox VE 8 .

Habilitando IOMMU do firmware BIOS/UEFI da sua placa-mãe

A configuração do IOMMU é encontrada em locais diferentes em placas-mãe diferentes. Para habilitar o IOMMU em sua placa-mãe, leia este artigo .

Habilitando IOMMU no Proxmox VE 8

Depois que o IOMMU estiver habilitado no lado do hardware, você também precisará habilitar o IOMMU no lado do software (do Proxmox VE 8).

Para habilitar o IOMMU do Proxmox VE 8, você deve adicionar os seguintes parâmetros de inicialização do kernel:

Fornecedor de processador Parâmetros de inicialização do kernel para adicionar
Informações intel_iommu=on, iommu=pt
AMD iommu=pt

Para modificar os parâmetros de inicialização do kernel do Proxmox VE 8, abra o /etc/default/grub arquivo com o editor de texto nano da seguinte forma:

$ nano /etc/default/grub

No final de GRUB_CMDLINE_LINUX_DEFAULT , adicione os parâmetros de inicialização do kernel necessários para ativar o IOMMU dependendo do processador que você está usando.

Como estou usando um processador AMD, adicionei apenas o parâmetro de inicialização do kernel iommu=pt no final de GRUB_CMDLINE_LINUX_DEFAULT linha no /etc/default/grub arquivo.

Quando terminar, pressione + X seguido pela E e para salvar o /etc/default/grub arquivo.

Agora, atualize as configurações de inicialização do GRUB com o seguinte comando:

$ atualização-grub2

Assim que as configurações de inicialização do GRUB forem atualizadas, clique em Reinício para reiniciar o servidor Proxmox VE 8 para que as alterações tenham efeito.

Verificando se o IOMMU está habilitado no Proxmox VE 8

Para verificar se o IOMMU está habilitado no Proxmox VE 8, execute o seguinte comando:

$ dmesg | grep -e DMAR -e IOMMU

Se o IOMMU estiver habilitado, você verá algumas saídas confirmando que o IOMMU está habilitado.

Se o IOMMU não estiver habilitado, você poderá não ver nenhuma saída.

Você também precisa ter o Remapeamento de interrupção IOMMU ativado para que a passagem PCI/PCIE funcione.

Para verificar se o remapeamento de interrupção IOMMU está habilitado em seu servidor Proxmox VE 8, execute o seguinte comando:

$ dmesg | grep 'remapeamento'

Como você pode ver, o remapeamento de interrupção IOMMU está habilitado em meu servidor Proxmox VE 8.

A maioria dos processadores AMD e Intel modernos terão o Remapeamento de interrupção IOMMU habilitado. Se por algum motivo você não tiver o Remapeamento de interrupção IOMMU habilitado, há uma solução alternativa. Você deve habilitar interrupções inseguras para VFIO. Leia este artigo para obter mais informações sobre como ativar interrupções inseguras em seu servidor Proxmox VE 8.

Carregando módulos VFIO Kernel no Proxmox VE 8

A passagem PCI/PCIE é feita principalmente pelos módulos do kernel VFIO (Virtual Function I/O) no Proxmox VE 8. Os módulos do kernel VFIO não são carregados no momento da inicialização por padrão no Proxmox VE 8. Mas é fácil carregar o VFIO módulos do kernel no momento da inicialização no Proxmox VE 8.

Primeiro, abra o /etc/modules-load.d/vfio.conf arquivo com o nano editor de texto da seguinte forma:

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

Digite as seguintes linhas no /etc/modules-load.d/vfio.conf arquivo.

vfio

vfio_iommu_type1

vfio_pci

Quando terminar, pressione + X seguido pela E e para salvar as alterações.

Agora, atualize o initramfs da instalação do Proxmox VE 8 com o seguinte comando:

$ update-initramfs -u -k tudo

Assim que o initramfs for atualizado, clique em Reinício para reiniciar o servidor Proxmox VE 8 para que as alterações tenham efeito.

Assim que o servidor Proxmox VE 8 inicializar, você verá que todos os módulos do kernel VFIO necessários estão carregados.

$lsmod | aderência vfio

Listando grupos IOMMU no Proxmox VE 8

Para passar dispositivos PCI/PCIE em máquinas virtuais (VMs) Proxmox VE 8, você precisará verificar os grupos IOMMU de seus dispositivos PCI/PCIE com bastante frequência. Para facilitar a verificação de grupos IOMMU, decidi escrever um script shell (peguei no GitHub, mas não consigo lembrar o nome do postador original) no caminho /usr/local/bin/print-iommu-groups para que eu possa simplesmente correr print-iommu-groups comando e imprimirá os grupos IOMMU no shell Proxmox VE 8.

Primeiro, crie um novo arquivo print-iommu-groups no caminho /usr/local/bin e abra-o com o editor de texto nano da seguinte forma:

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

Digite as seguintes linhas no print-iommu-groups arquivo:

#!/bin/bash

lojas -s nullglob

para g em ` encontrar / sistema / núcleo / iommu_groups /* -profundidade máxima 0 -tipo d | organizar -EM ` ; fazer

eco 'Grupo IOMMU ${g##*/} :'

para d em $g / dispositivos /* ; fazer

eco -e ' \t $(lspci -nns ${d##*/}) '

feito ;

feito ;

Quando terminar, pressione + X seguido pela E e para salvar as alterações no print-iommu-groups arquivo.

Faça o print-iommu-groups arquivo de script executável com o seguinte comando:

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

Agora você pode executar o print-iommu-groups comando da seguinte forma para imprimir os grupos IOMMU dos dispositivos PCI/PCIE instalados em seu servidor Proxmox VE 8:

$ imprimir-iommu-grupos

Como você pode ver, os grupos IOMMU dos dispositivos PCI/PCIE instalados no meu servidor Proxmox VE 8 são impressos.

Verificando se sua GPU NVIDIA pode ser transmitida para uma máquina virtual (VM) Proxmox VE 8

Para passar um dispositivo PCI/PCIE para uma máquina virtual (VM) Proxmox VE 8, ele deve estar em seu próprio grupo IOMMU. Se 2 ou mais dispositivos PCI/PCIE compartilharem um grupo IOMMU, você não poderá passar nenhum dos dispositivos PCI/PCIE desse grupo IOMMU para nenhuma máquina virtual (VMs) Proxmox VE 8.

Portanto, se sua GPU NVIDIA e seu dispositivo de áudio estiverem em seu próprio grupo IOMMU, você poderá passar a GPU NVIDIA para qualquer máquina virtual (VMs) Proxmox VE 8.

Em meu servidor Proxmox VE 8, estou usando uma placa-mãe MSI X570 ACE emparelhada com um processador Ryzen 3900X e GPU Gigabyte RTX 4070 NVIDIA. De acordo com os grupos IOMMU do meu sistema, posso passar pela GPU NVIDIA RTX 4070 (IOMMU Grupo 21), Controlador Ethernet RTL8125 2.5Gbe (IOMMU Grupo 20), Controlador Intel I211 Gigabit Ethernet (IOMMU Grupo 19), um controlador USB 3.0 ( Grupo IOMMU 24) e o controlador de áudio HD integrado (Grupo IOMMU 25).

$ imprimir-iommu-grupos

Como o foco principal deste artigo é configurar o Proxmox VE 8 para passar pela GPU NVIDIA para máquinas virtuais Proxmox VE 8, a GPU NVIDIA e seu dispositivo de áudio devem estar em seu próprio grupo IOMMU.

Verificando os módulos do kernel na lista negra para passagem PCI/PCIE no Proxmox VE 8

Para passar por um dispositivo PCI/PCIE em uma máquina virtual (VM) Proxmox VE 8, você deve certificar-se de que o Proxmox VE o força a usar o módulo de kernel VFIO em vez de seu módulo de kernel original.

Para descobrir o módulo do kernel que seus dispositivos PCI/PCIE estão usando, você precisará saber o ID do fornecedor e o ID do dispositivo desses dispositivos PCI/PCIE. Você pode encontrar o ID do fornecedor e o ID do dispositivo dos dispositivos PCI/PCIE usando o print-iommu-groups comando.

$ imprimir-iommu-grupos

Por exemplo, o ID do fornecedor e o ID do dispositivo da minha GPU NVIDIA RTX 4070 é 10de:2786 e seu dispositivo de áudio é 10de:22bc .

Para encontrar o módulo do kernel, um dispositivo PCI/PCIE 10de:2786 (minha GPU NVIDIA RTX 4070) está usando, execute o lspci comando da seguinte forma:

$ lspci -v -d 10de:2786

Como você pode ver, minha GPU NVIDIA RTX 4070 está usando o nvidiafb e novo módulos do kernel por padrão. Portanto, eles não podem ser passados ​​para uma máquina virtual (VM) Proxmox VE 8 neste momento.

O dispositivo de áudio da minha GPU NVIDIA RTX 4070 está usando o snd_hda_intel módulo do kernel. Portanto, também não pode ser transmitido em uma máquina virtual Proxmox VE 8 neste momento.

$ lspci -v -d 10de:22bc

Portanto, para passar minha GPU NVIDIA RTX 4070 e seu dispositivo de áudio em uma máquina virtual (VM) Proxmox VE 8, devo colocar o nvidiafb , novo , e snd_hda_intel módulos do kernel e configurar minha GPU NVIDIA RTX 4070 e seu dispositivo de áudio para usar o vfio-pci módulo do kernel.

Lista negra de módulos de kernel necessários para passagem PCI/PCIE no Proxmox VE 8

Para colocar módulos do kernel na lista negra no Proxmox VE 8, abra o /etc/modprobe.d/blacklist.conf arquivo com o editor de texto nano da seguinte maneira:

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

Para colocar os módulos do kernel na lista negra novo , nvidiafb , e snd_hda_intel módulos do kernel (para passar pela GPU NVIDIA), adicione as seguintes linhas no /etc/modprobe.d/blacklist.conf arquivo:

lista negra nova

lista negra nvidiafb

lista negra snd_hda_intel

Quando terminar, pressione + X seguido pela E e para salvar o /etc/modprobe.d/blacklist.conf arquivo.

Configurando sua GPU NVIDIA para usar o módulo VFIO Kernel no Proxmox VE 8

Para configurar o dispositivo PCI/PCIE (ou seja, sua GPU NVIDIA) para usar o módulo do kernel VFIO, você precisa saber o ID do fornecedor e o ID do dispositivo.

Neste caso, o ID do fornecedor e o ID do dispositivo da minha GPU NVIDIA RTX 4070 e seu dispositivo de áudio são 10de:2786 e 10de:22bc .

Para configurar sua GPU NVIDIA para usar o módulo de kernel VFIO, abra o /etc/modprobe.d/vfio.conf arquivo com o editor de texto nano da seguinte maneira:

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

Para configurar sua GPU NVIDIA e seu dispositivo de áudio com o : 10de:2786 e 10de:22bc (digamos) respectivamente para usar o módulo do kernel VFIO, adicione a seguinte linha ao /etc/modprobe.d/vfio.conf arquivo.

opções vfio-pci ids=10de:2786,10de:22bc

Quando terminar, pressione + X seguido pela E e para salvar o /etc/modprobe.d/vfio.conf arquivo.

Agora atualize o initramfs do Proxmove VE 8 com o seguinte comando:

$ update-initramfs -u -k tudo

Assim que o initramfs for atualizado, clique em Reinício para reiniciar o servidor Proxmox VE 8 para que as alterações tenham efeito.

Assim que o servidor Proxmox VE 8 inicializar, você verá que sua GPU NVIDIA e seu dispositivo de áudio ( 10de:2786 e 10de:22bc no meu caso) estão usando o vfio-pci módulo do kernel. Agora, sua GPU NVIDIA está pronta para ser passada para uma máquina virtual Proxmox VE 8.

$ lspci -v -d 10de:2786

$ lspci -v -d 10de:22bc

Passagem da GPU NVIDIA para uma máquina virtual (VM) Proxmox VE 8

Agora que sua GPU NVIDIA está pronta para passagem em máquinas virtuais (VMs) Proxmox VE 8, você pode passar sua GPU NVIDIA na máquina virtual Proxmox VE 8 desejada e instalar os drivers de GPU NVIDIA dependendo do sistema operacional que você está usando. aquela máquina virtual como de costume.

Para obter informações detalhadas sobre como passar sua GPU NVIDIA em uma máquina virtual (VM) Proxmox VE 8 com diferentes sistemas operacionais instalados, leia um dos seguintes artigos:

  • Como passar uma GPU NVIDIA para uma máquina virtual (VM) Proxmox VE 8 do Windows 11
  • Como passar uma GPU NVIDIA para uma máquina virtual (VM) Ubuntu 24.04 LTS Proxmox VE 8
  • Como passar uma GPU NVIDIA para uma máquina virtual (VM) LinuxMint 21 Proxmox VE 8
  • Como passar uma GPU NVIDIA para uma máquina virtual (VM) Debian 12 Proxmox VE 8
  • Como passar uma GPU NVIDIA para uma máquina virtual (VM) Elementary OS 8 Proxmox VE 8
  • Como passar uma GPU NVIDIA para uma máquina virtual (VM) Fedora 39+ Proxmox VE 8
  • Como passar por uma GPU NVIDIA em uma máquina virtual (VM) Arch Linux Proxmox VE 8
  • Como passar por uma GPU NVIDIA em uma máquina virtual (VM) Red Hat Enterprise Linux 9 (RHEL 9) Proxmox VE 8

Ainda tendo problemas com passagem PCI/PCIE em máquinas virtuais (VMs) Proxmox VE 8?

Mesmo depois de tentar tudo listado neste artigo corretamente, se a passagem PCI/PCIE ainda não funcionar para você, certifique-se de experimente alguns dos truques e/ou soluções alternativas de passagem Proxmox VE PCI/PCIE que você pode usar para obter trabalho de passagem PCI/PCIE em seu hardware.

Conclusão

Neste artigo, mostrei como configurar seu servidor Proxmox VE 8 para passagem PCI/PCIE para que você possa passar dispositivos PCI/PCIE (ou seja, sua GPU NVIDIA) para suas máquinas virtuais (VMs) Proxmox VE 8. Também mostrei como descobrir os módulos do kernel que você precisa colocar na lista negra e como colocá-los na lista negra para uma passagem bem-sucedida dos dispositivos PCI/PCIE desejados (ou seja, sua GPU NVIDIA) para uma máquina virtual Proxmox VE 8. Por fim, mostrei como configurar seus dispositivos PCI/PCIE desejados (ou seja, sua GPU NVIDIA) para usar os módulos do kernel VFIO, o que também é uma etapa essencial para uma passagem bem-sucedida de seus dispositivos PCI/PCIE desejados (ou seja, sua GPU NVIDIA). ) para uma máquina virtual (VM) Proxmox VE 8.

Referências

  1. Passagem PCI(e) – Proxmox VE
  2. Passagem PCI – Proxmox VE
  3. A máquina virtual de jogos definitiva no proxmox – YouTube