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

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

[ Hits: 7.140 ]

 


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

Eliminando o splash screen do KDE

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

Construindo bridges Tor com Docker

Comando seq com saída em hexadecimal

RAID 5 com apenas dois discos, ou menos

Leitura recomendada

Como derrubar usuário conectado no mesmo servidor

Bloqueando alteração de papel de parede

cpb - Copiando arquivos executáveis ...

Repositório RPM personalizado para CentOS 5

Implementando um cluster Linux com OpenMosix e Slackware

  

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