GPU-Passthrough-Problem beim Hinzufügen von Dumped Rom

0

Ich versuche, mit Passthrough qemu-kvmunter virshLubuntu 17.10 zu arbeiten

Ich habe Windows 7 (UEFI) installiert und es läuft in Ordnung, aber der Gerätetreiber installiert kein Sprichwort

Unzureichende Ressource (Fehler 12).

also habe ich gpu rom rausgeschmissen und hinzugefügt

<rom bar='on' file='/home/gpu.dump'/>

in <hostdev>gpu pci.

Ich tat

chmod 777 /home 

und

gpu.dump, user = "root" group = "root" 

im Voraus

Immer wenn ich rom ... im Virsh-Skript hinzufüge, stoße ich auf eine solche Fehlermeldung

############################################################################### "Error starting domain: internal error: process exited while connecting to monitor: 2017-12-13T09:45:38.629221Z qemu-system-x86_64:
-chardev pty,id=charserial0: char device redirected to /dev/pts/2 (label charserial0) 2017-12-13T09:45:39.146358Z qemu-system-x86_64:
-device vfio-pci,host=03:00.0,id=hostdev0,bus=pci.0,addr=0x7,romfile=/home/gt710.dump: failed to find romfile "/home/gt710.dump"

Traceback (most recent call last):   File "/usr/share/virt-manager/virtManager/asyncjob.py", line 88, in cb_wrapper
    callback(asyncjob, *args, **kwargs)   File "/usr/share/virt-manager/virtManager/asyncjob.py", line 124, in tmpcb
    callback(*args, **kwargs)   File "/usr/share/virt-manager/virtManager/libvirtobject.py", line 83, in newfn
    ret = fn(self, *args, **kwargs)   File "/usr/share/virt-manager/virtManager/domain.py", line 1405, in startup
    self._backend.create()   File "/usr/lib/python2.7/dist-packages/libvirt.py", line 1062, in create
    if ret == -1: raise libvirtError ('virDomainCreate() failed', dom=self) libvirtError: internal error: process exited while connecting to monitor: 2017-12-13T09:45:38.629221Z qemu-system-x86_64:
-chardev pty,id=charserial0: char device redirected to /dev/pts/2 (label charserial0) 2017-12-13T09:45:39.146358Z qemu-system-x86_64:
-device vfio-pci,host=03:00.0,id=hostdev0,bus=pci.0,addr=0x7,romfile=/home/gt710.dump: failed to find romfile "/home/gt710.dump"
###############################################################################

Was sollte ich jetzt tun? Ich konnte ungefähr 30 Stunden nicht schlafen :-(

LemonPie1111
quelle

Antworten:

1

Wenn dieser Fehler auf AppArmor zurückzuführen ist, verschieben Sie die ROM-Datei nach /usr/share/vgabios(machen Sie dieses Verzeichnis, wenn es nicht existiert). Dieser Pfad darf standardmäßig aus kvm-qemu gelesen werden.

Einige andere standardmäßig zulässige Pfade:

  # access to firmware's etc
  /usr/share/kvm/** r,
  /usr/share/qemu/** r,
  /usr/share/qemu-kvm/** r,
  /usr/share/bochs/** r,
  /usr/share/openbios/** r,
  /usr/share/openhackware/** r,
  /usr/share/proll/** r,
  /usr/share/vgabios/** r,
  /usr/share/seabios/** r,
  /usr/share/misc/sgabios.bin r,
  /usr/share/ovmf/** r,
  /usr/share/OVMF/** r,
  /usr/share/AAVMF/** r,
  /usr/share/qemu-efi/** r,
  /usr/share/slof/** r,
Andrey Ivanov
quelle
0

Der Fehler "Romdatei konnte nicht gefunden werden" ist höchstwahrscheinlich darauf zurückzuführen, dass AppArmor in Ubuntu standardmäßig aktiviert sein sollte (zumindest in Ubuntu Desktop / Server, andernfalls liegt das Problem wahrscheinlich bei SELinux, ähnlich wie in der folgenden Lösung für AppArmor):

Lösung

libvirt erstellt / verwaltet automatisch AppArmor-Profile, die /etc/apparmor.d/libvirt/für jede VM gespeichert sind. Der Prozess fügt Dateiausnahmen für bestimmte Geräte hinzu, die an das VM gebunden sind (ich bin kein Experte dafür, aber es scheint, als würde die ROM-Datei nicht gezählt).

Sie können jedoch erzwingen, dass eine Ausnahme für die ROM-Datei hinzugefügt wird, indem Sie einen beliebigen Gerätetyp hinzufügen, der aus einer Datei stammt. Ich verwende ein gefälschtes CD-Laufwerk, das wie folgt aussieht:

Fügen Sie der XML-Konfiguration den folgenden Code hinzu:

<devices>
...
<disk type='file' device='cdrom'>
    <driver name='qemu' type='raw'/>
    <source file='/path/to/the.rom'/>
    <target dev='sdb' bus='sata'/>
    <readonly/>
</disk>
...
</devices>

Wenn Sie immer noch Probleme haben

Dies wird im Allgemeinen nicht empfohlen, da der AppArmor-Schutz für diese eine VM vollständig deaktiviert wird.

  1. Schauen Sie sich Ihre Konfiguration an: virsh edit VMNAME

  2. Suchen Sie die UUID-Zeile, die wie folgt aussieht: <uuid>YOUR-UUID</uuid>

  3. Ausführen sudo aa-complain /etc/apparmor.d/libvirt/libvirt-YOUR-UUId, um die Durchsetzung der Richtlinie zu deaktivieren

Dennis Shtatnov
quelle