Link para o Tutorial 1: Setting up a test environment for Linux Kernel Dev using QEMU and libvirt

Como o próprio nome já diz, o primeiro tutorial nos ensina a realizar o setup inical do QEMU e do libvirt para desenvolvimento do Kernel Linux.

  • QEMU: Emulador utilizado para subir máquinas virtuais.
  • libvirt: Gerenciador de máquinas virtuais.
  • Kernel Linux: Núcleo utilizado por diversos sistemas operacionais.

Já que a finalidade desse blog é contar como foi a minha experiência seguindo o tutorial, vamos lá…

PS: Vou fazer comentários apenas sobre os passos em que tive algum tipo de problema.

Passo 1:

Tive problemas para inserir o usuário no grupo libvirt-qemu. No tutorial é informado que basta fazer logout + login e seguir, mas precisei reiniciar minha máquina para que as configurações fossem persistidas.

Passo 2:

Passo 2.1: O único problema que tive foi para baixar a imagem. A imagem informada no tutorial não está mais disponível, então baixei a http://cdimage.debian.org/cdimage/cloud/bookworm/daily/latest/debian-12-nocloud-arm64-daily.qcow2.

Passo 2.3: cometi um erro no script launch_vm_qemu, invés de vda2 coloquei <vda2> sem perceber, ai estava tomando o seguinte erro:

...
Begin: Running /scripts/local-block ... done.
Begin: Running /scripts/local-block ... done.
Begin: Running /scripts/local-block ... done.
Begin: Running /scripts/local-block ... done.
Begin: Running /scripts/local-block ... done.
Begin: Running /scripts/local-block ... done.
done.
Gave up waiting for root file system device.  Common problems:
 - Boot args (cat /proc/cmdline)
   - Check rootdelay= (did the system wait long enough?)
 - Missing modules (cat /proc/modules; ls /dev)
ALERT!  /dev/<vda2> does not exist.  Dropping to a shell!
(initramfs) ^[[Aqemu-system-aarch64: terminating on signal 15 from pid 9100 ()

Acabei demorando um pouco para perceber que o erro era por conta dos sinais de maior que e menor que. Mas no final consegui subir a vm com sucesso: vm rodando em um terminal

Passo 3:

Para que esse passo desse certo precisei instalar o openssh-server na vm e iniciar o serviço do ssh:

sudo apt-get update
sudo apt-get install openssh-server
sudo systemctl enable ssh

Passo 5:

Fiquei um pouco confuso sobre onde era para rodar o comando, já que no tutoral não existe indicação de @host nem de @VM no snippet:

sudo EDITOR=vim; sudo virsh edit iio-arm64

Porém fica evidente que deveria ser no host devido ao uso do comando virsh.

Além disso o nome io-arm64 não segue o padrão arm64 adotado no resto do tutorial, o que também deixa um pouco confuso.

Após rodar o comando e instalar o virtiofs no host tive que reiniciar a vm para que a configuração do filesystem compartilhado fosse persistida. O que funcionou perfeitamente:

evidência de filesystem compartilhado

Considerações finais

Achei o tutorial bem explicativo, no geral nenhum dos problemas encontrados foi complicado de resolver.