Direkt zum Hauptinhalt

VGA Grafikkarte in VM (KVM) durchreichen

Vorraussetzung wie im vorherigen Seite. Das auch die Grafikkarten geblacklistet wurden.

!!!!!VGA PASSTHROUGH funktioniert nur wenn das Host Betriebssystem im EFI Boot installiert wurde!!!!!


Siehe: Einschalten von vt-d für Intel CPUs (iommu)

Eine VM Erstellen:
Bildschirmfoto vom 2022-10-20 13-13-35.png

Nun ISO und OS auswählen, hier eine Windows 10 Machine mit ISO. Wenns ein Linux ist,linux auswählen.
Hier sind die Einstellungen egal.


Bildschirmfoto vom 2022-10-20 13-17-11.png

Hier:

Machine q53 auswählen.
BIOS : OVMF (UEFI) auswählen
Add EFI Disk : Haken rein
Storage dazu auswählen
Pre-Enroll-Keys : Haken rein
Qemu Agent : Haken rein
Add TPM : Haken rein
Storage dazu auswählen

Bildschirmfoto vom 2022-10-20 13-19-00.png

Nun wieder wie gehabt eine Festplatte zuweisen. Ich nehme hier virtio und 128 GB.
Denkt bei Windows dran, im Anschluss ein zweites CD/DVD Laufwerk mit den Virtio Treibern hinzuzufügen.
Download hier : https://github.com/virtio-win/virtio-win-pkg-scripts/blob/master/README.md
Die latest Stable und die guest tools sin im Anhang dieses Artikels.

Nun  die CPU settings
Bildschirmfoto vom 2022-10-20 13-26-59.png

Memory Settings

Bildschirmfoto vom 2022-10-20 13-28-05.png

Network Settings.
Hier auf VirtIO stellen
Das schöne ist das Win 110/1 die Treiber nicht kennt und somit ein lokales Konto verwendet/erstellt werden kann,

Bildschirmfoto vom 2022-10-20 13-29-37.png

Nun auf finisch, haken bei Start after creation raus.

Bildschirmfoto vom 2022-10-20 13-30-41.png

Nun noch ein zweites CD/DVD Laufwerk erstellen für die VirtIO treiber. Aber nur nötig bei Windows VMS. sonst kann dieser Teil übersprungen werden.

Nun die Grafikkarte hinzufügen.
Dazu auf Add Hardware PCI, dann die Grafikkarte auswählen. mit der 0 bei der ID am ende.

Menü_001.png

Hier Haken bei All Funcktions rein und Primary GPU auch Haken rein. Und PCI-Express auch rein

Screenshot 2022-10-21 at 12-17-52 mediawohn - Proxmox Virtual Environment.png

Damit die Graffikarte nicht geladen wird, müssen wir die IDs black listen.
Dazu erstmal die IDs bekommen.
Die bekommen wir mittels  lspci -n -s 01:00
01:00 ist die erste PCI ID usnerer Graffikarte (Siehe Screenshot Grafikkarten auswahl in derVM

lspci -n -s 01:00


Ausgabe:

01:00.0 0300: 10de:1380 (rev a2)
01:00.1 0403: 10de:0fbc (rev a1)

Nun die Beiden IDS blacklisten. DIese IDS sind von der GPU und der Soundkarte auf der GPU (HDMI hat Sound)

echo "options vfio-pci ids=10de:1380,10de:0fbc" > /etc/modprobe.d/vfio.conf

Den Grub anhängen

video=vesafb:off video=efifb:off iommu=pt"

In der GRUb conf hinzufügen
Für legacy

nano /etc/default/grub
update grub

Unter EFI

nano /etc/kernel/cmdline
pve-efiboot-tool refresh

hinzufügen


Nun reboot, des Proxmox hosts.

reboot

Wenn alles geklappt hat sollte der Loginscreen nicht mehr kommen, sondern mitten im Boottext stecken bleiben, da die Grafikkarte hier abgewürgt wurde.

Nun die Vm starten, voila oder aber nein Kein Bild.
Dann Fehlersuche hier


Fehlersuche


Wenn das Bild auf no  signal bleibt.

In der /var/log/syslog schauen

tail -f /var/log/syslog

Hier der LOG Fehler

Oct 21 16:15:57 mediawohn kernel: [   32.695520] vfio-pci 0000:01:00.0: No more image in the PCI ROM
Oct 21 16:15:58 mediawohn pvedaemon[1616]: <root@pam> end task UPID:mediawohn:000007B2:00000C05:6352A99B:qmstart:100:root@pam: OK
Oct 21 16:15:59 mediawohn kernel: [   34.964385] vfio-pci 0000:01:00.0: No more image in the PCI ROM
Oct 21 16:15:59 mediawohn kernel: [   34.964435] vfio-pci 0000:01:00.0: No more image in the PCI ROM



Bevor es weiter geht testen ob die Grafikarte UEFI OMFV fähig ist

apt install git gcc make
git clone https://github.com/awilliam/rom-parser
cd rom-parser
make

Nun das rom aus der Grafikkarte holen ud testen

cd /sys/bus/pci/devices/0000:01:00.0/
echo 1 > rom
cat rom > /root/image.rom
echo 0 > rom
cd ~
cd rom-parser
./rom-parser /root/image.rom

Ausgabe :
Hier ein Fehler, am ende.
Dies bedeutet das Auf das Rom nicht zugegriffen werden kann. In meinem Beispiel hab Ich legacy Boot.
Denn am einfachsten gets wenn das Hostsystem gleich als UEFI installiert ist.
Die gegenprobe mach ich noch. Also für die Grafikkarte ein VBIOS holen

alid ROM signature found @0h, PCIR offset 190h
	PCIR: type 0 (x86 PC-AT), vendor: 10de, device: 1380, class: 030000
	PCIR: revision 0, vendor revision: 1
Error, ran off the end

VBIOS holen:

unter https://www.techpowerup.com/vgabios/ sein passendes rom suchen.
Dann dort mit rechtsklick den Downlink undklicken und adresse kopiren meins liegt unter
https://www.techpowerup.com/vgabios/175522/Asus.GTX750Ti.2048.141104.rom
Nun per wget das image ablegen.

Wenn das passende rom nicht dabei selbst dumpen mit nvflash

https://www.techpowerup.com/download/nvidia-nvflash/
 Usage:

chmox +x nvflash
./nvflash --save <filename>

ansonsten mit wget das richtige file holen, wenn bei techpowerup verfügbar.
Beispiel für meine File

wget -O /usr/share/kvm/gtx750ti2048m.bin https://www.techpowerup.com/vgabios/175522/Asus.GTX750Ti.2048.141104.rom

ROM File ablegen unter
/usr/share/kvm/meinromfile.bin

Nun die vm conf anpassen und die romfile reinpacken ohnepfad nur den dateinamen

nano /etc/pve/qemu-server/1<VMID>.conf
nano /etc/pve/qemu-server/100.conf

Dort an die vga Zeile anfügen

,romfile=vbios.bin

Beispiel:

,romfile=gtx750ti2048m.bin


hostpci0: 0000:01:00,pcie=1,x-vga=1,romfile=gtx750ti2048m.bin

Nun an die Syslog hängen

tail -f /var/log/syslog




ff