Rehber Kreato'nun laptop GPU passthrough rehberi

433815

Hectopat
Katılım
28 Şubat 2021
Mesajlar
3.238
Makaleler
2
Çözümler
22

Giriş​

Uyarı! Bu rehber laptoplar için yazılmıştır ve şu an kullandığım sistemde denenmiştir (sistem özellikleri, kullanılan distro gibi bilgiler aşağıda bulunmaktadır). Laptoplarda GPU passthrough karmaşık bir konudur, ve bir şekilde çalışan ayar başka bir laptopta başka bir şekilde çalışabilir. Eğer sorun yaşarsanız konu açıp etiketleyebilirsiniz, yardımcı olmaya çalışırım.

Ayrıca bu rehber Arch tabanlı bir distro kullandığınızı ve halihazırda virt-managerı kurup ayarladığınızı varsayar.

Laptop ile masaüstü arasındaki fark ne?​

Laptop ile masaüstü arasındaki fark ilk başta sadece performans ve fiyat farkı olarak gözükebilir, fakat laptoplar donanımsal olarak masaüstü bilgisayarlardan çok daha farklıdır.
Mesela tipik bir masaüstüde GPU bu şekilde bağlıdır;

1647271859802.png


Fakat laptopların neredeyse hepsinde GPU bu şekilde bağlanmamıştır. Ve bu bağlantıların farklı olması işleri laptop için biraz garipleştiriyor.

Mimari değişikliklere bu rehberde bakmayacağım, eğer araştırmak istiyorsanız bu makaleye bakabilirsiniz (İngilizce, üstte kullanılan fotoğraf oradan alınmıştır)

Denenen sistem​

  • Laptop: MSI GE76 Raider 10ug.
  • Distro: Artix Linux openrc.
  • Vm'e kurulan Windows sürümü: Windows 11.

İlk adım: NVIDIA kartı passthrough için hazır hale getirme​

Bu adımı takip etmeden önce lütfen herhangi bir NVIDIA sürücüsü (nouveau dahil) kaldırın, bu sürücülerin olması sorun çıkarabilir.
İlk başta /etc/mkinitcpio.conf dosyasına gidiyoruz ve MODULES kısmını şöyle değiştiriyoruz;

1647272321894.png


Kaydediyoruz ve /etc/default/grub dosyasındaki GRUB_CMDLINE_LINUX_DEFAULT kısmına intel_iommu=on ekliyoruz;

1647272389585.png


grub-mkconfig -o /boot/grub/grub.cfg && mkinitcpio -P yazarak Config dosyamızı ve yeni initramfsimizi oluşturuyoruz ve yeniden başlatıyoruz.
Yeniden başlattıktan sonra check_iommu.sh adlı bir dosya oluşturuyoruz ve içine bu kodu yazıyoruz;

Kod:
#!/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;

bash check_iommu.sh yazarak dosyayı çalıştırıyoruz ve çıktıya bakıyoruz. Çıktıda ekran kartımızın olduğu grubu not alıyoruz (PCI bridgeler hariç).

/etc/modprobe.d/vfio.conf adında bir dosya açıyoruz ve dosyaya şu kodu yapıştırıyoruz.
options vfio-pci ids=idler
idler kısmını çalıştırdığımız scriptteki not aldığımız grupta olan kartların sondaki kapalı parantezler içerisindeki idleri ile dolduruyoruz.

1647272767262.png


Örnek;

1647272851520.png


options vfio-pci ids=10de:249d,10de:228b
Önceden dediğim gibi, PCI bridgeleri önemsemiyoruz.

Sistemimizi yeniden başlatıyoruz.

virt-managerı açıyoruz, istediğimiz özelliklerde olan bir sanal makine oluşturuyoruz.

İçine ben Windows 11 kurdum, fakat Windows 10'un da çalışması gerek.

Sanal makineye verdiğimiz ismi not alıyoruz.

virsh edit makineismi yazıyoruz.
<domain type='kvm'> bu kodu <domain type='kvm' xmlns:qemu='http://libvirt.org/schemas/domain/qemu/1.0'> bununla değiştiriyoruz.
Bu linkten ssdt1.dat adlı dosyayı indiriyoruz ve /ya taşıyoruz.
</devices> ile </domain> arasına bu kodu yapıştırıyoruz;

XML:
<qemu:commandline>
 <qemu:arg value='-acpitable'/>
 <qemu:arg value='file=/ssdt1.dat'/>
 </qemu:commandline>

Sanal makineyi başlatıyoruz, daha GPU'yu passthrough etmiyoruz.

1647275066118.png


Bu ekran görüntüsünde gösterilen "remote desktop" ayarını açıyoruz.
Eğer kullanıcıya şifre ayarlanmadı ise, şifre ayarlıyoruz.
Sanal makineyi kapatıyoruz.

1647275131273.png


Buraya gelip bu şekilde ayarlamaları yapıyoruz.
Add hardware menüsünü açıp, oradan "PCI host device"ya giriyoruz.
Oradan önceden çalıştırdığımız scriptten not aldığımız gruptaki bütün PCI kartları ekliyoruz (PCI bridgeler hariç).
Displayi "spice" yapıp, videoyu "none" yapıyoruz.
Uygulaya basıp sanal makinemizi başlatıyoruz.
Bilgisayara freerdp kurup, üstteki ekran görüntüde olan menüde çıkacak IP adresi ile sanal makineye giriyoruz.
xfreerdp /v:ipadresi:3389 /w:1600 /h:900 /bpp:32 +clipboard +fonts /gdi:hw /rfx /rfx-mode:video /u:kullanıcıadı /sound:sys:pulse +menu-anims +window-drag
Bunu yapmamızın sebebi görüntü almayacağımızdan dolayıdır.
Sürücüleri kuruyoruz.

Looking Glass kurulumu​

Sürücüleri kurduk, kartın şu anda çalışması lazım. Fakat RDP ile doğru düzgün oyun performansı alınmıyor.
Looking Glass'ı wikisinde olan kurulum aşamalarını takip ederek kurabilirsiniz.
Looking Glass için şu driveri kurmanız gerekecek. Zaten orada nasıl kurulacağı anlatılmış, bu yüzden boşu boşuna yazıyı uzatmıyorum.

Sorunuz varsa yazabilirsiniz, yanlışım varsa belirtin. Eğer yeteri kadar istek gelirse Looking Glass kurulumu için de rehber yazacağım.
 
Son düzenleme:
Güzel rehber, elinize sağlık. :)
Sağ olun.
Aslında Looking Glass kısmı daha uzun olacaktı fakat zaten rehber koskocaman bir yazıya dönüştü, onu da farklı bir konu ile yapacağım eğer yeteri kadar istek gelirse.

Bu arada çoğu laptopta HDMI girişinin direk NVIDIA kartına bağlı, böylece GPU passthrough yapıldığında 2. monitörü takıp oradan direkt Windows'tan görüntü alabilirsiniz.
 
Bu arada gpu passthrough NVIDIA sürücümü host makinamda kullanmamı engelledi. Üstelik de olmadıydı. Olmazsa bunu denerim.
 

Bu konuyu görüntüleyen kullanıcılar

Technopat Haberler

Yeni konular

Geri
Yukarı