проблема прохождения gpu при добавлении дампов

Я пытаюсь выполнить gpu passthrough с qemu-kvm, используя virsh в Lubuntu 17.10

Я установил Windows 7 (UEFI), и он работает нормально, но драйвер устройства не устанавливает, говоря

Недостаточно ресурсов (ошибка 12).

, поэтому я сбросил gpu rom и добавил

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

в <hostdev> gpu pci.

Я сделал

chmod 777 /home 

и

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

заранее

Всякий раз, когда я добавляю строку rom ... в скрипт virsh, я сталкиваюсь с сообщением об ошибке вроде это

############################################################################### "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"
###############################################################################

Что мне теперь делать? Я не мог спать около 30 часов: - (

0
задан 14 December 2017 в 02:32

2 ответа

Ошибка «не удалось найти romfile», скорее всего, связана с тем, что AppArmor должен быть включен по умолчанию в Ubuntu (по крайней мере, в Ubuntu Desktop / Server, в противном случае проблема, вероятно, SELinux аналогична приведенному ниже решению для AppArmor):

Решение

libvirt автоматически создает / управляет профилями AppArmor, хранящимися в /etc/apparmor.d/libvirt/ для каждого vm. Процесс добавляет исключения файлов для определенных устройств, связанных с виртуальной машиной (я не эксперт по этому вопросу, но, похоже, он не считает файл rom).

Но вы можете принудительно добавить исключение для файла rom, добавив устройство любого типа из файла. Я использую поддельный CD-привод, который выглядит следующим образом:

Добавьте следующий код в вашу конфигурацию xml:

<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>

Если у вас все еще есть проблемы

Как правило, это не рекомендуется, поскольку полностью отключает защиту AppArmor для этой одной виртуальной машины.

  1. Посмотрите на вашу конфигурацию: virsh edit VMNAME

  2. Найдите строку uuid, которая выглядит следующим образом: <uuid>YOUR-UUID</uuid>

  3. Запустите sudo aa-complain /etc/apparmor.d/libvirt/libvirt-YOUR-UUId, чтобы отключить принудительное применение политики

.
0
ответ дан 14 December 2017 в 02:32

Если эта ошибка из-за AppArmor, просто переместитесь, файл ROM к /usr/share/vgabios (сделайте этот dir, если это не существует). Этому пути позволяют быть считанным из kvm-qemu по умолчанию apparmor профиль.

Некоторый другой разрешенный путями по умолчанию:

  # 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,
2
ответ дан 1 November 2019 в 11:34

Другие вопросы по тегам:

Похожие вопросы: