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
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.




>>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:
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
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:
Desde já, agradeço as respostas e muito obrigado pelo artigo também.