"title":"Lägg till GPU i VM | ProxMenux-dokumentation",
"description":"Tilldela en fysisk GPU till en Proxmox-VM. ProxMenux kontrollerar IOMMU, konfigurerar VFIO och VM-enheter samt upptäcker konflikter med andra VM:er eller LXC."
},
"header":{
"title":"Lägg till GPU till VM (Passthrough)",
"description":"Identifierar Intel-, AMD- eller NVIDIA-GPU:er för direkt åtkomst från en VM. Kontrollerar IOMMU och tillhörande enheter, konfigurerar VFIO och VM samt tillämpar kompatibilitetsregler. Kontrollera alla berörda enheter.",
"section":"Hårdvara: GPU:er och Coral-TPU"
},
"intro":{
"title":"Vad det gör",
"body":"Automatiserar värd- och <code>hostpci</code>-stegen i <pveLink>Proxmox-dokumentationen för PCI-passthrough</pveLink>. Kontrollerar tilldelningar i <em>andra</em> gäster och erbjuder konflikthantering. Garanterar inte stöd för varje GPU, återställningsmetod eller gästdrivrutin."
},
"who":{
"heading":"Vem är detta för?",
"body":"För direkt GPU-åtkomst från en <strong>virtuell maskin</strong> via VFIO. Så länge GPU:n är bunden till VFIO kan värdens drivrutin inte använda den, även med stoppad VM. För delning med <em>LXC</em>, använd <lxcLink>Lägg till GPU i LXC</lxcLink>."
},
"prereqs":{
"title":"Innan du börjar",
"gpu":"Fysiskt installerad <strong>kompatibel GPU</strong>. Skriptet hittar Intel, AMD och NVIDIA med <code>lspci</code>.",
"gpuCheck":"lspci | grep -iE 'VGA|3D|Display'",
"iommu":"<strong>IOMMU-stöd</strong> krävs i hårdvara och vid behov firmware (Intel VT-d eller AMD-Vi). Kontrollerar systemet och kan konfigurera Linux; ändrar inte BIOS/UEFI och bevisar inte att inaktiv IOMMU är avstängd där.",
"q35":"Guiden kräver <strong>q35</strong> och avvisar <code>i440fx</code>. Maskintyp och BIOS/UEFI är separata inställningar. Byte av chipset på en befintlig VM kräver planering och sker inte automatiskt.",
"q35Check":"qm config VMID | grep machine",
"moreGpus":"Förbered <strong>en annan GPU eller alternativ åtkomst</strong> via SSH, IPMI eller seriellt. Reserverad primär GPU kan släcka lokal bild. För <em>NVIDIA</em> kan ett kort utanför berörd IOMMU-grupp stanna på värden.",
"nvidiaInstalled":"Efter <nvidiaLink>NVIDIA-installation på värden</nvidiaLink> reserveras valda funktioner för <code>vfio-pci</code> i stället för <code>nvidia</code>. Modulen <code>nvidia</code> kan finnas kvar för <strong>andra</strong> kort utanför berörd IOMMU-grupp. Kontrollera med <code>nvidia-smi</code>."
},
"pickOne":{
"title":"Exklusiv VM-tilldelning eller LXC-delning",
"body":"En GPU bunden till <code>vfio-pci</code> för VM genomgång kan inte samtidigt användas av värden eller en LXC. Om du har två GPU kan du ägna en till varje väg. Om du bara har en, välj:",
"vmItem":"<strong>VM:</strong> direkt och exklusiv åtkomst för den VM:n.",
"lxcItem":"<strong>LXC (<lxcLink>Lägg till GPU i LXC</lxcLink>):</strong> delar enheten med värden och andra containrar via den vanliga drivrutinen."
},
"running":{
"heading":"Kör installationen",
"body":"Öppna ProxMenux och välj <strong>Hårdvara: GPU:er och Coral-TPU → Lägg till GPU i VM</strong>.",
"imageAlt":"Menyval för att lägga till GPU i VM"
},
"howRuns":{
"heading":"Så fungerar skriptet",
"body":"Identifiering och val föregår huvudändringarna, som bekräftas i en sammanfattning. Aktivering av IOMMU har en tidigare egen bekräftelse och kan redan ändra startkonfigurationen. Senare ljudrensning kan också kräva ett val."
"body":"Betraktar IOMMU som aktivt endast när den körande kärnan har <code>intel_iommu=on</code> eller <code>amd_iommu=on</code> och IOMMU-grupper finns. Om parametern redan är sparad för nästa start fortsätter den i läget väntande omstart; annars kan ett separat bekräftat steg lägga till den med <code>iommu=pt</code>. Dess heuristik för startfilen använder <code>/etc/kernel/cmdline</code> när en ZFS-rotmarkör som <code>root=ZFS=</code> finns där; annars används <code>/etc/default/grub</code>. Heuristiken bevisar inte vilken starthanterare som faktiskt används. Nykonfigurerad IOMMU börjar gälla efter omstart; kontrollera de faktiska grupperna efteråt.",
"tipTitle":"Har du redan gjort efterinstallationen?",
"tipBody":"Om <postLink>VFIO IOMMU-stöd</postLink> redan är inställt och aktivt i kerneln godkänns kontrollen. En inställning för nästa start bevisar inte att det är aktivt nu.",
"imageAlt":"Lista över upptäckta GPU med leverantör och PCI-adress"
},
"preflight":{
"title":"Välj GPU och kör förkontroller",
"intro":"När du väljer GPU kör manuset en serie kontroller som kan varje blockera ytterligare framsteg:",
"items":[
"<strong>SR-IOV-kontroll.</strong> Avvisar VF:er och PF:er med aktiva VF:er eftersom flödet tilldelar hela enheter, inte konfigurerar SR-IOV. Ställ in SR-IOV separat på kompatibel hårdvara.",
"<strong>En enda GPU.</strong> Den lokala konsolen kan förlora bildutmatningen när VFIO reserverar GPU:n. Kontrollera först SSH- eller webbåtkomst från en annan dator.",
"<strong>AMD-policy för återställning.</strong> Läser <code>/sys/bus/pci/devices/<pci>/reset_method</code>. APU eller separat kort utan FLR <em>blockeras av guidens policy</em>; okänd undertyp utan FLR kräver bekräftelse. Det bevisar inte att funktionen är omöjlig i alla miljöer.",
"<strong>D3cold-läge.</strong> Guiden blockerar AMD-kort som rapporterar <code>D3cold</code> på grund av risk för aktiveringsfel. Kontrollera strömhantering och firmware.",
"<strong>Analys av IOMMU-grupp.</strong> Läser <code>/sys/kernel/iommu_groups/</code> och tar med <em>alla medlemmar utom bryggor</em> i VM-planen, möjligen nätverks- eller lagringskontroller. Om gruppen innehåller enheter från en annan PCI-plats listar skriptet dem före sammanfattningen; kontrollera att värden inte behöver någon av dem. Om IOMMU väntar på omstart är de faktiska grupperna inte tillgängliga och planen innehåller först bara den valda GPU-funktionen; kontrollera isoleringen efter omstarten."
"audioIntro":"<strong>Tillhörande ljud.</strong> Två fall beroende på var kontrollern finns:",
"audioDgpu":"<strong>Separat GPU:</strong> HDMI-ljud finns ofta på funktion <code>.1</code> i samma PCI-plats och tas med om det hittas. Om värden använde ljudet förlorar den åtkomsten när det reserveras för VM:n.",
"audioIgpu":"<strong>Utan ljudfunktion <code>.1</code>:</strong> kan ljudet finnas på en annan enhet som <code>00:1f.3</code>. Listar kontroller och drivrutiner, exempelvis <code>snd_hda_intel</code>. Som standard väljs <strong>ingen</strong>; välj bara de som behövs."
},
"pickVm":{
"title":"Välj mål-VM",
"body":"Välj VM i listan. Kräver q35 och återanvänder befintliga GPU-poster där det går. BIOS/UEFI är en separat inställning, inte en maskintyp. Chipset och gästsystemets startläge ändras inte automatiskt.",
"imageAlt":"Val av VM efter namn, ID och status"
},
"switchMode":{
"title":"Hantera befintliga tilldelningar",
"intro":"Manuset skannar varje VM-konfig och varje LXC-konfig på värden som letar efter GPU du valde. Tre möjliga resultat:",
"items":[
"<strong>GPU tillgänglig.</strong> Fortsätter utan att ta bort tilldelningar.",
"<strong>Tilldelad till en annan VM.</strong> Stoppa först källan. Välj <em>behåll poster och inaktivera automatisk start</em> eller <em>ta bort poster och behåll automatisk start</em>. Med aktiv <code>vfio-pci</code> utan nödvändiga värdändringar kan VM→VM ske utan omstart av värden.",
"<strong>GPU som används av LXC.</strong> För vanliga containrar, välj <em>behåll GPU-konfigurationen och inaktivera automatisk start</em> eller <em>ta bort GPU-enhetskonfigurationen och behåll automatisk start</em>. Borttagningen raderar <code>devN</code>-posterna och, för AMD/Intel, även äldre <code>/dev/dri</code>-regler för <code>lxc.mount.entry</code> och <code>lxc.cgroup2.devices.allow</code>. OCI-containrar behåller sin konfiguration och stoppas med automatisk start inaktiverad; ta bort deras GPU via OCI manager Apps. Konfliktidentifieringen sker per GPU-enhetsfamilj och kan omfatta andra kort i samma familj."
"imageAlt":"Dialog erbjudande att ta bort GPU från en LXC innan tilldela den till VM",
"smartTitle":"Granska tillhörande ljud när GPU:n tas bort",
"smartBody":"Därefter kan en lista med <strong>möjligen oanvända ljudenheter</strong> i käll-VM:n visas. Avmarkera sådant som fortfarande behövs. Exempelvis kan <code>02:00.1</code> behållas medan <code>00:1f.3</code> föreslås tas bort. Valet styr borttagningen; alla ljud-/bildkopplingar är inte garanterade."
},
"audioPick":{
"title":"Välj nödvändiga kontroller om .1-ljud saknas",
"body":"Det händer bara för Intel iGPU och liknande uppsättningar av split-audio. En checklista visar varje PCI ljudkontroll på värden (exklusive någon redan i GPU IOMMU grupp), märkt med sin nuvarande drivrutin. Välj de du vill - eller ingen, om VM inte behöver ljud från värd hårdvaran.",
"imageAlt":"Checklista dialog med varje värd PCI ljudkontroller (BDF + förare) när GPU har ingen .1 syskon ljud",
"warnTitle":"Välj inte ljud som värden behöver",
"warnBody":"Ljudtilldelning kan ta bort värdens åtkomst; kontrollern kan inte samtidigt tillhöra en annan aktiv VM. Lämna onödigt ljud omarkerat och kontrollera tilldelningarna. Konsolens pip kommer inte nödvändigtvis från PCI-ljud."
"body":"Granska den slutliga planen för värd och VM och avbryt om den är fel. Den visar IOMMU-gruppen och antalet enheter i den; medlemmar från en annan PCI-plats listas i föregående steg. Att avbryta stoppar huvudändringarna men återställer inte en tidigare separat bekräftad ändring av IOMMU-startkonfigurationen.",
"<code>/etc/modprobe.d/vfio.conf</code> — AMD/Intel: <code>options vfio-pci ids=<vendor:device,...> disable_vga=1</code>. NVIDIA: <code>softdep nvidia pre: vfio-pci</code> (<code>_drm</code>/<code>_modeset</code>/<code>_uvm</code>); den faktiska bindningen sker per BDF. AMD lägger till inläsningsordningen <code>softdep</code>: <code>vfio-pci</code> → <code>radeon</code>/<code>amdgpu</code>.",
"Skriver <code>/etc/modprobe.d/iommu_unsafe_interrupts.conf</code> och <code>kvm.conf</code> med <code>allow_unsafe_interrupts=1</code> och <code>ignore_msrs=1</code>. Detta är skriptets kompatibilitetsval, inga universella Windows/macOS-krav; osäkra avbrott försvagar avbrottsomappningens skydd.",
"<code>/etc/modprobe.d/blacklist.conf</code>: NVIDIA — <code>nouveau</code>/<code>lbm-nouveau</code>; AMD — <code>radeon</code> + <code>amdgpu</code>; Intel — <code>i915</code>. Dessa regler per tillverkare kan påverka andra kort med samma drivrutin. Modulen <code>nvidia</code> blockeras <strong>bara</strong> via <code>/etc/modprobe.d/proxmenux-nvidia-vfio-blacklist.conf</code> när <em>alla</em> värdens NVIDIA-kort är registrerade för VFIO.",
"<code>/etc/udev/rules.d/10-proxmenux-vfio-bind.rules</code> + <code>/etc/proxmenux/vfio-bind.bdfs</code> — <strong>Endast NVIDIA.</strong> Sätter <code>ATTR'{'driver_override'}'=\"vfio-pci\"</code> vid PCI ADD för registrerade BDF:er, inklusive berörda IOMMU-gruppfunktioner. Utanför grupperna kan <code>nvidia</code> behållas. BDF-policy delar inte upp hårdvarans IOMMU-grupp.",
"<strong>Endast AMD.</strong> Försöker dumpa ROM från <code>/sys/bus/pci/.../rom</code> eller ACPI VFCT till <code>/usr/share/kvm/vbios_<vendor>_<device>.bin</code>. Vid framgång använder VM:en <code>romfile=</code>. En giltig dump garanterar inte att GPU-initialiseringen lyckas.",
"<strong>Endast NVIDIA.</strong> Stoppar och inaktiverar <code>nvidia-persistenced</code>, <code>nvidia-powerd</code>, <code>nvidia-fabricmanager</code> bara när alla NVIDIA-kort reserverats för VFIO. Vid blandad användning behålls tjänsterna och <code>nvidia</code> för vanliga värdkort.",
"<code>update-initramfs -u -k all</code> - körs endast om något av ovanstående faktiskt ändrats."
]
},
"vmApply":{
"title":"VM konfig appliceras via qm set",
"body":"VM-konfig på <code>/etc/pve/qemu-server/<vmid>.conf</code> uppdateras via <code>qm set</code> (aldrig via direkt <code>sed</code>):",
"after1":"Lägger till <code>x-vga=1</code> för AMD och NVIDIA, <strong>inte</strong> Intel. Det är skriptets policy, inget bevis för att alla Intel-iGPU:er saknar firmware eller att flaggan alltid orsakar låsningar.",
"after2":"Ytterligare <code>hostpciN</code>-linjer läggs till om GPUs IOMMU-grupp innehåller andra enheter du behöver för att passera tillsammans."
},
"reboot":{
"title":"Starta om när värdändringen kräver det",
"body":"Följ omstartsanvisningen vid ändringar av start eller drivrutiner och kontrollera aktiv GPU-bindning före VM-start. Sparad konfiguration bevisar inte att den är aktiv. VM→VM med rätt VFIO-läge kan slippa värdomstart.",
"imageAlt":"Sammanfattning skärmen visar vad som ändrades, följt av en omstart prompt"
}
},
"vendors":{
"heading":"Anmärkningar per tillverkare",
"nvidiaHeading":"NVIDIA",
"nvidiaBody":"Behåller en äldre lösning för <em>Code 43</em>: <code>hidden=1</code>, ID <code>NV43FIX</code> i <code>args</code> och <code>kvm=off</code>. Inget universellt krav för moderna GeForce-drivrutiner: NVIDIA aktiverade Windows-VM-passthrough i R465. Felet kan ha andra orsaker; kontrollera GPU och drivrutin.",
"nvidiaMultiHeading":"Multi-GPU NVIDIA stöd",
"nvidiaMultiBody":"Blandad NVIDIA-användning <strong>per BDF</strong>. Registrerar <code>vfio-pci</code>-funktioner efter adress, inte bara ID <code>vendor:device</code>. Utanför berörda grupper kan <code>nvidia</code> behållas; kontrollera med <code>nvidia-smi</code>. Isolerar inte två kort i samma grupp.",
"amdHeading":"AMD",
"amdBody":"Vissa AMD-GPU:er misslyckas med återställning efter VM-stopp. Guiden kontrollerar rapporterade egenskaper, inte alla verkliga cykler. <vendorResetLink>vendor-reset</vendorResetLink> stöder en begränsad lista och kräver kompatibel kernel samt tidig inläsning; installeras inte automatiskt. Även <em>RadeonResetBugFix</em> för Windows är hårdvaruberoende, utan allmän garanti.",
"intelHeading":"Intel iGPU",
"intelBody":"Full Intel-iGPU-passthrough och SR-IOV är skilda flöden. Guiden reserverar hela enheten för en VM utan <code>x-vga=1</code>. <sriovLink>i915-sriov-dkms</sriovLink> kräver kompatibel hårdvara och kernel; ”UHD 630+” är ingen kompatibilitetsregel. Planera alternativ värdåtkomst."
},
"verification":{
"heading":"Verifiering"
},
"troubleshoot":{
"heading":"Felsökning",
"code43Title":"Kod 43 i Windows (NVIDIA)",
"code43Body":"Code 43 bevisar inte att KVM-döljning misslyckats. Granska <code>qm config VMID | grep -E \"cpu|args\"</code> med rätt VMID samt <code>hidden=1</code> och <code>hv_vendor_id=NV43FIX</code>. Kontrollera även gästdrivrutin, firmware och tilldelning. En ny körning kan avslutas direkt vid befintlig tilldelning.",
"amdResetTitle":"AMD GPU fungerar en gång, misslyckas på VM omstart",
"amdResetBody":"Ett återställningsfel är en möjlig orsak. Omstart eller av-/påslagning kan hjälpa tillfälligt. Kontrollera stöd och tidig inläsning av <code>vendor-reset</code>; enbart <code>softdep amdgpu pre: vendor-reset</code> garanterar inte inläsning före VFIO. Även <em>RadeonResetBugFix</em> kräver kompatibel GPU.",
"stuckBootTitle":"VM fastnade start / GPU inte upptäckt",
"stuckBootBody":"Kontrollera den verkliga adressen med <code>lspci -nnk -s PCI_ADDRESS</code>; förvänta <code>Kernel driver in use: vfio-pci</code>. Ersätt PCI_ADDRESS. Om vanlig drivrutin är aktiv, granska bindningspolicyn, inte bara <code>/etc/modprobe.d/blacklist.conf</code>; NVIDIA använder BDF-status. Läs <code>dmesg | grep vfio</code>. Efter rättning, kör <code>update-initramfs -u -k all</code> och följ omstartsplanen.",
"darkTitle":"Värd konsol går mörkt efter omstart och jag kan inte SSH",
"darkBody":"Svart bild bevisar inte att värden är avstängd. Om även SSH misslyckas, kontrollera nätverk och kontroller i IOMMU-gruppen. Återfå åtkomst via IPMI, seriell konsol eller räddningsmiljö; granska <code>/etc/pve/qemu-server/<vmid>.conf</code> och återställ bara berörda tilldelningar och regler. Radera inte annan konfiguration.",
"logTitle":"Kolla installationsloggen",
"logBody":"Varje körning skriver <code>/tmp/add_gpu_vm.log</code>. Bifoga loggen när du söker hjälp."
},
"revert":{
"heading":"Återställ ändringar manuellt",
"intro":"Stoppa VM:n och ta bara bort berörda PCI-tilldelningar under Hårdvara eller med det uttryckliga indexet nedan. Det lämnar inte tillbaka GPU:n till värdens drivrutin. Använd Byt GPU-läge för det steget och kontrollera berörda gäster före bekräftelse."
},
"related":{
"heading":"Relaterat",
"items":[
{
"label":"Installera NVIDIA Drivers (Host)",
"href":"/docs/hardware/nvidia-host",
"tail":" — förbered drivrutinen för kort som stannar på värden; en VFIO-bunden GPU kan inte använda den samtidigt."
},
{
"label":"Lägg till GPU i LXC",
"href":"/docs/hardware/igpu-acceleration-lxc",
"tail":" - alternativ modell: dela GPU med flera containrar istället för att dedikera den till en VM."
},
{
"label":"Byt GPU-läge (VM ↔ LXC)",
"href":"/docs/hardware/switch-gpu-mode",
"tail":" — växla samma GPU mellan delning och exklusiv tilldelning."
},
{
"label":"GPU Passthrough kommandon",
"href":"/docs/help-info/gpu-commands",
"tail":" - lspci, IOMMU-verifiering, qm set hostpci referens."