PCIE passthrough Proxmox and Windows 11
PCI(E) passthrough
Om du ønsker å bruke ett skjermkort eller fysiske disker direkte i en virtuell maskin kan det gjøres med noe som kalles PCI(E) passthrough. Dette gjør at den virtuelle maskinen får full kontroll over enheten. For at PCI(E) passthrough skal virke trenger du utstyr som tillater det, men om du har det er det bare å sette i gang. En populær bruk av PCI(E) passthrough er å koble ett skjermkort til en VM og enten spille på det eller bruke det til kalkulasjoner. Annet det kan brukes til er å koble en Harddisker til en VM som er satt opp med NAS funksjoner.
Video
BIOS
For å kunne bruke PCI(E) passthrough funksjoner må du aktivere IOMMU (AMD) eller VT-D (Intel) I BIOS på maskinen din. Hvor du finner dette, og hvilke menyer det ligger under kommer avhenger av hvem som er produsent av prosessor og hovedkort på maskinen din.
Om du er usikker så kan du gå inn på lenken under. Her er det dokumentert hvordan det aktiveres på noen forskjellige hovedkort. https://us.informatiweb.net/tutorials/it/bios/enable-iommu-or-vt-d-in-your-bios.html
VM krav
For at PCI(E) passthrough skal fungere er det to innstilninger på VM som er viktig at er satt riktig. Dette er ikke alltid førstevalget når du først konfigurerer en VM.
- BIOS: Denne må være satt til OVMF (UEFI).
- Machine: Her må q35 være valgt.
Om disse endres i etterkant av at den virtuelle maskinen allerede er installert er det mulig at du vil støte på problemer. Om du tenker å sette opp en ny Windows 11 VM har jeg en guide med oppsett som er kompatibelt med PCI(E) passthrough. https://divgitally.com/no/post/proxmox-windows11-vm/#lage-og-konfigurere-vm
Konfigurer PCI(E) passthrough
I tillegg til å legge til PCI(E) enheten er det noen kommandoer som må utføres i terminalen på Proxmox noden.
Rediger GRUB
Først må du redigere GRUB filen for å legge til noen endringer i oppstarten av Proxmox noden.
Skriv eller kopier inn linjen under og trykk på enter.
1nano /etc/default/grub
Dette vil åpne GRUB filen i en tekst redigering program.
Neste er å finne linjen med GRUB_CMDLINE_LINUX_DEFAULT="quiet" Det du må legge til her er litt forskjellig i forhold til prosessor utvikler. Jeg har lagt inn begge under.
- AMD:
1GRUB_CMDLINE_LINUX_DEFAULT="quiet iommu=pt pcie_acs_override=downstream,multifunction nofb nomodeset video=vesafb:off,efifb:off"
- Intel:
1GRUB_CMDLINE_LINUX_DEFAULT="quiet intel_iommu=on iommu=pt pcie_acs_override=downstream,multifunction nofb nomodeset video=vesafb:off,efifb:off"
Når det er gjort kan du lagre med CTRL + S og gå ut av programmet med CTRL + X For at endringene skal ta effekt må du oppdatere GRUB med kommandoen:
1update-grub
Rediger Modules filen
Skriv eller kopier inn linjen under og trykk på enter.
1nano /etc/modules
Det er fire linjer som må legges inn i denne filen. Her er det ingen forskjell mellom AMD og Intel prosessorer.
1vfio
2vfio_iommu_type1
3vfio_pci
4vfio_virqfd
Når det er lagt til er det bare å lagre med CTRL + S og lukke filen med CTRL + X
Tilleggs konfigurasjon for skjermkort.
Error 43
Ikke alle skjermkort liker å bli passert gjennom til en VM. Disse kortene vil gi deg en feilmelding med tallet 43. For å slippe dette er det litt ekstra konfigurasjon som kan gjøres på den virtuelle maskinen.
Åpne konfigurasjons filen for den virtuelle maskinen det gjelder med kommandoen under.
1nano /etc/pve/qemu-server/"ID for VM".conf
ID er for eksempel 100. Det kan du se i server view menyen.
I denne filen må du redigere linjen cpu og legge til en ny linje args.
1cpu: host,hidden=1,flags=+pcid
2args: -cpu 'host,+kvm\_pv\_unhalt,+kvm\_pv\_eoi,hv\_vendor\_id=NV43FIX,kvm=off'
Blokkere drivere fra å bli brukt i Proxmox.
Du kan støte på at Proxmox laster inn driverne og ikke gir slipp på enheten til den virtuelle maskinen. Du kan da blokkere driverne fra å bli tatt i bruk av Proxmox
Åpne blacklist filen med kommandoen under:
1nano /etc/modprobe.d/blacklist.conf
På slutten av filen kan du legge til "blacklist" etterfulgt av driveren du ønsker å blokkere.
1blacklist radeon
2blacklist nouveau
3blacklist nvidia
Eksemplene over er for skjermkort. Om du har problemer med andre enheter kan du legge til driveren for de også. For å finne driveren som enheten din bruker må du til din foretrukne søkemotor og søke litt.
Etter dette må du kjøre kommandoen under for å oppdatere Proxmox etterfulgt av en omstart av hele noden.
1update-initramfs -u
Ferdig med terminal (kanskje)
Dette er alt du bør trenge å bruke terminalen til. Om du ikke har restartet etter at du har gjort noen endringer er det lurt å gjøre før du fortsetter nå.
Legge til PCI(E) enheten til VM
Den siste delen er å legge til PCI(E) enheten til den virtuelle maskinen din.
- Velg ønsket VM
- Naviger til Hardware
- Trykk på Add
- Velg PCI Device i nedtrekks menyen.
- Det du skal velge her kommer an på hvilken type enhet du skal passere til VM. Huk av for alle aktuelle bokser.
- Device: Noen enheter vil ha flere oppføringer her. Skjermkort for eksempel vil ofte dele opp audio og video. Hvis det er tilfellet så velger du kun den første og huker av i boksen for All Functions.
- All Functions: Denne skal hukes av om en enhet har flere oppføringer i Devices menyen. Dette vil gjøre at du slipper å legge til alle oppføringene til en VM.
- Primary GPU: Om det er ett skjermkort du skal passere gjennom kan denne hukes av for å være sikker på at video blir behandlet av skjermkortet.
- ROM-Bar: Dette passer på at skjermkortets fastvare blir synlig for den virtuelle maskinen.
- PCI-Express: Her kan du bytte mellom PCI og PCI-Express.
- ID overrides De fire siste er ment for å overstyre IDen til en enhet. Dette er ment for å kunne tvinge en driver til å virke med en enhet den egentlig ikke skal virke med.
- Trykk Add.
Til slutt
Det er nå på tide å starte opp den virtuelle maskinen din og krysse fingrene for at alt går som det skal. Det vil vanligvis ta litt tid før operativsystemet ser enheten og finner ut hvilken driver som skal brukes, dette bør ikke ta mer enn ett minutt eller to. Forhåpentligvis virker alt som det skal og du kan laste ned og installere den siste driveren for enheten. Om du støter på problemer er det ett par ting du kan gjøre for å feil søke. Det første du kan gjøre er å gå over filene du har redigert og kjøre oppdaterings kommandoene i terminalen igjen.
Om det fortsatt ikke hjelper så har jeg lagt ved noen lenker som har hjulpet meg under.
Lenker
Her er noen lenker du kan finne nyttig om du støter på problemer.
Proxmox wiki https://pve.proxmox.com/wiki/PCI(e)_Passthrough
Reddit Homelab https://www.reddit.com/r/homelab/comments/b5xpua/the_ultimate_beginners_guide_to_gpu_passthrough/
Windows 11 setup https://divgitally.com/post/proxmox-windows11-vm/