Skocz do zawartości

Granie na wirtualnej maszynie w linuksie - czyli wasze doświadczenia z PCI-E Passtrough


Recommended Posts

Świerzbi mnie żeby po kilku latach wrócić znów na linuksa. Jednak choć go lubię jestem pragmatykiem - nie będę się przesiadał z Windowsa 10 tylko po to żeby sobie coś udowodnić. Windows na razie mi nie podpadł na tyle żebym z niego uciekał. Ale nie o tym.
W związku z tym że ostatnimi czasy sporo się polepszyło w kwestii przekierowywania urządzeń PCI-E do maszyn wirtualnych chciałbym wiedzieć czy ktoś się w to bawił i jakie miał problemy. Z tego co ostatnio czytałem na szczęście już nie ma tych dzikich myków z kompilacją jakichś dziwnych sterowników do wirtualek, zabaw przerabianymi biosami GPU  i hakowaniem jądra po to tylko żeby na końcu się okazało że to tak naprawdę działa w 20-30% przypadków. Dzis jest inaczej. Jest wsparcie w kernelach od 4.1 w górę, wsparcie ze strony Qemu (bios UEFI) i wszystko się sprowadza do wyłączenia sterownika karty z systemu, znalezienia odpowiedniego PCI ID karty i dodania odpowiedniej komendy z tym ID do GRUBA która wykorzystując hardwarowe wsparcie wirtualizacji przekieruje nam urządzenie do KVMa.


https://forum.level1techs.com/t/gta-v-on-linux-skylake-build-hardware-vm-passthrough/87440/2

Wygląda obiecująco, ale zanim hurraoptymistycznie rzucę się do komputera z format c: chciałbym zapytać czy ktoś z was już to przerabiał? I jak wygląda to w praktyce

Link to post
Share on other sites

Powiem tak - używam maszyn wirtualnych uruchamianych z windowsa. Czyli linuxy odpalam do testów, lub jakiś tam nieskomplikowanych akcji. Zdarza mi się odpalać windowsy na windowsach itp. Problem w tym że nie gram na VM, jedynie robię coś na innych os. Czytałem sobie kiedyś na forach o Xen i jego PCI-Passtrough. Wtedy z tego co pamiętam nawet na stacjonarce po wpięciu 2 fizycznych kart miałbym problem. Problemem był brak instrukcji VT-d wspieranych przez procesor. Do tego z tego co pamiętam potrzebował bym 2 fizycznych monitorów. Sprawa umarła.

 

Dla czego o tym wspominam, bo nadal wydaje mi się - żeby taka akcja zagrała musisz mieć VT-d wspierane przez procesor. Dla tego wcześniej spróbuj zweryfikować wymagania takiej operacji zanim zaczniesz startować z projektem. 

 

https://wiki.xenproject.org/wiki/Xen_PCI_Passthrough

https://wiki.archlinux.org/index.php/PCI_passthrough_via_OVMF

https://ark.intel.com/pl/products/52210/Intel-Core-i5-2500K-Processor-6M-Cache-up-to-3_70-GHz - tutaj zakładam że masz to co w stopce

 

Nie odradzam, ale musiałbyś do tego projektu znaleźć coś z VT-d, lub jakieś czary mary robić. Poczytaj bo ja to jakiś czas temu się doktoryzowałem i mogło się coś pozmieniać.

 

Dodam jeszcze że zwykła nie wspomagana maszyna wirtualna uruchamia się na procesorze posiadającym zestaw instrukcji VT-x, jest ona wtedy całkowicie obsługiwana. Niestety kuleje w 3D, chyba że do DirectX10 - ale i tak słabo jest.

Edytowane przez paprykarz
Link to post
Share on other sites

Co do sprzętowych wymagań to mam to ogarnięte bo kiedyś się interesowałem. Trzeba żeby IOMMU (Intel-VTD/AMD-VTD) zadziałało trzeba zarówno procek z tą technologią (trzeba uważać na procki z K czyli podkręcalne) jak i płyta główna. Oczywiście trzeba mieć dwie karty i najlepiej gdyby były od siebie różne. Ponoć nałatwiej jest gdy jest karta i integra intela. I to co piszą o Nvidii że mogą sprawiać problemy to nie do końca prawda bo można to obejść. Na innym forum rzuciłem ten sam topik i chłopakowi się udało na i5-4690k@4.2, 16GB RAMu 2400Mhz@CL11 i GTX 960 2GB. Grał w Division i Wieśka 3. Udostępnił nawet poradnik.

https://github.com/piogrzej/KVM_guide

 

Ja muszę wymienić procka (najprawdopodobniej na i7 2600) i niestety też płytę. I dopiero wtedy mogę myśleć o tym rozwiązaniu. Ale nie powiem, jeżeli to wypali z wielką chęcią wrócę na linuksa.

Edytowane przez doman18
Link to post
Share on other sites
  • 4 tygodnie później...

Ok, trochę to trwało ale w końcu jestem na mecie (chyba). Najpierw kupiłem procesor (i7 2600) i przy okazji go lekko podkręciłem. Odpalając UEFI na płycie ku mojej uciesze okazało się że VT-d opcja się podświetliła i mogłem ją włączyć. Co też zrobiłem. Ale tutaj był pierwszy zgrzyt - jeszcze przed montażem zresetowałem całe UEFI i nie chciał mi windows 10 wejść. Cały czas łapał bootloopa do menu reperowania systemu. Zrobiłem szybką reinstalkę żeby się upewnić że w ogóle będzie to chodzić na fabrycznych ustawieniach (myślałem że niegdysiejszy update uefi coś pokićkał w domyślnych ustawieniach). Poszło. Wiec jechałem dalej..

Zainstalowałem Fedorę, odpaliłem i zacząłem lecieć poradnik ...
https://level1techs.com/article/ryzen-gpu-passthrough-setup-guide-fedora-26-windows-gaming-linux



Wszystko poszło gładko i paradoksalnie najwięcej problemów miałem z dyskami. Najpierw partycja windowsowa nie chciała mi się dzielić w Gparted bo zawierała błędy. Więc musiałem odpalać CD z windowsem 10 i robić checkdiska. Później po podzieleniu miałem problem z bezpośrednim montażem dysków do maszyny wirtualnej. Walczyłem z tym za pomocą edycji XMLa maszyny, próbując przekazać cały dysk ale w końcu spowrotem zajrzałem do wcześniej wspomnianego poradnika dla Archa gdzie montuje się partycje. I okazał się nieoceniony w tej kwestii. Tylko zamiast bazować na nazwach dysków bazowałem na ich UUID więc zamiast np. /dev/sda2 montowałem /dev/disk/by-id/ata-ST1000NM0033-9ZM173_Z1W0ZSYH-part1. Tak jest chyba bezpieczniej. Wszystko się zainstalowało ale nie zbootowało. Dokładniej się przyjrzałem wideo które podałem wyżej i zauważyłem że Wendel odpala wirtualny BIOS maszyny. Tam też znalazłem odpowiedź - moja partycja z windowsem była drugą a nie pierwszą tak jak pokazywał mi Gparted.

No i ruszyło. Oczywiście robiłem według porady Wendela (gościa z wideo) czyli najpierw zrobiłem maszynę bez przekazywania czegokolwiek (tylko partycje, klawiatura i mysz). Później dopiero wywaliłem emulowaną grafikę i ekrany i wrzuciłem swoją ATI wraz z jej interfejsem audio. I udało się, po przełączeniu się na HDMI przywitał mnie ekran logowania do windowsa i po zalogowaniu zobaczyłem znajomą ikonkę ATI w trayu.
 
Ale była słaba wydajność. Doszedłem do tego że naprawdopodobniej winowajcą jest SATA.
 
https://forum.proxmox.com/threads/differences-between-ide-virtio-scsi.8356/
https://pve.proxmox.com/wiki/Paravirtualized_Block_Drivers_for_Windows
 
Więc ściągnąłem iso z VirtIO, zmieniłem interfejs dysków z SATA na VirtIO i zainstalowałem jeszcze raz windowsa. W D3 było lepiej ale SoM się nadal nie uruchamiał. W końcu zrobiłem tak jak w pordaniku dla Archa i ręcznie ustawiłem topologię procesora i dałem wszystkie wątki. I poszło. Jeszcze muszę potestować dłużej bo po drodze był jakiś errorek z biblioteką VC++. Ale to chyba nie jest związane z samą wirtualizacją.
Link to post
Share on other sites

Dołącz do dyskusji

Możesz dodać zawartość już teraz a zarejestrować się później. Jeśli posiadasz już konto, zaloguj się aby dodać zawartość za jego pomocą.

Gość
Odpowiedz w tym wątku...

×   Wklejono zawartość z formatowaniem.   Usuń formatowanie

  Dozwolonych jest tylko 75 emoji.

×   Odnośnik został automatycznie osadzony.   Przywróć wyświetlanie jako odnośnik

×   Przywrócono poprzednią zawartość.   Wyczyść edytor

×   Nie możesz bezpośrednio wkleić grafiki. Dodaj lub załącz grafiki z adresu URL.

  • Ostatnio przeglądający   0 użytkowników

    Brak zarejestrowanych użytkowników przeglądających tę stronę.

×
×
  • Dodaj nową pozycję...