Já faz tempo que me perguntam quando haverá um vídeo/artigo sobre o KVM e QEMU, então resolvi e escolhi fazer um vídeo e artigo para sabermos do que se trata, como instala e como funciona.
Por si só, KVM não realiza nenhuma emulação. Ao invés disso, um programa de espaço de usuário(conhecido como userspace
, quando a CPU processa apenas instruções não privilegiadas somente executando após aval do Kernel). O KVM usa a interface /dev/kvm
endereçar memória para um host da máquina virtual. Pelo menos dois programas aproveitam este recurso: uma versão modificada do Qemu e o próprio Qemu, desde a versão 0.10.0.
O KVM é licenciado sob os termos das licenças: GNU GPL, GNU GPLv2, GNU LGPL e GNU LGPLv2, cada parte desse software possui uma ou mais dessas licenças.
A KVM é mantida por Avi Kivity e é financiada primariamente pela Qumranet que foi adquirida pela Red Hat que por sua vez foi adquirida pela IBM .
QEMU é um software livre que serve para emular um processador.
Foi criado por Fabrice Bellard, o mesmo criador do FFmpeg e também do QuickJS, esse segundo por sua vez, é um motor Javascript utilizado, por exemplo, para rodar um Linux no navegador, um exemplo seria o JSLinux.
O QEMU é um hypervisor e é semelhante a projetos como o Bochs, VMware Workstation e o PearPC, mas possui várias características que faltam nestes, incluindo aumento de velocidade em x86 .
O QEMU possui dois modos de operação: modo de usuário(Licenciado pela GNU LGPL) e o modo de computador completo(Sob os termos da licença GNU GPL)
O VirtualBox quando foi lançado usava alguns dos dispositivos de hardware virtual do QEMU.
Para usar o KVM e QEMU nesses sistemas você precisará instalar os seguintes pacotes:
qemu-kvm
- software que fornece emulação de hardware para o KVM.libvirt-daemon-system
- arquivos de configuração para executar o daemon libvirt
como um serviço do sistema.libvirt-clients
- software para gerenciar plataformas de virtualização, antigamente instalável pelo pacote libvirt-bin
que teve seu nome alterado.bridge-utils
- um conjunto de ferramentas de linha de comando para configurar Ethernet.virtinst
- um conjunto de ferramentas de linha de comando para a criação de máquinas virtuais.virt-manager
- uma interface GUI fácil de usar e utilitários de linha de comando de suporte para gerenciar máquinas virtuais por meio de libvirt.Em resumo o comando é:
sudo apt install qemu-kvm libvirt-daemon-system libvirt-clients bridge-utils virtinst virt-manager
Assim que os pacotes forem instalados, o daemon libvirt
será iniciado automaticamente. Você pode verificar digitando:
sudo systemctl is-active libvirtd
A saída deve ser:
active
, se por algum motivo não estiver ativa, então faça manualmente com o comando:
sudo systemctl enable --now libvirtd
Para você conseguir criar “máquinas virtuais”, certifique-se de incluir seu usuário aos grupos: kvm
e libvirt
da seguinte forma:
sudo usermod -aG libvirt $USER
sudo usermod -aG kvm $USER
Após instalado procure no Menu de Aplicativos o software: Gerenciador de Máquinas Virtuais
Que é o
virt-manager
com nome completo para o Português Brasileiro. E abra-o:
Observação: se você obter esse erro:
Podem ser duas coisas:
- 1º - Talvez você precise reiniciar sua máquina
- 2º - Você não adicionou seu usuário aos grupos
kvm
elibvirt
como citados no passo acima. E se nenhuma dessas coisas deram certo, tente adicionar uma conexão:
E somente clique em Conectar
na janela que se abre.
Escolha: Mídia de instalação local(Imagem ISO ou CD-ROM)
Próxima tela é essa para você escolher o .iso
do sistema que você deseja virtualizar, clique em Navegar
Agora escolha o local da sua imagem, se sua imagem estiver no seu diretório local(provavelmente estará), adicione clicando no +
ou clique em Navegar Localmente
E então escolha a imagem, nesse caso vou testar o LiveCD do Gparted
Após escolhida, lembre-se de desmarcar a opção: Automatically detect from the installation media / source
, navegar na seta do combo e escolher: Generic default
se sua iso não for reconhecida automaticamente.
Agora selecione as configurações de memória e CPU da sua VM:
Em seguida informe a quantidade do tamanho do disco(HD):
Agora informe um nome para sua máquina virtual, nesse caso, chamei de GParted
mesmo:
Após isso aguarde a criação da VM:
A máquina virtual será inicializada em seguida e você poderá: pausar(⏸️ ), desligar,… e entre outros pelos controles exibidos na Barra de Ferramentas:
Comando de atalhos:
Ctrl + Alt + F
- Para alternar entre tela cheiaCtrl + Alt + G
- Para alternar o cursor do mouse entre o host e a máquina físicaTodas as máquinas que você criou serão exibidas assim que você abrir o programa, nesse caso só tenho uma então só aparece ela:
Você também pode listar as VMs criadas e que estão rodando via linha de comando, rodando o seguinte comando:
virsh -c qemu:///system list
No meu caso, a saída gera:
Id Name State
-------------------------
4 Gparted running
Se não estiver rodando, só aparecerá o cabeçalho.
Para o exemplo do Gparted usei esse comando:
qemu-img create -f qcow2 gparted.img 10G
.iso
qemu-system-x86_64 -m 1024 -boot d -enable-kvm -smp 3 -net nic -net user -hda gparted.img -cdrom gparted-live-1.1.0-1-amd64.iso
Explicação dos parâmetros Vamos explicar o comando anterior parte por parte:
-m 1024
: Aqui escolhemos a quantidade de RAM que desejamos fornecer para o QEMU ao executar o arquivo ISO. Escolhemos 1024 MB aqui. Você pode alterá-lo se quiser de acordo com suas necessidades.-boot -d
: A opção de inicialização nos permite especificar a ordem de inicialização, qual dispositivo deve ser inicializado primeiro? -d significa que o CD-ROM será o primeiro, então o QEMU inicializará normalmente na imagem do disco rígido. Usamos a opção -cdrom como você pode ver no final do comando. Você pode usar -c se quiser inicializar a imagem do disco rígido primeiro.-enable-kvm
: Esta é uma opção muito importante. Ele nos permite usar a tecnologia KVM para emular a arquitetura que desejamos. Sem ele, o QEMU usará a renderização por software, que é muito lenta. É por isso que devemos usar esta opção, apenas certifique-se de que as opções de virtualização estão habilitadas no BIOS do seu computador.-smp 3
: Se quisermos usar mais de 1 núcleo para o sistema operacional emulado, podemos usar esta opção. Optamos por usar 3 núcleos para executar a imagem virtual, o que a tornará mais rápida. Você deve alterar este número de acordo com a CPU do seu computador.-net nic -net user
: Ao usar essas opções, vamos permitir que uma conexão Ethernet com a Internet esteja disponível na máquina virtual em execução por padrão.-hda gparted.img
: aqui especificamos o caminho para o disco rígido que será usado. No nosso caso, foi o arquivo gparted.img
que criamos antes.-cdrom gparted-live-1.1.0-1-amd64.iso
: Finalmente, dissemos ao QEMU que desejamos inicializar nosso arquivo ISO “gparted-live-1.1.0-1-amd64.iso
”.
Depois de executar o comando anterior, o QEMU será iniciado para você como uma janela independente:
Agora, se você deseja apenas inicializar a partir do arquivo de imagem sem o arquivo ISO (por exemplo, se você concluiu a instalação e agora deseja sempre inicializar o sistema instalado), pode apenas remover a opção -cdrom:
qemu-system-x86_64 -m 1024 -boot d -enable-kvm -smp 3 -net nic -net user -hda gparted-live-1.1.0-1-amd64.iso
Observe que, neste tutorial, usamos a arquitetura x86_64
para executar o QEMU. Se desejar, você pode escolher entre várias outras arquiteturas disponíveis para testar seus sistemas:
ls /usr/bin | grep qemu-system*
qemu-system-x86_64
No meu caso, somente
x86_64
mesmo.
Se quiser usar o QEMU para inicializar de um CD / DVD inserido na unidade de disco, você pode fazer facilmente:
qemu-system-x86_64 -m 1024 -boot d -enable-kvm -smp 3 -net nic -net user -hda from-my-cdrom-drive.img -cdrom /dev/cdrom
O screenshot abaixo já foi feito no Gentoo que eu acredito que possui uma documentação bem detalhada e dispensa artigos em blog. Apesar do processo ser um pouco mais detalhado, se resume ao mesmo, você pode consultar a documentação nesse link.
Eu particularmente dispenso o uso de Virt-Manager uso o QEMU somente via linha de comando, pois acho mais prático.
Ainda sobre a documentação do Gentoo há um aviso importante de que se você habilitar no Kernel suporte de AMD e Intel simultaneamente, haverá um erro, então escolha um ou o outro, os dois há uma rejeição do QEMU:
Outra coisa é que se nada deu certo pra você, deve ser porque seu processador não suporta, para saber se suporta ou não rode o comando:
grep --color -E "vmx|svm" /proc/cpuinfo
Se não houve saída(essas palavras com cor diferente): vmx
ou svm
é porque não há suporte para seu caso.
sudo dnf install qemu qemu-kvm
sudo zypper in qemu
sudo pacman -S qemu
Espero ter ajudado!
Abraços!
virtualizacao mint ubuntu gentoo