GPU passthrough bir GPU direkt olarak sanal makineye sunmasına yarayan bir tekniktir. Peki avantajı ne?
-
Yüksek Performans: GPU passthrough ile bir sanal makine, doğrudan fiziksel bir GPU’yu kullanabilir. Bu, yüksek performanslı grafik işlemleri, oyunlar veya diğer GPU yoğun uygulamalar için daha iyi bir performans sağlar.
-
Oyun Performansı: Oyuncular için GPU passthrough, sanal bir makinede oyun oynamak isteyenler için ideal bir çözüm olabilir. Bu, oyunları yüksek performansla çalıştırmanın yanı sıra, sanal makineler arasında GPU kaynaklarını etkili bir şekilde bölmenizi sağlar.
-
Çeşitli Kullanım Senaryoları: GPU passthrough, grafik tasarım uygulamaları, video düzenleme ve diğer GPU yoğun görevler için idealdir. Bu, bu tür uygulamaların sanal makineler üzerinde daha etkili bir şekilde çalışmasını sağlar.
Bazı oyun geliştiricileri direkt olarak Linux desteklemediği için birçok Linux kullanıcıları bilgisayarını dualboot olarak kullanıyordu. Dualboot devri bitti diyebilirim eğer iyi bir ekran kartınız varsa. Sadece oyun olarak değil grafik tasarım uygulamaların çoğu Linux desteklemediği için GPU passthrough iyi bir seçim olacaktır.
BIOS Ayarı
Bilgisayarınız AMD işlemcili ise IOMMU, NX mode, SVM mode aktif etmelisiniz.
Eğer Intel işlemcili bilgisayarınız varsa VT-D ve VT-X ayarlarını aktif etmelisiniz.
AMD CPU | INTEL CPU |
---|---|
IOMMU | VT-X |
NX mode | VT-D |
SVM mode |
Intel İşlemcili bilgisayarlarınız için sadece bir seçenek gözüküyorsa birini aktif etmeniz yeterli olacaktır.
Ek olarak Distronuz UEFI modunda yüklenmiş olmalıdır.
GRUB ayarı
AMD CPU | INTEL CPU |
---|---|
amd_iommu=on | intel_iommu=on |
/etc/default/grub
belgesini işlemcinize göre düzenlemek gerekiyor. Ben Intel kullandığım için ona göre düzenledim.
GRUB_CMDLINE_LINUX_DEFAULT=“intel_iommu=on iommu=pt”
Grub’ı update etmemiz gerekiyor güncelledikten sonra bilgisayarımızı yeniden başlatalım.
grub-mkconfig -o /boot/grub/grub.cfg
IOMMU Gruplama
GPU grubu hakkında bilgi almamız gerekecek.
#!/bin/bash
shopt -s nullglob
for g in /sys/kernel/iommu_groups/*; do
echo "IOMMU Group ${g##*/}:"
for d in $g/devices/*; do
echo -e "\t$(lspci -nns ${d##*/})"
done;
done;
Scripti kaydedip çalıştıralım. GPU grubunu bulalım.
QEMU ve Libvirt kurulumu
Arch için:
sudo pacman -S virt-manager qemu vde2 ebtables iptables-nft nftables dnsmasq bridge-utils ovmf
libvirt.conf
/etc/libvirt/libvirtd.conf belgesine girip başındaki #
işaretini kaldıralım
unix_sock_group = "libvirt"
unix_sock_rw_perms = "0770"
Loglama
En alt satıra loglarımızı kayıt altına almak için aşağıdaki satırları ekleyelim
log_filters="3:qemu 1:libvirt"
log_outputs="2:file:/var/log/libvirt/libvirtd.log"
Libvirt grubunu düzenleme
Kullanıcı adımızı libvirt grubuna ekleyelim
sudo usermod -a -G kvm,libvirt $(whoami)
Her bilgisayar açıldığı zaman otomatik olarak başlamasını istiyorsanız:
sudo systemctl enable libvirtd
sudo systemctl start libvirtd
qemu.conf
/etc/libvirt/qemu.conf belgesinin içine girip sudo yazan ifadeyi kaldırıp kendi kullanıcı adımızı yazalım:
user = "kullanıcı adı"
group = "kullanıcı adı"
Kaydedip libvirtd yeniden başlatalım: sudo systemctl restart libvirtd
Network
sudo virsh net-autostart default
sudo virsh net-start default
Virtual Manager
Gerekli olan:
- Windows ISO
- Virtio driver virtio-win ISO(stabil)
- spoofed-qemu (İsteğe bağlı)
- spoofed-edk2 (İsteğe bağlı)
Video yüklenecek
ROM Hazırlama
Rom hazırlamak için birkaç yöntem var. Ben Dumping yöntemine göre devam edeceğim.
Dumping
Nvidia için: NVFlash
AMD için: AMDVBFlash / ATI ATIFlash
Ekran kartınıza göre indirdikten sonra TTY ekranına girmemiz gerekiyor.
Display managerı durdurmamız gerekiyor. systemctl stop sddm
(lightdm/gdm) Sonra ekran kartınıza göre aşağıdaki komutlarını yazalım.
Nvidia | AMD |
---|---|
sudo rmmod nvidia_uvm | sudo rmmod drm_kms_helper |
sudo rmmod nvidia_drm | sudo rmmod amdgpu |
sudo rmmod nvidia_modeset | sudo rmmod radeon |
sudo rmmod nvidia |
İndirdiğimiz uygulamayu(NVFlash/AMDVBFlash) dizine gidip çalıştırma yetkisi verelim:
sudo chmod +x NVFlash #Nvdia için
sudo chmod +x AMDVBFlash #AMD için
Nvidia için:
sudo ./nvflash --save vbios.rom
AMD için:
sudo ./amdvbflash -s 0 vbios.rom
- Artık vbios.rom elimizde mevcut isterseniz bilgisayarınızı tekrar başlatabilirsiniz.
- Tekrar başlattıktan sonra vbios.rom okteta uygulaması ile açalım. Yüklü değilse kolayca paket yöneticinizden edinebilirsiniz.
- vbios.rom patchelemiz gerekiyor ctrl+f ile arama ekranını açık char olarak seçip VIDEO aratalım.
- İlk U harfini gördükten sonra sol tarafında kalan imlecin hepsini silelim. Farklı kaydet diyerek yeni oluşan romu patched.rom olarak adlandıralım.
- İzinleri ayarlayalım.
sudo mkdir /usr/share/vgabios
cp ./patched.rom /usr/share/vgabios/
cd /usr/share/vgabios
sudo chmod -R 644 patched.rom
sudo chown yourusername:yourusername patched.rom
Rom eklemek:
<rom file='/usr/share/vgabios/patched.rom'/>
Script
git clone https://gitlab.com/risingprismtv/single-gpu-passthrough.git
sudo chmod +x install_hooks.sh
sudo ./install_hooks.sh