Os primeiros passos com o QEMU

O QEMU é uma plataforma de emulação ou virtualização de diversas outras plataformas.
Desenvolvedores podem usar a aplicação para verificar o comportamento de seus softwares em arquiteturas diferentes.

Um servidor, com hardware poderoso, pode hospedar dezenas de outros servidores virtuais, permitindo que diversas empresas ou usuários rodem aplicações independentes (servidores web, armazenamento de arquivos etc.)
O avanço da tecnologia de virtualização ajudou a reduzir os custos de hospedagem de sites, por exemplo.
Neste texto, vou mostrar como criar um espaço (drive) virtual para armazenar arquivos, como erguer uma máquina virtual e rodar um sistema operacional nela.
Na minha máquina física, eu rodo o Debian 10 testing (Buster).
O sistema operacional hospedeiro, usado no exemplo será o Ubuntu 17.10 (Artful Aardvark) 64 bit.
Você pode ir até o site https://ubuntu.com e baixar outra versão (provavelmente mais atual que a minha) ou usar qualquer outra imagem ISO de sistema operacional.
Os princípios explicados neste texto são os mesmos para qualquer distro Linux ou outro sistema operacional.
Se quiser, veja outros exemplos de virtualização com o QEMU, neste mesmo site.
E sempre clique nos links para obter mais informações importantes sobre algum tema.

Como montar uma máquina virtual

É bem fácil pôr no ar um PC ou servidor virtual completo, usando o QEMU.
Na verdade, é possível fazer isto em 5 minutos.
Mas, se você pretende experimentar um sistema operacional (uma distro GNU/Linux, por exemplo), baixada da Internet, em um arquivo ISO, é possível indicar em que máquina, especificamente, você deseja rodar o seu sistema operacional.
A minha ISO do Ubuntu pode ser experimentada com o seguinte comando:


qemu-system-x86_64 ubuntu-17.10-desktop-amd64.iso

Se você pretende usar outras vezes esta distribuição e gostaria que as mudanças feitas nela fossem persistentes, crie um espaço de armazenamento específico para ela, com o qemu-img:


 qemu-img create -f qcow2 ubuntu17.qcow2 50G

Formatting 'ubuntu17.qcow2', fmt=qcow2 size=53687091200 encryption=off cluster_size=65536 lazy_refcounts=off refcount_bits=16

O comando, acima, cria uma imagem no formato qcow2, com o nome ‘ubuntu17.10.qcow2’ e com espaço de armazenamento de 50 Gigabytes.
Sinta-se à vontade para usar outros valores, mais adequados para você.
Se quiser obter informações sobre a imagem recém criada, use a opção ‘info’:


qemu-img info ubuntu17.qcow2 

image: ubuntu17.qcow2
file format: qcow2
virtual size: 50G (53687091200 bytes)
disk size: 324K
cluster_size: 65536
Format specific information:
    compat: 1.1
    lazy refcounts: false
    refcount bits: 16
    corrupt: false

No comando, abaixo, vou acionar a recém-criada unidade (ubuntu17.qcow2) e rodar a imagem ISO, baixada, do Ubuntu 17.10, como se fosse de um CD-ROM:


qemu-system-x86_64 -hda ubuntu17.qcow2 -cdrom ubuntu-17.10-desktop-amd64.iso -boot d

Ao final da linha, a opção ‘-boot d’, informa que o meu sistema virtual deve iniciar a partir da unidade ótica (CD-ROM).
Vamos melhorar isto?!
A seguir, vou adicionar opções que (respectivamente) habilitam o kvm, estabelecem uma quantidade de memória de 2048 MB e inscreve o nome da distro no título da janela do QEMU:


qemu-system-x86_64 -enable-kvm -m 2048 -name 'UBUNTU 17.10' -boot d -hda ubuntu17.qcow2 -cdrom ubuntu-17.10-desktop-amd64.iso

Ubuntu 17.10 tela inicial
Se você decidir continuar a instalação, o sistema irá sugerir o unidade virtual, criada com o qemu-img.
Observe a imagem abaixo:
Instalação do Ubuntu 17.10
Depois de instalado, você pode dispensar o arquivo de imagem ISO e rodar o sistema operacional apenas da unidade de armazenamento virtual. Para mim, o comando é o seguinte:


qemu-system-x86_64 -enable-kvm -m 2048 -name 'UBUNTU 17.10' -hda ubuntu17.qcow2

Leia mais sobre o uso do QEMU, no Linux.

Experimente o Debian com o kernel do FreeBSD.

O Debian é uma comunidade aberta a diversos projetos interessantes.
Há, pelo menos, 2 projetos que oferecem o sistema operacional combinado a um kernel alternativo.
Já falei sobre o Debian rodando com o kernel GNU/Hurd, antes.
Desta vez, vou mostrar como baixar uma versão que roda sobre o kernel do FreeBSD.
A melhor maneira de testá-la é rodar uma das imagens prontas para o QEMU/KVM.

O sistema não é pesado e dá para você se divertir e ter uma idéia do seu funcionamento.

Neste post, vou analisar uma destas 3 opções:

  1. debian_squeeze_kfreebsd-amd64_standard.qcow2
    — uma opção mais antiga, sem o ambiente gráfico (imagem c/204 Mb).
  2. debian_wheezy_kfreebsd-amd64_desktop.qcow2
    — uma opção mais atual (Debian 7), com o ambiente gráfico (imagem c/1,7 Gb).
  3. debian_wheezy_kfreebsd-amd64_standard.qcow2
    — Debian 7, sem o ambiente gráfico (imagem c/210 Mb).

As imagens estão comprimidas e se expandem até 25 GiB, na medida do necessário.
Os exemplos, que seguem, são baseados na 3a opção.
Se preferir outra, basta adaptá-los ao seu caso.
Use o comando wget para fazer o download ou baixe direto do site (links no final):


wget https://people.debian.org/~aurel32/qemu/kfreebsd-amd64/debian_wheezy_kfreebsd-amd64_standard.qcow2

Feito o download, rode o sistema a partir do QEMU:


qemu-system-x86_64 -hda debian_wheezy_kfreebsd-amd64_desktop.qcow2

Bem simples, não é?
Para poder usar melhor o sistema, use as seguintes informações:

  • A conta root usa a senha “root” (sem as aspas).
  • A conta user usa a senha “user”.

Para obter um melhor desempenho, ative o KVM:


qemu-system-x86_64 -enable-kvm -hda debian_wheezy_kfreebsd-amd64_desktop.qcow2

Para suprimir o modo gráfico, coloque o display no modo curses:


qemu-system-x86_64 -enable-kvm -display curses -hda debian_wheezy_kfreebsd-amd64_desktop.qcow2

Neste caso, pode ser necessário aumentar um pouco (ou maximizar) a janela do seu terminal, para conseguir ver toda a área de trabalho.
Como padrão, a imagem roda com 128 MiB de memória RAM.
Use a opção ‘-m’ do QEMU para ampliar este valor:


qemu-system-x86_64 -m 512 -enable-kvm -display curses -hda debian_wheezy_kfreebsd-amd64_desktop.qcow2


Se você optou por uma das imagens com ambiente gráfico, acima, vai precisar usar uma quantidade maior de memória RAM, claro.
Neste caso, as imagens usam lightDM com o XFCE e 1GiB de memória RAM deve ser mais do que o suficiente.
Se quiser trocar este ambiente, pelo original do Debian (GDM e GNOME), dê os seguintes comandos, dentro da máquina virtual (como superusuário):


update-alternatives --auto x-session-manager

echo /usr/sbin/gdm3 > /etc/X11/default-display-manager

Vale a pena instalar e usar o Debian com o kernel FreeBSD?

Diferente do Hurd, o kernel do FreeBSD é um kernel maduro e bem testado.
Aqui é possível usar todo o ambiente gráfico e usufruir do universo dos repositórios de softwares do Debian.
No lado do servidor, a opção é uma alternativa para quem deseja ficar longe do systemd e/ou evitar as eventuais vulnerabilidades do kernel Linux.
Há, ainda, o glamour de estar mais próximo de executar um kernel semelhante ao usado pela Apple em seus dispositivos.
Do ponto de vista de quem vem do FreeBSD, esta opção “mantém um pé” lá e outro nos vastos repositórios de softwares Debian.

Assinar blog por e-mail

Digite seu endereço de e-mail para assinar este blog e receber notificações de novas publicações por e-mail.

Referências

De onde baixei a versão analisada neste texto: https://people.debian.org/~aurel32/qemu/kfreebsd-amd64/.
Outras versões do Debian kfreebsd: http://jenkins.kfreebsd.eu/jenkins/view/cd/job/debian-cd_jessie-kfreebsd_kfreebsd-amd64/ws/build/.
Debian Mini .ISO (para instalar): http://cdn-fastly.deb.debian.org/debian/dists/jessie-kfreebsd-proposed-updates/main/installer-kfreebsd-amd64/current/images/netboot-10/.
Conheça o Debian GNU/Hurd: https://elias.praciano.com/2017/07/experimente-o-debian-com-o-kernel-gnuhurd-em-uma-maquina-virtual/.

Experimente o Debian com o kernel GNU/Hurd em uma máquina virtual

O GNU/Hurd é um microkernel, com quase 30 anos de estrada.
Apesar deste tempo, ainda não chegou a uma versão estável — ou seja, apropriada para um ambiente de produção.
gnu logo black and white
Há discussões, Internet afora, sobre o porquê deste projeto ainda não ter lançado uma versão estável — o que me dispensa de fazer esta discussão aqui. 😉

É possível experimentar este kernel dentro de distribuições, como o Debian e o Arch.

O Debian, é uma das distribuições GNU/Linux que oferecem opções de kernel alternativo. Por exemplo, o kernel do FreeBSD é também uma opção viável para usar no Debian.
Neste post, vamos manter o foco na versão do Debian, que roda com o kernel Hurd.
Parto do pressuposto de que você já tem o QEMU/KVM instalados aí.
Caso contrário, instale-os:


sudo apt install qemu qemu-kvm

Você pode fazer o download de uma imagem do Debian GNU/hurd, com o comando wget:


wget http://people.debian.org/~sthibault/hurd-i386/debian-hurd.img.tar.gz

Esta imagem pode ser usada dentro do QEMU ou do KVM, para iniciar uma estação com o Hurd dentro dela.
Feito o download, extraia a imagem:


tar -xz < debian-hurd.img.tar.gz

Em seguida rode a imagem com o kvm:


modprobe kvm

kvm -m 1G -drive cache=writeback,file=$(echo debian-hurd-*.img)

gnu hurd terminal
Para se autenticar, use o username "root", com a senha em branco.

Sua máquina virtual Hurd tem suporte a Python, Perl e Bash, sem precisar adicionar nada.
Você também pode instalar novos softwares através do apt.
Mesmo sendo "um pouco" limitado, ainda dá para brincar bastante com o ambiente.
O Hurd é comumente usado por estudantes de computação, como forma de aprender melhor sobre como construir um kernel.
Quando quiser finalizar a máquina virtual, use o comando 'shutdown -h now'.

Assinar blog por e-mail

Digite seu endereço de e-mail para assinar este blog e receber notificações de novas publicações por e-mail.

Referências

https://www.debian.org/ports/hurd/.
https://www.gnu.org/software/hurd/.