Bem-vindo: Qui, 16 de Maio 2024, 19:17 Pesquisa avançada

Emulação de ARM com QEMU e Debian

Esta secção é dedicada a todas as distribuições de Linux, por exemplo, Gentoo, Ubuntu Ultimate Edition, Mint, Kubuntu etc. Poderá apresentar distribuições, questionar sobre problemas e até apresentar tutoriais!

Emulação de ARM com QEMU e Debian

Mensagempor nuno_nunes » Qui, 14 de Fevereiro 2013, 1:52



Montar um toolkit para cross-compiling é fundamental para o desenvolvimento de um sistema a ser utilizado em arquiteturas diferentes de x86. Mas às vezes é necessário apenas compilar algum programa para embarcar em um sistema já pronto e nesse caso, pode ser melhor utilizar uma máquina virtual na arquitetura pretendida.

Nesse post veremos como preparar um ambiente para essa tarefa de compilação transparente utilizando Debian e o QEMU para execução de um sistema virtual na plataforma ARM.

Instalando o QEMU



Uma das opções é baixar e compilar. Se for sua opção preferida, sinta-se a vontade para baixá-lo do site oficial. Eu estou utilizando Mint no meu note, então preferi utilizar o apt-get:

sudo apt-get install qemu-kvm qemu-kvm-extras


Tendo-o instalado, o próximo passo é baixar o instalador do Debian.

Baixando o sistema ARM



Esse link certamente quebrará muito cedo devido ao dinamismo das atualizações. No momento desse post estavam disponíveis o kernel e o initrd nestas versões abaixo, mas se o link estiver quebrado quando você for baixá-lo, basta seguir a raiz do link em dois pontos:
- até o codinome – por exemplo, poderia ser lenny onde está wheezy.
- até a versão do kernel – esse certamente é mais dinâmico que a versão do SO.

Baixe então o kernel e o initrd:

wget ftp://ftp.debian.org/debian/dists/wheezy/main/installer-armel/current/images/versatile/netboot/vmlinuz-3.2.0-4-versatile


wget ftp://ftp.debian.org/debian/dists/wheezy/main/installer-armel/current/images/versatile/netboot/initrd.gz


Criando o arquivo RAW



Crie o arquivo que será o HD dessa instalação com o comando:
qemu-img create -f raw Debian.img 2G



Esse é um processo bastante rápido, mas não fique muito animado porque o lento ainda está por vir.

Instalando Debian for ARM



Eu criei um diretório chamado “embedded” contendo o kernel, initrd e o arquivo raw. Faça algo parecido e a partir desse diretório execute o seguinte comando:

qemu-system-arm -m 512 -kernel vmlinuz-3.2.0-4-versatile -initrd initrd.gz -hda Debian.img -append "root=/dev/ram" -M versatilepb


No comando acima, o parâmetro ‘-m’ reserva 512MB de memória. Creio que 256 seja suficiente já que nesse momento é apenas o recurso reservado para a instalação. Os demais parâmetros são auto-explicativos, sem bem que o parâmetro de memória é ‘auto-dedutível’.

O tempo de instalação aqui está diretamente relacionado à velocidade de sua conexão com a internet.

No particionamento, simplesmente criei a partição raiz. A partição swap não é obrigatória em nenhum sistema e certamente não fará diferença aqui. Quando o particionador perguntar se realmente deseja fazer o particionamento sem swap, confirme e siga adiante.

Ao término da instalação será exibida uma mensagem relacionada ao gerneciador de boot que não foi instalado devido à arquitetura, seguido da recomendação para fazer o boot. Confirme e aguarde o reboot.

No reboot do instalador, siga novamente os passos até o particionamento de disco. Chegando nesse ponto, use Alt+F2 para entrar em uma tty. Nesse ponto será necessário montar o disco e migrar a raiz de forma a poder utilizar o sistema virtual para copiar o kernel e o initrd ao sistema nativo. Segue o exemplo, considerando que tenha escolhido o mesmo sistema de arquivos que eu:

mount /dev/sda1 /mnt -t ext4
mount -o bind /dev/ /mnt/dev
mount -o bind /proc /mnt/proc
chroot /mnt


A partir de agora tudo o que está contido em sua instalação da máquina virtual poderá ser utilizado, incluindo o ssh, que utilizaremos para a copia. Na instalação configurei o dominio como intranet.local, para que a resolução de nomes seja feita pelo servidor DNS que instalei em meu note para resolver nomes para a rede local. Se quiser fazê-lo, o procedimento pode ser visto nesse post. Então:

scp /boot/{vmlinuz,initrd}*-3.2.0-4-versatile djames@dom0:~/


Agora sua máquina virtual está pronta para o boot. Desmonte tudo e feche a janela do instalador.

Boot da imagem ARM com kernel e initrd copiados



Mova o kernel e o initrd para o mesmo diretório que contém a imagem do sistema (Debian.img) e para não se tornar repetitivo, crie um script para iniciar sua máquina virtual (eu renomeei o initrd para initrd.img) contendo a seguinte linha de comando:

qemu-system-arm -m 512 -M versatilepb -kernel vmlinuz-3.2.0-4-versatile -initrd initrd.img -hda Debian.img -append “root=/dev/sda1″


O boot deverá exibir algo parecido com a imagem inicial desse post. Depois disso, inicia-se o processo de instalação das ferramentas via apt-get !
O comando apt-get install gcc resultará na instalação de algumas outras dependências gerando um total de 48MB em pacotes. Ao término fiz o teste da imagem abaixo:



Como se pode ver, o processo é lento, mas descomplicado.
Estou preparando material para um próximo post com uma i.MX53, onde mostrarei como compor o sistema operacional, mas ainda não é ‘from scratch’. Acompanhe!

Fonte: Br-Linux e Do Bit Ao Byte


Avatar do usuário
nuno_nunes
 
Mensagens: 3932
Registrado em: 28 Maio, 2012
Localização: Pampilhosa da Serra - Portugal

Voltar para Outras distribuições de Linux

Quem está online

Usuários navegando neste fórum: Nenhum usuário registrado e 11 visitantes