GPU passthrough
- Szerkesztve
Igen, kell a cpu support, nekem amdm van nem intel ezért se VT-x, se a VT-d nem tudom bekapcsolni
Kicsit légy körültekintőbb! (leírtam a konfigom)
AMD:
IOMMU = enabled
NX mode = enabled
SVM mode = enabled
INTEL:
VT-D = Enabled VT-X = Enabled
Nekem egy rx470-em van ezért ez a módszer teljesen hasznavehetetlen(leírtam a konfigom)
Mielőtt át akartam volna adni a videókártyát a win-nek, feltetepítettem és minden jól működött...
Nem, nem szügséges a vm-en feltetepíteni a videókártya drivert addig amig el nem érted a célod, ez esetben a videókártya átadása mert addig ugy is működik és nem abba az állapotba fogod használni a win10-et. Addig működőképes és nem ez befolyásolja a hibát... Ha sikerült megoldani a hibát akkor érdemes feltenni, mindaddig időpocsékolás mert lehet nem sikerül.
Sajnálom de ezzel semmire nem mentem... Better next time!
[törölve]
- Szerkesztve
Hey!
Igen AMD-nél más a neve.
Dmesg-ben csekkoltad, hogy ott is írja-e?
dmesg | grep IOMMU
Én is annó AMD GPU-t adtam be egy VM-nek. Bar az XEN virtualizáció alatt történt és a VM is linux volt, de nem kellett a videó bios-al foglalkozni, csak beadni és igen utána feltenni a drivert.
KVM-nél ugyanígy adtam be egyszer Ethernet portot (pci id alapján).
Meg most csinálok egy VM routert ami majd 4 fizikális ethernet portot fog kapni.
Mi nem megy nálad pontosan? Mert nem tiszta.
Biztos, hogy supported a VGA?
Itt van egy jó lista: https://en.m.wikipedia.org/wiki/List_of_IOMMU-supporting_hardware
Hibaüzenet, vagy valami log van?
Elvileg elég az is ha qemu paraméterben megadod -device vfio-pci,host=07:00.0
ahol a 07:00.0
a tényleges eszköz.
A Host rendszeren meg ne legyen feltelepítve a gpu driver!
Egyszerre csak 1 használhatja, vagy a host vagy a vm.
- Szerkesztve
Ennek az egésznek az a lényege hogy linux alapokon futtatok egy úgymond teljes értékű win-t
Vannak ennek előnyei, hártányai. Ha érdekel leírhatom
Igen elvileg elég qemu-ba is ezeket megadni
Most már teljesen a virto driverest guide-ot csinálom: https://gitlab.com/.../single-gpu-passthrough/-/wikis/home
Mindent végigcsináltam, de nem indult és ezt a hibaüzenetet dobta fel:
Error starting domain: internal error: cannot load AppArmor profile 'libvirt-fd1637e2-a5de-47ff-b418-c4816cf386d0'
Sajna a "magyarázatot" nem fotóztam le, ahol leirja hol mi a baja pontosan. Mindent bezártam, restart
indítást levideóztam, feltettem megára mert nem engedi csatolni
Mega: https://mega.nz/folder/A84jRIjD#flD4uNk-BPzrMUpE9PLTDgIndításnál ugyan ez csak rengeteg sok crash report, csatoltam
Átnéztem még egyszer mindent, minden jó volt kivéve 1 dolog.
Ezt a sort nem engedte kicserélni se nano-ba, se szövegszerkesztővel, se a virt-manager-be
A nano a file mentése után azt írta hogy megváltoztatta, de nem
Ha meg is változtatja akkor instant vissza is áll...(erröl is van video)
Szerinted próbáljam meg úgy hogy átállítok az on-t off-ra?
Köszi szépen hogy ezt végig nyálaztad és szántál rá időt hogy megértsd!
liSSnEDux
"Ennek az egésznek az a lényege hogy linux alapokon futtatok egy teljes értékű win-t"
Erről jut eszembe - és csak megemlítem.: Robolinux https://distrowatch.com/table.php?distribution=robolinux
[törölve]
- Szerkesztve
Most csak így gyorsba válaszolok..
Nálad a gnome chras-el el valamiért.
Talán mert ugyan azt a GPU-t akarod beadni amit már a host is használ?
A hoston ne legyen fent a vga drivere meg semmi és próbáld meg úgy.
Ezt úgy szokták, hogy külön vga-n van a host és egy külön vga megy be a vm-nek (2x pcie).
Az apparmor-t meg próbából kikapcsolhatod, hogy utána is hiányolja e a profilt.
/etc/libvirt/qemu.conf
security_driver = "none"
ln -s /etc/apparmor.d/usr.sbin.libvirtd /etc/apparmor.d/disable/usr.sbin.libvirtd
Ezután indítsd újra a libvirtd-t.
[törölve]
Igen, mert ezzel elvileg át lehet adni a gpu-t és ez lenne a lényege amiböl nem következik az hogy nem lehet fent gpu driver az anyarendszeren
3 féle változatot póbáltam és egyikbe se volt olyan hogy ne legyen fent vga driver
"Ezt úgy szokták, hogy külön vga-n van a host és egy külön vga megy be a vm-nek (2x pcie)." Na igen, tudom, de én nem ezt a módszert szeretném annak ellenére hogy van egy elfekvő vga-m.
Ránézek erre az apparmor-os dologra még ma
itt a "none" helyén a "selinux" van
Pontosan az utáni parancsok mit csináltak amit leírtál? csak hogy tudjam mit csinálok
[törölve]
- Szerkesztve
Hey
Igen alap esetben selinux van ott és ki van kommentelve az egész sor.
Tehát oda írd be, hogy "none"
és töröld a kettőskeresztet a sor elejéről.
Ekkor a libvirt elvileg már nem fog egyeltalán keresni security profilt.
A másik az ln -s
disabled-re teszi az apparmorban a libvirtet, így ezután elvileg nem használja.
Így elméletben duplán is kikapcsoltuk, a libvirtben és az apparmorban is.
Desktopon még nem csináltam, de Xenserver-ben ugye úgy adtam hozzá, hogy a hoston nem volt fent driver.
Most már emléxem, hogy akkor 2 VGA-t is kipróbáltam, volt egy régebbi Nvidia valami kis gyenge de azt is sikerült beadni a VM-nek, meg egy szintén régi radeon HD-t.
A Xenserver meg ugye desktop nélkül fut.
Proxmoxban is be lehet így adni meg XCP-NG-ben is és XOA-ban is, meg a legtöbb virtualizációs megoldásban, de desktopon más a helyzet.
Nézzél a hoston is egy dmesg-et, journalctl-t meg talán a /var/log/messages
vagy syslog is érdekes lehet amikor ez a fekete kép váltás jön be és vissza kapcsol a gnome-ra.
A howto-t valamiért nem tudtam megnézni. be kell jelentkezni, bejelentkeztem de akkor sem mutatta.
Szóval nem tudom még mindíg milyen parancsok vannak a folyamatban.
Én kipróbálnám a másik kártyát is beletenni ha van még szabad pcie slot és azt beadni.
De nézzük meg mit mond majd apparmor nélkül.
Az is lehet, hogy az blokkolta a hozzáférést.
Viszont ha a host is használja és a vm is, az úgy szerintem nem lesz teljes értékű gpu passthrough.
- Szerkesztve
Nem működik...
Hogy tudom visszakapcsolni az apparmorosat?
Ránézek holnap amit irtál, mi is pontosan
Bal oldalt tudod kiválasztani hogy melyik lépést szeretnéd(ez itt az egyes ha az égészet kimásolod):
https://gitlab.com/risingprismtv/single-gpu-passthrough/-/wikis/1)-Preparations
Nekem bejelentkezés nélkül is megjeleniti minden hiba nélkül.
Ha kell lefotózgatom neked
[törölve]
- Szerkesztve
Köszi már látom és átnézem.
[törölve]
- Szerkesztve
liSSnEDux Hogy tudom visszakapcsolni az apparmorosat?
Kommenteld vissza a sort a qemu.conf fájlban és egy rm /etc/apparmor.d/disable/usr.sbin.libvirtd
majd systemctl restart libvirtd apparmor
De szerintem ne kapcsold vissza.
Ezeket a scripteket is lefuttattad?
https://gitlab.com/risingprismtv/single-gpu-passthrough
Ez volt az egyik olyan rész amiben nem voltam biztos hogy jól csináltam, átnézem holnap tüzetesebben. Jóéjt!
[törölve]
- Szerkesztve
clone-ozd a repot, lépj bele és csapass egy chmod +x install_hooks.sh && ./install_hooks.sh
és 10 miatyánk, hogy tényleg jó legyen.
furcsa ez az egész mert ezekbe a scriptekbe nincs semmi...
csak a hooks-ba
ezt kicsit nekem zavaros...
nem is tudom törölni amibe nincs semmi
[törölve]
- Szerkesztve
Úgy látszik jogosultsági problémák miatt a git clone nem szedi le, így minden scriptet neked kell kézzel létrehoznod.
Itt van a systemd unit script amit keresel:
https://gitlab.com/risingprismtv/single-gpu-passthrough/-/blob/master/systemd-no-sleep/libvirt-nosleep%40.service
Ha létrehozol mindent amit kell, akkor le fog futni azinstall_hooks.sh
Közben most észre vettem, hogy csak SSH-n nem megy a git clone, viszont https-en igen.
Próbáld meg így:
git clone https://gitlab.com/risingprismtv/single-gpu-passthrough.git
Cloning into 'single-gpu-passthrough'...
remote: Enumerating objects: 197, done.
remote: Counting objects: 100% (179/179), done.
remote: Compressing objects: 100% (94/94), done.
remote: Total 197 (delta 87), reused 164 (delta 81), pack-reused 18
Receiving objects: 100% (197/197), 53.73 KiB | 26.86 MiB/s, done.
Resolving deltas: 100% (94/94), done.
cd single-gpu-passthrough/
./install_hooks.sh
Nézd most itt van és nem üres:
root@ASUS-PC:~/single-gpu-passthrough# cat systemd-no-sleep/libvirt-nosleep@.service
[Unit]
Description=Preventing sleep while libvirt domain "%i" is running
[Service]
Type=simple
ExecStart=/usr/bin/systemd-inhibit --what=sleep --why="Libvirt domain \"%i\" is running" --who=%U --mode=block sleep infinity
root@ASUS-PC:~/single-gpu-passthrough#
Szerintem te csak a fő scriptet "install_hooks.sh" futtattad le és az összes többi hiányzik.
rájöttem, megvan
[törölve]
Ezek is előkerültek:
root@ASUS-PC:~/single-gpu-passthrough# ls hooks/
qemu vfio-startup.sh vfio-teardown.sh