0

Emulando o Raspberry Pi com o QEMU (Raspbian GNU/Linux)

25 Flares 25 Flares ×

Que tal um ambiente emulado para você desenvolver aplicações em plataforma ARM? Com o QEMU podemos emular essa plataforma e prover um ambiente Linux/arm (como se você estivesse rodando sua aplicação no Raspberry Pi) e ganhar muita produtividade nos testes e desenvolvimento.

É inegável a força do Raspberry Pi e o IOT esta ai… Você também pode fazer outras coisas com o Raspberry Pi, como centrais multimídia, roteador wifi, proxy.. etc.. diversas aplicações podem ser portadas e múltiplas são as possibilidades de uso deste equipamento.

“QEMU é um software livre escrito por Fabrice Bellard que implementa um emulador de processador, permitindo uma virtualização completa de um sistema PC dentro de outro. 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, (através de um acelerador) e suporte para múltiplas arquiteturas está a ser acrescentado. Usando tradução dinâmica, atinge uma velocidade razoável, não deixando de ser fácil de converter para novos processadores.” https://pt.wikipedia.org/wiki/QEMU

Então vamos lá!

obs: Certifique-se que você possui o git, bison, make, gcc e flex devidamente instalado. Ok?

Crie a estrutura de diretórios para o build e gerenciamento das configurações:

$ mkdir ~/Developer
$ cd ~/Developer

Primeiramente, você precisa compilar o QEMU. Isso é necessário para evitar diversos problemas apresentados na versão disponibiliza em distribuições como o debian e ubuntu. Para obter o source, utilize o seguinte comando:

$ git clone git://git.qemu-project.org/qemu.git

Após clone, acesse a estrutura abaixo e inicie a configuração e compilação do qemu.

$ cd ~/Developer/qemu/

Agora execute:

$ sudo ./configure --enable-debug
$ sudo make && make install

Após compilar e instalar o QEMU. Valide sua versão:

$ qemu-system-arm -version
QEMU emulator version 2.8.91 (v2.9.0-rc1-45-gea2afcf-dirty)
Copyright (c) 2003-2017 Fabrice Bellard and the QEMU Project developers

Agora vamos copiar os scripts necessários para execução do ambiente. Para isso utilizaremos um repositório muito bom do git com os scripts e kernel necessários para execução da imagem do raspbian.

cd ~/Developer/
git clone https://github.com/nachoparker/qemu-raspbian-network.git

Baixando a imagem  do raspibian e descompactando no diretório criado no comando acima:

cd ~/Developer/qemu-raspbian-network/
wget https://downloads.raspberrypi.org/raspbian_lite_latest -O raspbian_lite_latest.zip
unzip rasbian_lite_latest.zip

Disponibilizado o arquivo “2017-03-02-raspbian-jessie-lite.img”

Para que você não tenha nenhum “kernel panic” durante o boot. Será necessário fazer alguns ajustes na imagem. O procedimento é muito simples, você poderá montar a imagem em read-write e efetuar todas as alterações. Mas antes, precisaremos identificar o setor inicial da segunda partição. Isso é necessário para que a imagem seja montada no device “/dev/loop[0-9]”

Listando as partiçoes como fdisk

$ sudo fdisk -l 2017-03-02-raspbian-jessie-lite.img

A saida desse comando pode ser observada acima (setinha amarela…). O valor “Start” do setor da segunda partição é 137216. Com esse valor em mãos (em buffer… rsrsrs) Utilize o bc multiplicando o valor por 512

$ echo "512*137216"|bc -l

Agora faça o mountpoint atribuindo o resultado dessa multiplicação (70254592) ao parâmetro de offset no ponto de montagem, vide:

$ sudo mkdir -p  /mnt/rpi/
$ sudo mount -v -o offset=70254592 -t ext4 2017-03-02-raspbian-jessie-lite.img /mnt/rpi/
mount: /dev/loop3 mounted on /mnt/rpi.

Agora com o filesystem montado, edite os arquivos “ld.so.preload e fstab”. Basicamente, comente tudo dentro do arquivo ld.so.preload e no arquivo fstab, mantenha apenas a entrada relativa ao “/proc”

$ sudo vim /mnt/rpi/etc/ld.so.preload

No arquivo abaixo, comente todas as entradas com a string “mmcblk”

$ sudo vim /mnt/rpi/etc/fstab

Após edição, desmonte o volume !!!

$ cd ~/Developer/qemu-raspbian-network/
$ sudo umount /mnt/rpi

Finalmente, você já poderá subir seu ambiente.

$ sudo ./qemu-pi.sh 2017-03-02-raspbian-jessie-lite.img

Você pode acessar o ambiente através do vnc ou até mesmo por ssh… o script qemu-pi possui todos os parametros necessários para o suporte a rede com o qemu.

$ vncviewer 127.0.0.1:5900
Connected to RFB server, using protocol version 3.8
No authentication needed
Authentication successful
Desktop name "QEMU"
VNC server default format:

 

Referencia:

http://wiki.qemu-project.org/Hosts/Linux

RECOMENDADO PARA VOCÊ

Avelino Ferreira

"Meu egoísmo é tão egoísta que o auge do meu egoísmo é querer ajudar..."

Dúvidas? Deixe seu comentário ou entre em contato.