Article image
Gustavo Gaspar
Gustavo Gaspar11/03/2022 02:05
Share

Como usar o QEMU para gerenciar VMs

  • #Linux
  • #Informática Básica
  • #Testes unitários

Em minha jornada pela web especificamente no reino open-source, encontrei um ferramenta poderosíssima e versátil, em linha de comando para criar maquinas virtuais e até mesmo Emular uma arquitetura diferente.

Um emulador / virtualizador pode ser amplamente utilizado como:

  • Teste de compatibilidade.
  • Teste de requisitos mínimos e recomendados.
  • Desenvolver para uma plataforma especifica.
  • Modificar um Sistema Operacional (exemplo: android x86)

E a lista continua de acordo com a sua criatividade....

⚠️Modo Nerdão: Ativado .

Em particularidade o QEMU tem uma aceleração nativa no linux, por contar um um módulo especifico de hypervisor o KVM(maquina virtual baseada no kernel), sobre tudo a compatibilidade se estende:

  • Sistemas Hospedeiros: Linux OS, MacOS, FreeBSD, OpenBSD, netBSD e Windows
  • Arquiteturas hospedeiras: Arm MIPS PPC RISC-V S390X SPARC X86
*Vale ressaltar que emular uma arquitetura RISC, em uma CISC tem muita perca de desempenho (Futuramente terá outro artigo).

⚠️Modo Nerdão: Desativado.

Vamos para a instalação

Windows com pacote Executável

Download QEMU - QEMU

Linux gerenciador de pacotes:

Arch: 

pacman -S qemu

Debian/Ubuntu: 

apt-get install qemu

Fedora: 

dnf install @virtualization

Gentoo: 

emerge --ask app-emulation/qemu

RHEL/CentOS: 

yum install qemu-kvm

SUSE:

zypper install qemu

Gerenciando o QEMU

O gerenciamento do QEMU é feita totalmente por linha de comando seja pelo bash ou pelo powershell:

Criar um disco virtual (exemplo com 10GB), para alocar uma nova VM:

qemu-img create qcow2 nome_do_disco.qcow2 10G
*Note que o tamanho apenas G(Gigas) ou M(Megas)
*Os comandos são ordenados

Modificar o tamanho disco virtual:

qemu-img resize nome_do_disco.qcow2 20G
*Os comandos são ordenados

Iniciar VM com parâmetros para instalação de um SO com uma imagem ISO:

qemu-system-x86_64  --enable-kvm -smp 2 -m 1028 -boot d -hda nome_do_disco.qcow2 -cdrom sitema.iso 
*Os parâmetros não tem ordem especifica

Após tudo instalado o comando fica menor:

qemu-system-x86_64 --enble-kvm -smp 2 -m 1028 -hda nome_do_disco.qcow2 

Vamos com calma!

O que eu estou executando ?

  • qemu-img = Binário responsável pela manipulação de discos virtuais
  • qemu-system-x86_64 = Binário responsável por executar a VM pela arquitetura x86_64

Com quais parâmetros ?

  • --enable-kvm = habilita o hipervisor KVM.
  • -smp = O números de núcleos de processador minha VM ira usar.
  • -m = O tamanho da memoria RAM.
  • -boot = Parâmetro de boot, neste casso (d) iniciará pelo cdrom.
  • -hda = Aponta disco primário.
  • -cdrom = Aponta uma Imagem de Disco.

Sempre vale aquela passada na documentação oficial:

About QEMU — QEMU documentation

Conclusões

O QEMU e versátil, muitos softwares de emulação utilizam ele como base, mas no dia a dia não é conveniente usar linha de comando para administrar VM's, vale aprender, mas existe uma solução de interface gráfica para o QEMU com o libvirt, o virtmanager (Em breve artigo).

Espero ter ajudado com o conhecimento que tenho, coloquei um pouco de pensamento computacional neste artigo, gosto de aprender, ensinar, discutir, e essa plataforma dá espaço; Obrigado

Agradeço a todos.

Share
Comments (2)

GG

Gustavo Gaspar - 11/03/2022 12:54

>>Wenderson Anjos


Olá, fico grato, com o seu comentário.

Para usar disquete basta usar o parâmetro -fda /caminho/da/imagem, pode usar muitos formatos, mas par o QEMU é vantajoso usar qcow2 que permite até um sistema de snapshot, o utilitário qemu-img também converte:

qemu-img convert -O qcow2 /arquivo/de/entrada.vhd /arquivo/de/saida.qcow2  

Você pode montar outro VHD usando o parâmetro -hd(a/b/c/d) o boot primário é o -hda


Posso te atestar que no linux você terá uma boa depuração, mas acredito que você terá que testar para a sua aplicação


O QEMU não é nada intuitivo para usar no dia a dia, neste caso prefira usar o virtmanager, mas é possível escrever um script em shell para chamar com todos os parâmetros


Sempre recomendo ler a documentação, a capacidade do ser humano e limitada, o pai do HTML, o Memex que cria um HiperLink de informações:

Invocation — QEMU documentation

Disk Images — QEMU documentation

Wenderson Anjos
Wenderson Anjos - 11/03/2022 02:29

Wow, parabéns, muito bom o artigo!! Eu tenho algumas perguntas sobre isso, eu utilizo muito o Oracle VirtualBox para testar e depurar meu projeto de sistema operativo mas quero me aventurar também no QEMU, para testar a expansão do projeto em outras máquinas virtuais, as perguntas são:

  1. Eu posso passar como valor no parâmetro '-cdrom' uma imagem IMG de disquette? Ou um VHD, ou qualquer tipo de imagem de disco? (Eu utilizo .VHD formatado em FAT16)
  2. A depuração de um sistema no QEMU é boa? ou tão boa quanto o Oracle VirtualBox? Faço esta pergunta porque no Bosh eu achava muito lento, e aí desistir, só uso da Oracle por conta disso.
  3. Existe algum parâmetro para adicionar um controlador SATA/IDE na máquina virtual QEMU? E se existe, há uma forma de configurar um VHD pra ser inicializado automaticamente pelo controlador adicionado? Obs.: Automaticamente digo configurar apenas 1 vez o VHD e não precisar passar mais o nome do arquivo na linha de comando.

Desde já, agradeço as respostas e muito obrigado pelo artigo também.