Entre as principais técnicas de virtualização existentes, a emulação de hardware (hardware emulation) é considerada bastante complexa, pois tende a simular praticamente todas as particularidades do hardware. Esse recurso é essencial para desenvolvedores de firmware de hardware, por exemplo, pois permite a validação de aplicativos sem a presença de um hardware real. Como desvantagem, apresenta um baixo desempenho, já que perde a eficiência ao interpretar ou traduzir as instruções da máquina real. Entretanto, pode ser útil para você que deseja emular diversas arquiteturas computacionais para testar a execução de diferentes distribuições Linux na sua máquina.
Emulação de hardware com o QEMU
O QEMU é um emulador de hardware que permite que você execute outros sistemas operacionais facilmente no seu computador sem a necessidade de instalá-los. Analogamente, comparado ao software popular de virtualização VirtualBox, pois a emulação de hardware também é um tipo de virtualização. Contudo, o VirtualBox é “menos complexo” enquanto o QEMU é voltado para interpretação ou tradução das instruções da máquina hospedeira. Por exemplo, com o QEMU você pode executar outro sistema operacional sobre o seu sistema operacional já instalado na máquina emulando diversas arquiteturas computacionais existentes, bem como: x86, x86-64, PowerPC e ARM.
O QEMU é gratuito e de código aberto, diferentemente do VirtualBox. É licenciado sob a GPL 2 e tem a capacidade de executar com os hypervisors open source KVM e XEN (se você ativar a tecnologia de virtualização da seu BIOS primeiro) e oferece muitas opções de virtualização. Por já estar embutido no kernel Linux há alguns anos (desde da versão 2.6) e possuir desenvolvimento unificado (QEMU + KVM), usarei o hypervisor KVM nesse artigo.
Mão na Massa
Se você deseja apenas virtualizar um sistema é extremamente recomendado que use o VirtualBox 🙂
Com o QEMU é possível trabalhar em dois modos: a emulação total do sistema e a emulação no modo de usuário. No primeiro modo, é possível uma emulação de um sistema integral, incluindo o processador e periféricos. No modo usuário, disponível somente para o sistema Linux, é possível executar um processo construído para uma determinada CPU em outra. Portanto, um processo Linux compilado em uma plataforma PowerPC poderá ser executado na x86, e vice-versa.
Além disso, o QEMU oferece muitas opções, arquiteturas e formatos para usar, e veremos muitos exemplos diferentes para entender as formas possíveis de alcançar nossos objetivos usando o QEMU.
1 – Instalação
O QEMU está disponível para instalar a partir de quase todos os repositórios oficiais de distribuição Linux:
Ubuntu/Linux Mint
Fedora
Red Hat/CentOS
openSUSE
Arch Linux
2 – Usando
O QEMU oferece muitas opções, arquiteturas e formatos para usar, e veremos muitos exemplos diferentes para entender as formas possíveis de alcançar diferentes objetivos usando o QEMU.
Primeiro, é preciso criar uma imagem de disco rígido virtual para instalar um sistema operacional virtual em algum lugar. Esse arquivo de imagem conterá todos os dados e arquivos do sistema operacional após a instalação. Para fazer isso, será usado a ferramenta “qemu-img“:
Onde é criado um arquivo de imagem com limite de tamanho 10GB e formato qcow2 (formato padrão para imagens QEMU).
Observe que um novo arquivo chamado “arquivo.img” agora é criado no diretório atual. Além disso, veja que o arquivo de imagem criado possui apenas 150KB, não 20GB. Pois, o QEMU não usará nenhum espaço, a menos que seja necessário pelo sistema operacional virtualizado, mas configurará o espaço máximo permitido para essa imagem apenas para 20GB 🙂
Assim, depois de criado o arquivo de imagem, tendo em mãos um arquivo ISO de uma distribuição Linux ou qualquer outro sistema operacional, é possível agora testá-lo usando o software QEMU:
Onde,
qemu-system-x86_64: representa a arquitetura adotada;
-m 1024: quantidade de RAM que queremos fornecer para o QEMU ao executar o arquivo ISO;
-boot d: opção de inicialização que nos permite determinar a ordem de inicialização. A opção ‘d’ significa que o CD-ROM será o primeiro. Assim, é usado a opção -cdrom ao final.
-enable-kvm: esta é uma opção muito importante, permite usar a tecnologia KVM para emular a arquitetura que queremos; no caso x86_64. Certifique-se de que as opções de virtualização estão ativadas no BIOS do seu computador;
-sip 3: usar 3 núcleos para executar a imagem virtual que o tornará mais rápido. Você deve alterar esse número de acordo com CPU do seu computador;
-net nic-net user: habilitar uma conexão de rede Ethernet para estar disponível na máquina virtual em execução, por padrão;
-hda arquivo.img: caminho para o disco rígido que será usado. No nosso caso, foi o arquivo.img criado anteriormente;
-cdrom ubuntu-16.04.2-desktop-amd64.iso: arquivo ISO do Ubuntu 16.04
Depois de executar o comando, o QEMU iniciará uma janela autônoma:
Agora, se, depois de instalado, deseja inicializar a partir do arquivo de imagem ao invés do arquivo ISO (quando você termina a instalação e deseja iniciar o sistema instalado), você pode remover a opção ‘-cdrom’ e alterar a ordem de boot do driver de disco para o disco rígido do sistema virtual usando a opção ‘-boot c’:
Por fim, note que mostrei a arquitetura x86_64 para executar a emulação. Mas, se você quiser, você pode escolher entre muitas outras arquiteturas disponíveis para testar seus sistemas:
Por exemplo, se você deseja emular a arquitetura i386, você deve executar o seguinte comando:
Considerações Finais
O QEMU é uma tecnologia muito eficaz para emular sistemas operacionais virtuais. Além de ser gratuito e de código aberto, está disponível em todos os repositórios principais das distribuições Linux, o que o torna um dos melhores emuladores de hardware.
Óbvio que esse material é apenas introdutório. Mas, é oferecido enormes possibilidades de uso e testes usando o QEMU. Tudo depende dos seus objetivos e nível de conhecimento. Mas, como dito anteriormente, caso seus objetivos sejam meramente virtualização de sistemas sem se ater ao hardware emulado, o software VirtualBox é suficiente para as suas necessidades. O QEMU é recomendado quando deseja-se emular o desempenho de outros sistemas em ambientes computacionais distintos, por exemplo.
Para mais detalhes, recomendo consultar a documentação oficial e a página wiki do QEMU 🙂
Via | Fosspost