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.
-
Veja sua configuração:
virsh edit VMNAME
-
Encontre a linha do uuid que se parece com:
<uuid>YOUR-UUID</uuid>
-
Execute
sudo aa-complain /etc/apparmor.d/libvirt/libvirt-YOUR-UUId
para desativar a aplicação da política