Proxmox GPU Passthrough

1.PCI Cihazlarını Kontrol Edelim

Proxmox Web Console'dan ''SHELL'' veya bilgisayarımızdan terminal emülatörü yardımıyla SSH üzerinden giriş yapabiliriz. Daha sonra ; lspci -v komutunu yazıyoruz ve aşağıdaki göreceğiniz üzere NVIDIA ekran kartımızın bilgilerini görüntülüyoruz. # NOTE: Initially, it might not show the kernel driver vfio-pci, please check the kernel driver. 01:00.0 VGA compatible controller: NVIDIA Corporation TU116 [GeForce GTX 1650 SUPER] (rev a1) (prog-if 00 [VGA controller]) Subsystem: ZOTAC International (MCO) Ltd. TU116 [GeForce GTX 1650 SUPER] Flags: bus master, fast devsel, latency 0, IRQ 11, IOMMU group 1 Memory at de000000 (32-bit, non-prefetchable) [size=16M] Memory at c0000000 (64-bit, prefetchable) [size=256M] Memory at d0000000 (64-bit, prefetchable) [size=32M] I/O ports at e000 [size=128] Expansion ROM at 000c0000 [disabled] [size=128K] Capabilities: [60] Power Management version 3 Capabilities: [68] MSI: Enable- Count=1/1 Maskable- 64bit+ Capabilities: [78] Express Legacy Endpoint, MSI 00 Capabilities: [100] Virtual Channel Capabilities: [250] Latency Tolerance Reporting Capabilities: [258] L1 PM Substates Capabilities: [128] Power Budgeting > Capabilities: [420] Advanced Error Reporting Capabilities: [600] Vendor Specific Information: ID=0001 Rev=1 Len=024 > Capabilities: [900] Secondary PCI Express Capabilities: [bb0] Physical Resizable BAR Kernel driver in use: vfio-pci Kernel modules: nvidiafb, nouveau 01:00.1 Audio device: NVIDIA Corporation TU116 High Definition Audio Controller (rev a1) Subsystem: ZOTAC International (MCO) Ltd. TU116 High Definition Audio Controller Flags: bus master, fast devsel, latency 0, IRQ 10, IOMMU group 1 Memory at df080000 (32-bit, non-prefetchable) [size=16K] Capabilities: [60] Power Management version 3 Capabilities: [68] MSI: Enable- Count=1/1 Maskable- 64bit+ Capabilities: [78] Express Endpoint, MSI 00 Capabilities: [100] Advanced Error Reporting Kernel driver in use: vfio-pci Kernel modules: snd_hda_intel
2. Detaylı NVIDIA Cihaz Bilgilerini Kontrol Edelim
lspci | grep -i nvidia Yukarıdaki komutu kullanarak sadece NVIDIA ürünümüz hakkında ki bilgileri getirmesini istedik. 01:00.0 VGA compatible controller: NVIDIA Corporation TU116 [GeForce GTX 1650 SUPER] (rev a1) 01:00.1 Audio device: NVIDIA Corporation TU116 High Definition Audio Controller (rev a1) 01:00.2 USB controller: NVIDIA Corporation TU116 USB 3.1 Host Controller (rev a1) 01:00.3 Serial bus controller: NVIDIA Corporation TU116 USB Type-C UCSI Controller (rev a1) Daha sonra bu cihazların ID bilgilerini öğrenmek için ise; lspci -nn | grep -i nvidia 01:00.0 VGA compatible controller [0300]: NVIDIA Corporation TU116 [GeForce GTX 1650 SUPER] [10de:2187] (rev a1) 01:00.1 Audio device [0403]: NVIDIA Corporation TU116 High Definition Audio Controller [10de:1aeb] (rev a1) 01:00.2 USB controller [0c03]: NVIDIA Corporation TU116 USB 3.1 Host Controller [10de:1aec] (rev a1) 01:00.3 Serial bus controller [0c80]: NVIDIA Corporation TU116 USB Type-C UCSI Controller [10de:1aed] (rev a1)
3.GRUB Konfigürasyonu Güncelleme
Proxmox serverımızın GRUB konfigürasyonuna gerekli parametreleri eklememiz gerkeiyor bunun için ise; vim /etc/default/grub --> Grub dosyasını vi editörü ile açıyoruz burada ''vim'' editörü yerine ''nano'' editörünü de kullanabilirsiniz. ... GRUB_CMDLINE_LINUX_DEFAULT="quiet intel_iommu=on iommu=pt initcall_blacklist=sysfb_init" # Alternative configuration # GRUB_CMDLINE_LINUX_DEFAULT="quiet intel_iommu=on pcie_acs_override=downstream initcall_blacklist=sysfb_init nofb video=vesafb:off,simplefb:off,efifb:off rd.driver.blacklist=snd_hda_intel,nvidia,nvidiafb,nouveau module.blacklist=snd_hda_intel,nvidia,nvidiafb,nouveau vfio-pci.ids=10de:2187,10de:1aeb" ... Yukarıdaki güncellemelerini yaptıktan sonra kaydedip çıkıyoruz. Sonrasında ise; update-grub --> bu komut ile GRUB konfigürasyon dosyasında yapmış olduğumuz değişiklikleri sisteme bildirmiş oluyoruz.
4.VFIO Modüllerinin Yüklenmesi
Önyükleme sırasında yüklenecek vfio modüllerini ekleyiyoruz. vim /etc/modules --> burdaki konfigürasyon dosyasını editör ile açıyoruz. vfio vfio_iommu_type1 vfio_pci vfio_virqfd vfio_nvidia Yukarıdaki modül güncellemelerini yazıp kaydedip çıkıyoruz.
5.Blacklist Modülü Konfigürasyonu
Vfio-pci'nin kullanıldığından emin olmak için varsayılan NVIDIA sürücülerini kara listeye alıyoruz. vim /etc/modprobe.d/blacklist.conf --> burdaki konfigürasyon dosyasını editör ile açıyoruz. blacklist nouveau blacklist nvidia blacklist nvidiafb blacklist snd_hda_intel Yukarıdaki modül güncellemelerini yazıp kaydedip çıkıyoruz.
6. VFIO Konfigürasyonu
GPU ve ses cihazı kimliklerini vfio yapılandırmasına ekliyoruz. vim /etc/modprobe.d/vfio.conf --> burdaki konfigürasyon dosyasını editör ile açıyoruz. options vfio-pci ids=10de:2187,10de:1aeb disable_vga=1 disable_idle_d3=1 initcall_blacklist=sysfb_init Yukarıdaki modül güncellemelerini yazıp kaydedip çıkıyoruz.
7. Initramfs ve Reboot İşlemi
Değişiklikleri uygulamak için initramfs'ı güncelleyip, Proxmox sunucusunu yeniden başlatıyoruz. update-initramfs -u -k all reboot
8. VFIO Sürücüsünü Kontrol Ediyoruz
lsmod | grep vfio --> Komutunu kullanıyoruz. vfio_pci 16384 0 vfio_pci_core 86016 1 vfio_pci irqbypass 12288 2 vfio_pci_core,kvm vfio_iommu_type1 49152 0 vfio 69632 3 vfio_pci_core,vfio_iommu_type1,vfio_pci iommufd 98304 1 vfio # Run lspci -v again to confirm both video and audio components are bound to vfio-pci lspci -v
9. IOMMU Groups Kontrolü
IOMMU gruplarını doğrulamak için bir komut dosyası oluşturuyoruz. vim iommu_group.sh --> bu komut ile vim editörünü kullanarak bir dosya oluşturup, editörü açıyoruz Aşağıda ki kodları ekliyoruz. #!/bin/bash shopt -s nullglob for g in $(find /sys/kernel/iommu_groups/* -maxdepth 0 -type d | sort -V); do echo "IOMMU Group ${g##*/}:" for d in $g/devices/*; do echo -e "\t$(lspci -nns ${d##*/})" done; done; chmod +x iommu_group.sh ./iommu_group.sh ... 01:00.0 VGA compatible controller [0300]: NVIDIA Corporation TU116 [GeForce GTX 1650 SUPER] [10de:2187] (rev a1) 01:00.1 Audio device [0403]: NVIDIA Corporation TU116 High Definition Audio Controller [10de:1aeb] (rev a1) 01:00.2 USB controller [0c03]: NVIDIA Corporation TU116 USB 3.1 Host Controller [10de:1aec] (rev a1) 01:00.3 Serial bus controller [0c80]: NVIDIA Corporation TU116 USB Type-C UCSI Controller [10de:1aed] (rev a1) ...
10. Windows VM Oluşturma
Biz Windows 11 Pro kullanıyoruz. Eksik sürücüleri eklemek için VirtIO sürücüsünün ISO'sunu bağladığınızdan emin olun . Kurulum sırasında diğer her şey her zamanki gibi ilerleyecektir. GPU PASSTHROUGH eklemek için bir PCI cihazı ekleyin ve Tüm İşlevler, ROM-Bar ve PCI-Express seçenekleri işaretliyken GPU'nuzu seçin.



11. Final WINDOWS'u BAŞLATIYORUZ !
NVIDIA GeForce sürücülerini yüklüyoruz.

