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

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

[ Hits: 7.211 ]

 


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

Alterando o MAC address de sua placa de rede com o ifconfig

TOR Browser rodando sob root ou qualquer outro usuário

Conhecendo o printf

Limitando a 1 login por usuário

Criando uma imagem Docker a partir de uma máquina virtual

Leitura recomendada

Definindo Yaourt como "pacman2"

Dual boot Linux Mint 17.2 x Windows 8.1 SL com UEFI descomplicado

Certificação Conectiva

Montando servidor OpenGTS (rastreamento GPS) em GNU/Linux

Samba - Erros que podem ocorrer durante o logon do cliente

  

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




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts