Falha na libvirt para detectar OVMF/UEFI no Arch

Falha na libvirt para detectar OVMF/UEFI no Arch
Falha na libvirt para detectar OVMF/UEFI no Arch

Nesse tutorial vou demonstrar uma falha na libvirt para detectar OVMF/UEFI no Arch Linux com qemu dentro do virt-manager.

Falha na libvirt para detectar OVMF/UEFI no Arch
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.

Falha na libvirt para detectar OVMF/UEFI no Arch
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.

Spinner referente a firmware
Spinner referente a firmware

Então, vou mostrar a solução que encontrei para que a UEFI funcione corretamente:

Primeiramente instalei o pacote OVMF com o comando:

pacman -S ovmf

Adicionei a seguinte linha como descrito na wiki no arquivo /etc/libvirt/qemu.conf

sudo nano /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:

sudo nano /usr/share/qemu/firmware/60-ovmf-x86_64.json

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:

sudo systemctl restart libvirtd

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:

XML da VM.
XML da VM.

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:

XML da VM modificado.
XML da VM modificado.

Agora com as mudanças feitas apenas cliquei em Iniciar instalação e tudo ocorreu bem como mostra na imagem a seguir.

UEFI funcionando.
UEFI funcionando.

Enfim, espero poder ter ajudado com mais este tutorial sobre falha na libvirt para detectar OVMF/UEFI no Arch Linux.