Nesse tutorial vou demonstrar uma falha na libvirt para detectar OVMF/UEFI no Arch Linux com qemu dentro do virt-manager.
Ao tentar iniciar uma VM com o virt-manager com UEFI, que é um sistema de boot muito usado pelo Windows, me deparei com um erro.
Então utilizei de artifícios descritos nas duas páginas para tentar iniciar a minha VM com o UEFI habilitado.
Antes de mais nada, visite a página que explica como instalar em UEFI pelo virt manager: https://wiki.archlinux.org/index.php/Libvirt#UEFI_Support
Da mesma forma, veja a página que reporta o bug no virt-manager: https://bugs.archlinux.org/task/64175
Para habilitar o UEFI na VM é necessário que você crie a VM de acordo com as seguintes imagens. É preciso clicar no ícone para Personalizar configuração antes da instalação.
Logo depois de clicar em concluir, irá abrir uma nova janela.
No spinner referente a firmware você irá encontrar a opção de UEFI não sendo clicável.
Então, vou mostrar a solução que encontrei para que a UEFI funcione corretamente:
Primeiramente instalei o pacote OVMF com o comando:
Adicionei a seguinte linha como descrito na wiki no arquivo /etc/libvirt/qemu.conf
nvram = [ "/usr/share/ovmf/x64/OVMF_CODE.fd:/usr/share/ovmf/x64/OVMF_VARS.fd" ]
Agora vamos criar o arquivo /usr/share/qemu/firmware/60-ovmf-x86_64.json que foi descrito assim na página do bug com o comando:
E inserir o seguinte conteúdo:
{
“description”: “UEFI OVMF firmware for x86_64”,
“interface-types”: [
“uefi”
],
“mapping”: {
“device”: “flash”,
“executable”: {
“filename”: “/usr/share/ovmf/x64/OVMF_CODE.fd”,
“format”: “raw”
},
“nvram-template”: {
“filename”: “/usr/share/ovmf/x64/OVMF_VARS.fd”,
“format”: “raw”
}
},
“targets”: [
{
“architecture”: “x86_64”,
“machines”: [
“pc-i440fx-4.2”,
“pc-q35-*”
]
}
],
“features”: [
“acpi-s3”,
“amd-sev”,
“verbose-dynamic”
],
“tags”: [
]
}
Logo após adicionar as linhas nos arquivos reiniciei o serviço da libvirtd com o comando:
Porém, mesmo assim, não obtive sucesso. Então, veja a solução.
Criei uma nova VM da mesma forma e na parte onde modifica as configurações fiz o seguinte.
Editei o XML da VM e modifiquei as seguintes linhas:
<os>
<type arch=”x86_64″ machine=”pc”>hvm</type>
<loader readonly=”yes” type=”pflash”>/usr/share/ovmf/x64/OVMF_CODE.fd</loader>
<boot dev=”hd”/>
</os>
Elas aparecem na imagem a seguir:
Trocando as pelas linhas:
<os>
<type arch=”x86_64″ machine=”pc-i440fx-4.2″>hvm</type>
<loader readonly=”yes” type=”pflash”>/usr/share/ovmf/x64/OVMF_CODE.fd</loader>
<nvram template=”/usr/share/ovmf/x64/OVMF_VARS.fd”>/Pasta_que_esta_salva_a_VM/arch-uefi_VARS.fd</nvram>
<boot dev=”hd”/>
</os>
Troque o diretório do VARS onde está a parte da nvram para o diretório onde você salvou sua VM.
No meu caso ficou como a imagem a seguir:
Agora com as mudanças feitas apenas cliquei em Iniciar instalação e tudo ocorreu bem como mostra na imagem a seguir.
Enfim, espero poder ter ajudado com mais este tutorial sobre falha na libvirt para detectar OVMF/UEFI no Arch Linux.