Mein Setup:
mrcs aus der Sig ( sowohl board als auch cpu unterstützen VT-d, was zwingend erforderlich ist )
Von der iGPU 1 x HDMI 1 x DVI zu Desplay 1 & Display 2
Von Der GTX 1 x Displayport zu Display 2
Lezteres habe ich aber erst angeschlossen als ich soweit war die VM das erste Mal zu starten.
Vorher kann das ggf zu Verwirrung führen ;-) Zumindest bei mir.
Eingabegeräte sind eine öde DELL USB Tastatur, eine Func MS3 R2 und als Backup fürs Arch eine Logitech Dinovo Edge
Also ich habe mich in den Grundzügen recht genau an diese Anleitung hier gehalten:
GPU Passthrough Guide
Dies habe ich in einem frischen, händisch Installierten Arch umgesetzt. Ich gehe hier die einzelnen Punkte aus
der Installation noch mal durch und schreibe, was bei mir "anders" war ;-)
Setup and Installation
Meine erste Arch-Installation auf diesem System habe ich ( aus mir gerade nicht verständlichen gründen ) mit isolinux als bootloader durchgeführt.
Da ich keine Ahnung habe wie ich dort "intel_iommu=on” als Parameter übergebe um VT-d zu aktivieren, und der Wechsel zu Grub nicht sofort geklappt hat, habe ich
noch mal neu angefangen.
Das war nicht schlimm, da das System jungfräulich, also eh gerade frisch installiert war. Außerdem verinnerliche ich durch Wiederholung wichtige Dinge einfach besser ;-)
Mit Grub2 als Bootloader ( damit kenne ich mich ja aus ) hat es dann wunderbar funktioniert.
pci-e bus meiner GTX 0000:01:00.0 & 0000:01:00.1
look in /sys/bus/pci/devices/YOUR_BUS/iommu_group/devices/. If you do not have an iommu_group folder then vt-d was not enabled properly!
iommu group vorhanden = vt-d aktiv .. also weiter im Guide
Fixing IOMMU Grouping
War für mich nicht relevant.
Skip if using Nouveau
Da ich ein frisches System händisch installiert habe, gab es bei mir noch keinerlei Treiber für die GTX außer den Kernelinternen Nouveau. Also
SKIP
Setup Continued
Den Kernelinternen Nvidia Treiber "Nouveau" muss man leider blacklisten, sonst kommt man einfach nicht weiter. Amd User sind hier klar im Vorteil
/etc/modprobe.d/blacklist.conf :
blacklist nouveau
blacklist lbm-nouveau
options nouveau modeset=0
alias nouveau off
alias lbm-nouveau off
Modul "pci-stub" als dummymodul wird dann hinzugefügtund es folgt ein
rebuild
linux-vfio users run this
Der Punkt in der Anleitung hat dann für viel Verwirrung gesorgt, es war aber auch schon sehr spät ;-)
Natürlich nutze ja auch ich
vfio aber eben NICHT den vfio gepatchten Kernel vom Anfang, da ich das ja einfach nicht machen muss.
Now we edit grub once again ....
Dort ging es dann weiter. Man muss dem Dummy Modul
PCI-Stub schon durch den Bootloader Grub die device IDs der Grafikkarte zuweisen, dann haben nämlich die fiesen Nouveau Kernelmodule keine Chance mehr
die GTX für sich zu beanspruchen.
Nach einem Grub Update und Reboot ist folgendes erstrebenswert:
Console
“lspci -nnk”
Für die Grafikkarte sollte dann stehen
Kernel driver in use: pci-stub ( und nicht mehr nouveau)
Setup KVM/QEMU
Ohne Änderungen weiter bis:
sudo vfio-bind 0000:0#:00.0 0000:0#:00.1
Hiermit wird definiert, welche Geräte man mit in die VM nehmen möchte. In der Anleitung wird erst mal nur die Grafikkarte gewählt. Für einen ersten Test ist das OK, wird aber später eh angepasst.
Bei mir sieht es derzeit so aus:
vfio-bind 0000:01:00.0(<- GTX780ti ohne HDMI Sound) 0000:03:00.0(<- Zweiter Port der Intel Pro DualPort NIC) 0000:00:1b.0(<- OnboardSound Usb geräte werden anders gehandhabt
Wenn man das vfio-bind ausgeführt hat und "lspci -nnk" folgendes ausgibt "Kernel driver in use: vfio-pci" ist alles bestens.
Die relevanten Pfade im Startscript aus der Anleitung sind natürlich anzupassen, das Script reicht aber für einen ersten Test ebenfalls aus.
Den späteren Punkt mit
xrandr habe ich bisher noch nicht getestet, da ich es derzeit als unproblematisch ansehe nach dem Starten der VM zweimal auf die "Source" Taste am entsprechenden Monitor zu drücken.
Mein Startscript sieht derzeit so aus:
Code:
GNU nano 2.5.3 Datei: /usr/bin/kvmstart
#!/bin/bash
vfio-bind 0000:01:00.0 0000:03:00.0 0000:00:1b.0 <-- [COLOR="#FF0000"]den vfio-bind befehl habe ich erst mal in mein vm-start-script itegriert, da es mir dort sinnig erschien.[/COLOR]
cp /usr/share/edk2.git/ovmf-x64/OVMF_VARS-pure-efi.fd /tmp/my_vars.fd
qemu-system-x86_64 \
-enable-kvm \
-m 16384 \ <-- [COLOR="#FF0000"]16 von 32GiB Ram der VM zugewiesen. Arch mit XFCE Chromium und 10 offenen Tabs belegt gerade 1.2Gib Ram, da würde also noch was gehen ;-)[/COLOR]
-smp cores=4,threads=2 \ [COLOR="#FF0000"]<-- CPU Kerne und Threads angepasst[/COLOR]
-cpu host,kvm=off \ <-- [COLOR="#FF0000"]afaik ist es derzeit zwingend nötig bei nvidia Karten kvm=off zu setzen da der treiber unter windows sonst seinen dienst verweigert. [/COLOR]Blame Nvidia for the GTX / Quadro bullshit
-vga none \
-usb -usbdevice host:413c:2113 \ <-- [COLOR="#FF0000"]Maus oder Tastatur[/COLOR]
-usb -usbdevice host:040b:0a68 \ <-- [COLOR="#FF0000"]Maus oder Tastatur[/COLOR]
-device vfio-pci,host=01:00.0,multifunction=on \ <--[COLOR="#FF0000"]vga[/COLOR]
-device vfio-pci,host=00:1b.0 \ <-- [COLOR="#FF0000"]sound [/COLOR]
-device vfio-pci,host=03:00.0 \ <-- [COLOR="#FF0000"]netzwerk[/COLOR]
-drive if=pflash,format=raw,readonly,file=/usr/share/edk2.git/ovmf-x64/OVMF_CODE-pure-efi.fd \
-drive if=pflash,format=raw,file=/tmp/my_vars.fd \
-device virtio-scsi-pci,id=scsi \
-drive file=/home/mrcs/win.img,id=disk,format=qcow2,if=none,cache=writeback -device scsi-hd,drive=disk \ <-- [COLOR="#FF0000"]Win10 System HDD[/COLOR]
-drive file=/home/mrcs/win2.img,id=disk2,format=qcow2,if=none,cache=writeback -device scsi-hd,drive=disk2 \ <-- [COLOR="#FF0000"]Win10 Games HDD[/COLOR]
Die Pfade für das Windows 10.iso und die Treiber.iso habe ich hier schon wieder entfernt, sowie diverse Anpassungen für mich gemacht.
So läuft es bei mir schon nahezu perfekt spielbar!