Eu localizei o problema na validação XML de domínio no utilitário virt-aa-helper
. Este é o utilitário que deve gerar perfis apparmor sob demanda. Não é a estrutura do XML que falha, mas o erro relatado parece indicar que esse é o caso. Uma validação lógica dentro da função virDomainDefParseXML
em domain_conf.c
é interrompida para contêineres LXC.
Não estou familiarizado o suficiente com o código libvirt para modificar essa área compartilhada - posso ter quebrado outra coisa, mas o patch a seguir parece funcionar:
if (!(flags & VIR_DOMAIN_DEF_PARSE_SKIP_OSTYPE_CHECKS)) {
/* If the logic here seems fairly arbitrary, that's because it is :)
* This is duplicating how the code worked before
* CapabilitiesDomainDataLookup was added. We can simplify this,
* but it would take a bit of work because the test suite fails
* in numerous minor ways. */
bool use_virttype = ((def->os.arch == VIR_ARCH_NONE) ||
!def->os.machine);
virCapsDomainDataPtr capsdata = NULL;
para ler
if (!(flags & VIR_DOMAIN_DEF_PARSE_SKIP_OSTYPE_CHECKS)) {
/* If the logic here seems fairly arbitrary, that's because it is :)
* This is duplicating how the code worked before
* CapabilitiesDomainDataLookup was added. We can simplify this,
* but it would take a bit of work because the test suite fails
* in numerous minor ways. */
bool use_virttype = (def->os.type != VIR_DOMAIN_OS_TYPE_EXE) &&
((def->os.arch == VIR_ARCH_NONE) ||
!def->os.machine);
virCapsDomainDataPtr capsdata = NULL;
Infelizmente, não consegui encontrar uma maneira de corrigir isso sem uma recompilação. Se você usa uma máquina de 64 bits, pode baixar pacotes que eu construí localmente a partir de este link (desculpe minha conta da Microsoft).
Nota : Para ver se você é afetado por este bug, digite o seguinte em um prompt de comando (copiado de este fórum postar ):
$ export VM=foo ; virsh -c lxc:// dumpxml $VM |\
sudo /usr/lib/libvirt/virt-aa-helper -c \
-u libvirt-'virsh -c lxc:// domuuid $VM'
Em que foo
é o nome do contêiner lxc que falha. Se você ver a saída
virt-aa-helper: error: could not parse XML
virt-aa-helper: error: could not get VM definition
então provavelmente é o mesmo bug.