gpu passthrough problema em adicionar rom abandonado

0

Estou tentando passar o GPU com qemu-kvm usando virsh no Lubuntu 17.10

Eu instalei o Windows 7 (UEFI) e ele roda ok, mas o driver de dispositivo não instala dizendo

Insufficient resource (error 12).

então eu despejei o gpu rom e adicionei

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

em <hostdev> de gpu pci.

eu fiz

chmod 777 /home 

e

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

antecipadamente

Sempre que eu adiciono rom ... line no script virsh, encontro uma mensagem de erro como esta

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

O que devo fazer agora? Não consegui dormir mais de 30 horas: - (

    
por LemonPie1111 13.12.2017 / 10:49

1 resposta

0

O erro 'failed to find romfile' é mais provável porque o AppArmor deve estar habilitado por padrão no Ubuntu (pelo menos no Ubuntu Desktop / Server, caso contrário o SELinux é provavelmente similar à solução abaixo para o AppArmor):

Solução

O libvirt cria / gerencia automaticamente os perfis do AppArmor armazenados em /etc/apparmor.d/libvirt/ para cada vm. O processo adiciona exceções de arquivos para certos dispositivos ligados à vm (não sou especialista nisso, mas parece que não conta o arquivo rom).

Mas você pode forçá-lo a adicionar uma exceção para o arquivo rom, adicionando qualquer tipo de dispositivo proveniente de um arquivo. Eu uso uma unidade de cd falso que se parece com o seguinte:

Adicione o seguinte código à sua configuração 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>

Se você ainda tiver problemas

Isso geralmente não é recomendado, pois desativa totalmente a proteção do AppArmor para essa VM.

  1. Veja sua configuração: virsh edit VMNAME

  2. Encontre a linha do uuid que se parece com: <uuid>YOUR-UUID</uuid>

  3. Execute sudo aa-complain /etc/apparmor.d/libvirt/libvirt-YOUR-UUId para desativar a aplicação da política

por Dennis Shtatnov 22.01.2018 / 06:54