Viktiga Proxmox VE 8 PCI/PCIE Passthrough-justeringar, korrigeringar och lösningar

Viktiga Proxmox Ve 8 Pci Pcie Passthrough Justeringar Korrigeringar Och Losningar



Under de senaste åren har stödet för PCI/PCIE (dvs GPU-passthrough) förbättrats mycket i nyare hårdvara. Alltså den vanliga Proxmox VE PCI/PCIE och GPU-genomgångsguide bör fungera i de flesta nya hårdvara. Ändå kan du möta många problem med att passera genom GPU:er och andra PCI/PCIE-enheter på en virtuell Proxmox VE-maskin. Det finns många tweaks/fixar/lösningar för några av de vanliga Proxmox VE GPU- och PCI/PCIE-genomgångsproblemen.

I den här artikeln kommer jag att diskutera några av de vanligaste Proxmox VE PCI/PCIE-passthrough- och GPU-passthrough-problemen och de steg du kan vidta för att lösa dessa problem.









Innehållsförteckning

  1. Vad ska man göra om IOMMU Interrupt Remapping inte stöds?
  2. Vad ska jag göra om min GPU (eller PCI/PCIE-enhet) inte är i sin egen IOMMU-grupp?
  3. Hur svartlistar jag AMD GPU-drivrutiner på Proxmox VE?
  4. Hur svartlistar jag NVIDIA GPU-drivrutiner på Proxmox VE?
  5. Hur svartlistar jag Intel GPU-drivrutiner på Proxmox VE?
  6. Hur kontrollerar jag om min GPU (eller PCI/PCIE-enhet) använder VFIO-drivrutinen på Proxmox VE?
  7. Jag har svartlistat AMU GPU-drivrutiner, fortfarande använder GPU:n inte VFIO-drivrutinen, vad ska jag göra?
  8. Jag har svartlistat NVIDIA GPU-drivrutiner, fortfarande använder GPU:n inte VFIO-drivrutinen, vad ska jag göra?
  9. Jag har svartlistat Intel GPU-drivrutiner, fortfarande använder GPU:n inte VFIO-drivrutinen, vad ska jag göra?
  10. Enkel GPU använde VFIO-drivrutin, men när den konfigurerades en andra GPU fungerade den inte, varför?
  11. Varför inaktivera VGA-arbitrering för GPU:erna och hur man gör det?
  12. Vad händer om min GPU fortfarande inte använder VFIO-drivrutinen även efter att ha konfigurerat VFIO?
  13. GPU-genomföring visade inga fel, men jag får en svart skärm på skärmen ansluten till GPU:n som skickas till Proxmox VE VM, varför?
  14. Vad är AMD Vendor Reset Bug och hur löser man det?
  15. Hur tillhandahåller man ett vBIOS för den godkända GPU:n på en Proxmox VE Virtual Machine?
  16. Vad ska man göra om vissa appar kraschar Proxmox VE Windows Virtual Machine?
  17. Hur löser man HDMI-ljud sprakande/trasiga problem på Proxmox VE Linux virtuella maskiner?.
  18. Hur uppdaterar man Proxmox VE initramfs?
  19. Hur uppdaterar jag Proxmox VE GRUB Bootloader?
  20. Slutsats
  21. Referenser



Vad ska man göra om IOMMU Interrupt Remapping inte stöds?

För PCI/PCIE-passthrough är IOMMU-avbrottsomappning viktig.





För att kontrollera om din processor stöder IOMMU-avbrottsomappning, kör kommandot nedan:

$ dmesg | grep -i mappar om



Om din processor stöder IOMMU-avbrottsomappning, kommer du att se någon sorts utdata som bekräftar att avbrottsomappning är aktiverad. Annars kommer du inte att se några utgångar.

Om IOMMU-avbrottsomappning inte stöds på din processor, måste du konfigurera osäkra avbrott på din Proxmox VE-server för att passera PCI/PCIE-enheter på virtuella Proxmox VE-maskiner.

För att konfigurera osäkra avbrott på Proxmox VE, skapa en ny fil iommu_unsafe_interrupts.conf i /etc/modprobe.d katalog och öppna den med nanotextredigeraren enligt följande:

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

Lägg till följande rad i iommu_unsafe_interrupts.conf fil och tryck + X följd av OCH och för att spara filen.

alternativ vfio_iommu_type1 allow_unsafe_interrupts=1

När du är klar måste du uppdatera initramfs för din Proxmox VE-server .

Vad ska jag göra om min GPU (eller PCI/PCIE-enhet) inte ingår i sin egen IOMMU-grupp?

Om din server har flera PCI/PCIE-platser kan du flytta GPU:n till en annan PCI/PCIE-plats och se om GPU:n är i sin egen IOMMU-grupp.

Om det inte fungerar kan du prova att aktivera ACS-överstyrningskärnpatchen på Proxmox VE.

För att försöka aktivera ACS-överstyrningskärnpatchen på Proxmox VE, öppna /etc/default/grub fil med nanotextredigeraren enligt följande:

$ nano /etc/default/grub

Lägg till kärnstartalternativet pcie_acs_override=nedströms i slutet av GRUB_CMDLINE_LINUX_DEFAULT .

När du är klar trycker du på + X följd av OCH och för att spara filen och se till att uppdatera Proxmox VE GRUB bootloader för att ändringarna ska träda i kraft.

Du borde ha bättre IOMMU-gruppering när din Proxmox VE-server startar.

Om din GPU fortfarande inte har en egen IOMMU-grupp kan du gå ett steg längre genom att använda pcie_acs_override=nedströms, multifunktion istället. Du borde ha en ännu bättre IOMMU-gruppering.

Om pcie_acs_override=nedströms, multifunktion resulterar i bättre IOMMU-gruppering som pcie_acs_override=nedströms , varför använda pcie_acs_override=nedströms alls?

Tja, syftet med PCIE ACS åsidosättande är att lura kärnan att tro att PCIE-enheterna är isolerade när de inte är i verkligheten. Så, PCIE ACS-överstyrning kommer med säkerhets- och stabilitetsproblem. Det är därför du bör försöka använda ett mindre aggressivt PCIE ACS-överstyrningsalternativ pcie_acs_override=nedströms först och se om ditt problem är löst. Om pcie_acs_override=nedströms fungerar inte, först då bör du använda det mer aggressiva alternativet pcie_acs_override=nedströms, multifunktion .

Hur svartlistar jag AMD GPU-drivrutiner på Proxmox VE?

Om du vill passera igenom en AMD GPU på virtuella Proxmox VE-maskiner måste du svartlista AMD GPU-drivrutinerna och se till att den använder VFIO-drivrutinen istället.

Öppna först /etc/modprobe.d/blacklist.conf fil med nanotextredigeraren enligt följande:

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

För att svartlista AMD GPU-drivrutiner, lägg till följande rader i /etc/modprobe.d/blacklist.conf fil och tryck + X följd av OCH och för att spara filen.

svartlista radeon

svartlista amdgpu

När du är klar måste du uppdatera initramfs för din Proxmox VE-server för att ändringarna ska träda i kraft.

Hur svartlistar jag NVIDIA GPU-drivrutiner på Proxmox VE?

Om du vill gå igenom en NVIDIA GPU på virtuella Proxmox VE-maskiner måste du svartlista NVIDIA GPU-drivrutinerna och se till att den använder VFIO-drivrutinen istället.

Öppna först /etc/modprobe.d/blacklist.conf fil med nanotextredigeraren enligt följande:

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

För att svartlista NVIDIA GPU-drivrutiner, lägg till följande rader i /etc/modprobe.d/blacklist.conf fil och tryck + X följd av OCH och för att spara filen.

svartlista nouveau

svartlista nvidia

svartlista nvidiafb

svartlista nvidia_drm

När du är klar måste du uppdatera initramfs för din Proxmox VE-server för att ändringarna ska träda i kraft.

Hur svartlistar jag Intel GPU-drivrutiner på Proxmox VE?

Om du vill gå igenom en Intel GPU på virtuella Proxmox VE-maskiner måste du svartlista Intel GPU-drivrutinerna och se till att den använder VFIO-drivrutinen istället.

Öppna först /etc/modprobe.d/blacklist.conf fil med nanotextredigeraren enligt följande:

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

För att svartlista Intel GPU-drivrutiner, lägg till följande rader i /etc/modprobe.d/blacklist.conf fil och tryck + X följd av OCH och för att spara filen.

svartlista snd_hda_intel

svartlista snd_hda_codec_hdmi

svartlista i915

När du är klar måste du uppdatera initramfs för din Proxmox VE-server för att ändringarna ska träda i kraft.

Hur kontrollerar jag om min GPU (eller PCI/PCIE-enhet) använder VFIO-drivrutinen på Proxmox VE?

För att kontrollera om din GPU eller önskade PCI/PCIE-enheter använder VFIO-drivrutinen, kör följande kommando:

$ lspci -v

Om din GPU eller PCI/PCIE-enhet använder VFIO-drivrutinen bör du se raden Kärndrivrutin som används: vfio-pci som markerats i skärmdumpen nedan.

Jag har svartlistat AMU GPU-drivrutiner, fortfarande använder GPU:n inte VFIO-drivrutinen, vad ska jag göra?

Ibland är det inte tillräckligt att svartlista AMD GPU-drivrutinerna, du måste också konfigurera AMD GPU-drivrutinerna för att ladda efter VFIO-drivrutinen.

För att göra det, öppna /etc/modprobe.d/vfio.conf fil med nanotextredigeraren enligt följande:

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

För att konfigurera AMD GPU-drivrutiner för att ladda efter VFIO-drivrutinen, lägg till följande rader i /etc/modprobe.d/vfio.conf fil och tryck + X följd av OCH och för att spara filen.

softdep radeon pre: vfio-pci

softdep amdgpu pre: vfio-pci

När du är klar måste du uppdatera initramfs för din Proxmox VE-server för att ändringarna ska träda i kraft.

Jag har svartlistat NVIDIA GPU-drivrutiner, fortfarande använder GPU:n inte VFIO-drivrutinen, vad ska jag göra?

Ibland är det inte tillräckligt att svartlista NVIDIA GPU-drivrutinerna, du måste också konfigurera NVIDIA GPU-drivrutinerna för att ladda efter VFIO-drivrutinen.

För att göra det, öppna /etc/modprobe.d/vfio.conf fil med nanotextredigeraren enligt följande:

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

För att konfigurera NVIDIA GPU-drivrutinerna så att de laddas efter VFIO-drivrutinen, lägg till följande rader i /etc/modprobe.d/vfio.conf fil och tryck + X följd av OCH och för att spara filen.

softdep ny pre: vfio-pci

softdep nvidia för: vfio-pci

softdep nvidiafb för: vfio-pci

softdep nvidia_drm pre: vfio-pci

softdep drm pre: vfio-pci

När du är klar måste du uppdatera initramfs för din Proxmox VE-server för att ändringarna ska träda i kraft.

Jag har svartlistat Intel GPU-drivrutiner, fortfarande använder GPU:n inte VFIO-drivrutinen, vad ska jag göra?

Ibland är det inte tillräckligt att svartlista Intel GPU-drivrutinerna, du måste också konfigurera Intel GPU-drivrutinerna för att ladda efter VFIO-drivrutinen.

För att göra det, öppna /etc/modprobe.d/vfio.conf fil med nanotextredigeraren enligt följande:

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

För att konfigurera Intel GPU-drivrutinerna så att de laddas efter VFIO-drivrutinen, lägg till följande rader i /etc/modprobe.d/vfio.conf fil och tryck + X följd av OCH och för att spara filen.

softdep snd_hda_intel pre: vfio-pci

softdep snd_hda_codec_hdmi pre: vfio-pci

softdep i915 pre: vfio-pci

När du är klar måste du uppdatera initramfs för din Proxmox VE-server för att ändringarna ska träda i kraft.

Enkel GPU använde VFIO-drivrutin, men när den konfigurerades en andra GPU fungerade den inte, varför?

I den /etc/modprobe.d/vfio.conf fil måste du lägga till ID:n för alla PCI/PCIE-enheter som du vill använda VFIO-drivrutinen på en enda rad. En enhet per rad fungerar inte.

Om du till exempel har 2 grafikprocessorer som du vill konfigurera för att använda VFIO-drivrutinen måste du lägga till deras ID på en enda rad i /etc/modprobe.d/vfio.conf fil enligt följande:

alternativ vfio-pci ids=,,,

Om du vill lägga till ytterligare en GPU till listan lägger du bara till den i slutet av den befintliga vfio-pci linje i /etc/modprobe.d/vfio.conf fil enligt följande:

alternativ vfio-pci ids=,,,,,

Gör aldrig det här. Även om det ser mycket renare ut, fungerar det inte. Jag önskar att vi kunde specificera PCI/PCIE-ID på detta sätt.

alternativ vfio-pci ids=,

alternativ vfio-pci ids=,

alternativ vfio-pci ids=,

Varför inaktivera VGA-arbitrering för GPU:erna och hur man gör det?

Om du använder UEFI/OVMF BIOS på den virtuella Proxmox VE-maskinen där du vill passera genom GPU:n, kan du inaktivera VGA-arbitration vilket kommer att minska de äldre koder som krävs under uppstart.

För att inaktivera VGA-arbitration för GPU:erna, lägg till disable_vga=1 i slutet av vfio-pci-alternativ i /etc/modprobe.d/vfio.conf fil enligt nedan:

alternativ vfio-pci ids=,,, disable_vga=1

Vad händer om min GPU fortfarande inte använder VFIO-drivrutinen även efter att ha konfigurerat VFIO?

Även efter att ha gjort allt korrekt, om din GPU fortfarande inte använder VFIO-drivrutinen, måste du prova att starta upp Proxmox VE med kärnalternativ som inaktiverar videoframebuffern.

På Proxmox VE 7.1 och äldre, nofb nomodeset video=vesafb:off video=efifb:off video=simplefb:off kärnalternativ inaktiverar GPU-rambufferten för din Proxmox VE-server.

På Proxmox VE 7.2 och nyare, initcall_blacklist=sysfb_init kärnalternativet gör ett bättre jobb med att inaktivera GPU-rambufferten för din Proxmox VE-server.

Öppna GRUB bootloader-konfigurationsfilen /etc/default/grub fil med nanotextredigeraren med följande kommando:

$ nano /etc/default/grub

Lägg till kärnalternativet initcall_blacklist=sysfb_init i slutet av GRUB_CMDLINE_LINUX_DEFAULT .

När du är klar trycker du på + X följd av OCH och för att spara filen och se till att uppdatera Proxmox VE GRUB bootloader för att ändringarna ska träda i kraft.

GPU-genomföring visade inga fel, men jag får en svart skärm på skärmen ansluten till GPU:n som skickas till Proxmox VE VM, varför?

När du har skickat en GPU till en virtuell Proxmox VE-maskin, se till att använda Standard Grafikkort innan du startar den virtuella maskinen. På så sätt kommer du att kunna komma åt visningen av den virtuella maskinen från Proxmox VE-webbhanteringsgränssnittet, ladda ner GPU-drivrutininstallationsprogrammet på den virtuella maskinen och installera det på den virtuella maskinen.

När GPU-drivrutinen är installerad på den virtuella maskinen kommer skärmen för den virtuella maskinen att visas på skärmen som är ansluten till GPU:n som du också har skickat till den virtuella maskinen.

När GPU-drivrutinen är installerad på den virtuella maskinen och skärmen för den virtuella maskinen visas på monitorn som är ansluten till GPU:n (överförs till den virtuella maskinen), stäng av den virtuella maskinen och ställ in Display Grafikkort av den virtuella maskinen till ingen .

När du är inställd, nästa gång du slår på den virtuella maskinen, kommer skärmen för den virtuella maskinen att visas på monitorn som är ansluten till GPU:n (överförs till den virtuella maskinen), ingenting kommer att visas på Proxmox VE-webben hanteringsgränssnitt. På så sätt får du samma upplevelse som att använda en riktig dator trots att du använder en virtuell maskin.

Kom ihåg, använd aldrig SPICE, VirtIO GPU och VirGL GPU Display Grafikkort på den virtuella Proxmox VE-maskinen som du konfigurerar för GPU-genomföring eftersom den har stor chans att misslyckas.

Vad är AMD Vendor Reset Bug och hur löser man det?

AMD GPU:er har en välkänd bugg som kallas 'leverantörsåterställningsbugg'. När en AMD GPU väl har skickats till en virtuell Proxmox VE-maskin och du stänger av den här virtuella maskinen, kommer du inte att kunna använda AMD GPU i en annan virtuell Proxmox VE-maskin. Ibland kommer din Proxmox VE-server att sluta svara som ett resultat. Detta kallas 'leverantörsåterställningsbugg' för AMD GPU:er.

Anledningen till att detta händer är att AMD GPU:er inte kan återställa sig själva korrekt efter att ha skickats till en virtuell maskin. För att åtgärda det här problemet måste du återställa din AMD GPU ordentligt. För mer information om hur du installerar AMD-leverantörsåterställningen på Proxmox VE, läs den här artikeln och läs den här tråden på Proxmox VE-forumet . Också, kolla leverantörens återställningssida för GitHub .

Hur tillhandahåller man ett vBIOS för den godkända GPU:n på en Proxmox VE Virtual Machine?

Om du har installerat GPU:n på den första kortplatsen på ditt moderkort, kanske du inte kan passera GPU:n i en virtuell Proxmox VE-maskin som standard. Vissa moderkort skuggar vBIOS för GPU:n installerad på den första kortplatsen som standard, vilket är anledningen till att GPU:n installerad på den första kortplatsen på dessa moderkort inte kan skickas till virtuella maskiner.

Lösningen på detta problem är att installera GPU:n på moderkortets andra kortplats, extrahera vBIOS för GPU:n, installera GPU:n på moderkortets första kortplats och skicka GPU:n till en virtuell Proxmox VE-maskin tillsammans med den extraherade vBIOS för GPU:n.

För att lära dig hur du extraherar vBIOS för din GPU, läs den här artikeln .

När du har skaffat vBIOS för din GPU måste du lagra vBIOS-filen i /usr/share/kvm/ katalogen på din Proxmox VE-server för att komma åt den.

När vBIOS-filen för din GPU har lagrats i /usr/share/kvm/ katalogen måste du konfigurera din virtuella maskin för att använda den. För närvarande finns det inget sätt att specificera vBIOS-filen för PCI/PCIE-enheter för virtuella Proxmox VE-maskiner från Proxmox VE-webbhanteringsgränssnittet. Så du måste göra allt från Proxmox VE-skalet/kommandoraden.

Du kan hitta Proxmox VE virtuella maskinkonfigurationsfiler i /etc/pve/qemu-server/ katalogen för din Proxmox VE-server. Varje virtuell Proxmox VE-maskin har en konfigurationsfil i denna katalog i formatet .conf .

Till exempel, för att öppna konfigurationsfilen för den virtuella Proxmox VE-maskinen (för redigering) för den virtuella maskinens ID 100, måste du köra följande kommando:

$ nano /etc/pve/qemu-server/100.conf

I den virtuella maskinens konfigurationsfil måste du lägga till romfil= i hostpciX linje som är ansvarig för att skicka GPU:n på den virtuella maskinen.

Till exempel, om vBIOS-filnamnet för min GPU är gigabyte-nvidia-1050ti.bin , och jag har passerat GPU:n på den första kortplatsen (plats 0) på den virtuella maskinen ( hostpci0 ), sedan i 100.conf fil ska raden vara som följer:

hostpci0: ,x-vga=on,romfile=gigabyte-nvidia-1050ti.bin

När du är klar sparar du den virtuella maskinens konfigurationsfil genom att trycka på + X följd av OCH och , starta den virtuella maskinen och kontrollera om GPU-genomgången fungerar.

Vad ska man göra om vissa appar kraschar Proxmox VE Windows Virtual Machine?

Vissa appar som GeForce Experience, Passmark, etc. kan krascha Proxmox VE Windows virtuella maskiner. Du kan också uppleva en plötslig blå skärm av död (BSOD) på dina virtuella Proxmox VE Windows-maskiner. Anledningen till att det händer är att den virtuella Windows-maskinen kan försöka komma åt de modellspecifika registren (MSR) som faktiskt inte är tillgängliga och beroende på hur din hårdvara hanterar MSR-förfrågningar kan ditt system krascha.

Lösningen på detta problem är att ignorera MSR-meddelanden på din Proxmox VE-server.

För att konfigurera MSR på din Proxmox VE-server, öppna /etc/modprobe.d/kvm.conf fil med nanotextredigeraren enligt följande:

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

För att ignorera MSRs på din Proxmox VE-server, lägg till följande rad i /etc/modprobe.d/kvm.conf fil.

alternativ kvm ignore_msrs=1

När MSRs ignoreras kan du se många MSR-varningsmeddelanden i din dmesg-systemlogg. För att undvika det kan du ignorera MSRs samt inaktivera loggning av MSRs varningsmeddelanden genom att lägga till följande rad istället:

alternativ kvm ignore_msrs=1 report_ignored_msrs=0

När du är klar trycker du på + X följd av OCH och för att spara /etc/modprobe.d/kvm.conf fil och uppdatera initramfs för din Proxmox VE-server för att ändringarna ska träda i kraft.

Hur löser jag HDMI-ljud sprakande / trasiga problem på Proxmox VE Linux virtuella maskiner?

Om du har skickat GPU:n till en virtuell Linux Proxmox VE-maskin och du får dålig ljudkvalitet på den virtuella maskinen, måste du aktivera MSI (Message Signal Interrupt) för ljudenheten på den virtuella Proxmox VE-maskinen.

För att aktivera MSI på den virtuella Linux Proxmox VE-maskinen, öppna /etc/modprobe.d/snd-hda-intel.conf fil med nanotextredigeraren på den virtuella maskinen med följande kommando:

$ sudo nano /etc/modprobe.d/snd-had-intel.conf

Lägg till följande rad och spara filen genom att trycka på + X följd av OCH och .

alternativ snd-hda-intel enable_msi=1

För att ändringarna ska träda i kraft, starta om den virtuella Linux-maskinen med följande kommando:

$ sudo omstart

När den virtuella maskinen startar, kontrollera om MSI är aktiverat för ljudenheten med följande kommando:

$ sudo lspci -vv

Om MSI är aktiverat för ljudenheten på den virtuella maskinen bör du se den markerade raden i ljudenhetsinformationen.

Hur uppdaterar man Proxmox VE initramfs?

Varje gång du gör några ändringar i filer i /etc/modules-load.d/ och /etc/modprobe.d/ kataloger måste du uppdatera initramfs för din Proxmox VE 8 installation med följande kommando:

$ update-initramfs -u -k alla

När Proxmox VE initramfs har uppdaterats, starta om din Proxmox VE-server för att ändringarna ska träda i kraft.

$ starta om

Hur uppdaterar jag Proxmox VE GRUB Bootloader?

Varje gång du uppdaterar Proxmox VE GRUB-startkonfigurationsfilen /etc/default/grub måste du uppdatera GRUB-starthanteraren för att ändringarna ska träda i kraft.

För att uppdatera Proxmox VE GRUB bootloader med de nya konfigurationerna, kör följande kommando:

$ update-grub2

När GRUB-starthanteraren har uppdaterats med den nya konfigurationen, starta om din Proxmox VE-server för att ändringarna ska träda i kraft.

$ starta om

Slutsats

I den här artikeln har vi diskuterat några av de vanligaste Proxmox VE PCI/PCIE-passthrough- och GPU-passthrough-problemen och de steg du kan vidta för att lösa dessa problem.

Referenser

  1. [TUTORIAL] – PCI/GPU Passthrough på Proxmox VE 8 : Installation och konfiguration | Proxmox Supportforum
  2. Ultimat nybörjarguide till Proxmox GPU-genomföring
  3. Läsa och skriva modellspecifika register i Linux
  4. MSI-drivrutinsguide HOWTO — Linux-kärnan-dokumentationen