Atualizando a BIOS de máquinas virtuais baseadas em KVM/QEMU

Publicado por Carlos Affonso Henriques. em 30/12/2013

[ Hits: 5.676 ]

 


Atualizando a BIOS de máquinas virtuais baseadas em KVM/QEMU



O KVM é uma ferramenta fantástica que não deve, absolutamente nada, para soluções proprietárias com VMware e outras.

Eu diria que até os supera em muitos pontos. Um recurso interessante, é a possibilidade de se atualizar a BIOS e os Firmwares de vídeo, rede, etc.

No CentOS/RHEL, basta fazer o seguinte:

No diretório /usr/share/qemu-kvm/, estão as imagens das ROMs usadas pelo Hardware virtual do QEMU, bem como links simbólicos:

drwxr-xr-x.   6 root root 4.0K Dec 23 10:48 .
drwxr-xr-x. 267 root root  12K Dec  6 07:36 ..
lrwxrwxrwx    1 root root   23 Dec 23 10:48 bios.bin -> ../seabios/bios1732.bin
drwxr-xr-x.   2 root root 4.0K Sep  2 11:14 cpu-model
-rw-r--r--    1 root root 1.5K Dec  3 18:16 extboot.bin
drwxr-xr-x.   2 root root 4.0K Dec  4 08:23 keymaps
-rw-r--r--    1 root root 1.0K Dec  3 18:16 linuxboot.bin
-rw-r--r--    1 root root 1.0K Dec  3 18:16 multiboot.bin
lrwxrwxrwx    1 root root   24 Dec  4 08:23 pxe-e1000.bin -> ../gpxe/e1000-0x100e.rom
lrwxrwxrwx    1 root root   19 Dec  4 08:23 pxe-ne2k_pci.bin -> ../gpxe/rtl8029.rom
lrwxrwxrwx    1 root root   19 Dec  4 08:23 pxe-pcnet.bin -> ../gpxe/pcnet32.rom
lrwxrwxrwx    1 root root   19 Dec  4 08:23 pxe-rtl8139.bin -> ../gpxe/rtl8139.rom
lrwxrwxrwx    1 root root   22 Dec  4 08:23 pxe-virtio.bin -> ../gpxe/virtio-net.rom
drwxr-xr-x    3 root root 4.0K Dec  3 18:17 qemu-ga
drwxr-xr-x    2 root root 4.0K Oct  3 10:07 qemu-ga-win32
lrwxrwxrwx    1 root root   22 Dec  4 08:23 sgabios.bin -> ../sgabios/sgabios.bin
-rw-r--r--    1 root root 8.8K Dec  3 18:16 vapic.bin
lrwxrwxrwx    1 root root   34 Dec  4 08:23 vgabios.bin -> ../vgabios/VGABIOS-lgpl-latest.bin
lrwxrwxrwx    1 root root   41 Dec  4 08:23 vgabios-cirrus.bin -> ../vgabios/VGABIOS-lgpl-latest.cirrus.bin
lrwxrwxrwx    1 root root   38 Dec  4 08:23 vgabios-qxl.bin -> ../vgabios/VGABIOS-lgpl-latest.qxl.bin
lrwxrwxrwx    1 root root   41 Dec  4 08:23 vgabios-stdvga.bin -> ../vgabios/VGABIOS-lgpl-latest.stdvga.bin
lrwxrwxrwx    1 root root   41 Dec  4 08:23 vgabios-vmware.bin -> ../vgabios/VGABIOS-lgpl-latest.vmware.bin

No caso da BIOS da máquina virtual, podemos ver acima o link simbólico bios.bin apontando para a imagem bios1732.bin.

As últimas versões do código fonte da SeaBIOS empregada pelo QEMU, podem ser baixadas de:
As informações sobre as releases, estão em:
Depois de baixar e descompactar o fonte da BIOS, basta compilá-lo usando tão somente o make.

É possível que ele requeira alguma dependência. No meu caso, foi o pacote iasl, bastando apenas instalá-lo via yum:

# yum install iasl

Após a compilação o arquivo bios.bin, será criado em foo/seabios-1.7.3.2/out, bastando apenas copiá-lo para /usr/share/seabios/, para manter as compatibilidades.

E, em seguida, criar um link simbólico para ele em /usr/share/qemu-kvm/, ou ainda, temos os binários prontos em:
É interessante atentar, que podemos usar inclusive versões modificadas de BIOS que suportam UEFI. Há alguns projetos legais sobre isso, mas ainda não debrucei sobre isso por falta de tempo e necessidade. Mas fica destacado aqui.

Bom trabalho!

Outras dicas deste autor

Comando seq com saída em hexadecimal

Cartão Atheros sob Slackware 12.2 com driver Madwifi

sed formatando CPF, CNPJ e datas

Astralinux: Imagem Docker oficial

Permissões persistentes em portas seriais

Leitura recomendada

Matrix no terminal Linux

Ignorar determinado pacote na listagem de pacotes órfãos do deborphan

Samba não loga no Windows 7: "Falha na relação de confiança entre esta estação de trabalho e domínio primário" [Resolvido]

Configurando o Nagios com NagiosQL

Criando um certificado digital (OpenVPN)

  

Comentários
[1] Comentário enviado por maurorodrigues em 03/01/2014 - 15:36h

Muito bom! parabéns pelo artigo.

Uma pergunta: alguma chance de fazer isso por máquina virtual em vez de todo set?

Abraço

[2] Comentário enviado por capitainkurn em 03/01/2014 - 22:44h

Pela linha de comando do qemu tem sim, tenho quase certeza que a Libvirt preveja algum set no xml para rodar cada vm com uma bios individual.



Contribuir com comentário