Como conectar um cartão SD contendo um Raspberry Pi OS ao meu PC Linux e inicializá-lo em um emulador?
Por que o VMWare não funciona?
Quais são as limitações deste método?
Relacionados: Emulação em um PC com Windows
Como conectar um cartão SD contendo um Raspberry Pi OS ao meu PC Linux e inicializá-lo em um emulador?
Por que o VMWare não funciona?
Quais são as limitações deste método?
Relacionados: Emulação em um PC com Windows
Respostas:
Sim, isso é completamente possível. No entanto, na realidade, é um pouco diferente de como você está pensando.
Preâmbulo
O cartão SD contém uma imagem do sistema operacional. E funciona inflando esta imagem quando o dispositivo está ligado.
Como eu espero que você já saiba, você atualiza esta imagem no cartão SD para criar um sistema em funcionamento. No entanto, o que você pode fazer antes de exibir a imagem é brincar com ela usando o QEMU , que é um emulador de processador , e nos permite emular o conjunto de instruções do ARM.
Dessa forma, todas as alterações feitas na imagem (instalação, compilação etc.) continuarão lá depois que você a fizer no cartão SD.
Agora vou falar sobre como usar o QEMU para carregar a imagem. Vou demonstrar com a imagem do Arch Linux, mas o processo deve ser o mesmo, independentemente.
Usando QEMU
Pré-requisitos
Você precisará adquirir o QEMU para o seu sistema. O QEMU deve ter apenas um requisito; para que os dispositivos de entrada funcionem, é necessário ter o pacote de desenvolvimento SDL instalado, que deve estar disponível no seu gerenciador de pacotes.
Eu recomendo baixar o pacote usando seu gerenciador de pacotes comum:
Arco :
Ubuntu :
Versões mais recentes (desde 14.04) têm um pacote para isso:
Para versões mais antigas:
Construindo o QEMU você mesmo
Como alternativa, você mesmo pode criar o QEMU. Isso é ótimo se você quiser experimentar uma nova versão, mas ela pode ser lenta e estar preparada para muitos erros durante a compilação! Observe que, se estiver construindo o QEMU a partir do site deles, ele deverá ser compilado para suporte ao ARM. Portanto, verifique primeiro seus repositórios de distribuição. Isso pode ser feito assim;
Verifique se você tem suporte ao ARM com:
Obtendo a imagem
Estamos trabalhando com o Arch Linux, então usaremos a imagem do Arch Arm. Mas substitua-o pelo que você deseja trabalhar, ou talvez você já tenha uma imagem. Nesse caso, pule esta etapa.
Para que o QEMU funcione, também precisamos da imagem do kernel (que estaria dentro do arquivo .img).
Felizmente, existem imagens pré-compiladas disponíveis e você pode usá-las aqui ( download direto ).
Iniciando a VM
Agora você deve ter:
A máquina virtual agora pode ser iniciada usando o seguinte comando longo:
fonte
Ubuntu 16.04, QEMU 2.9.0 -M raspi2, Raspbian 27-05-2016, kernel vanilla
Compile o QEMU 2.9.0 da fonte:
Faça o download da imagem e extraia o kernel e o dts:
Baixe a imagem e descompacte-a:
Monte a segunda imagem da partição. A maneira mais fácil é:
Isso funciona apenas com as
losetup
versões mais recentes do Ubuntu 16.04, outros métodos em: https://askubuntu.com/questions/69363/mount-single-partition-from-image-of-entire-disk-device/496576#496576Isso imprime um dispositivo de loop, por exemplo:
assim fazemos:
Corre:
Você pode fazer login no terminal exibido no terminal host.
Limitações atuais:
-M raspi2
foi adicionado no QEMU 2.6.0 e o Ubuntu 16.04 possui apenas o QEMU 2.5.0, portanto, precisamos compilar o QEMU a partir da fonte. Mas isso não é difícil.Ubuntu 16.04, QEMU 2.5.0, Raspbian 27/05/2016, kernel modificado
Este método usa o
-M versatilepb
que está presente no QEMU 2.5.0 do Ubuntu 16.04.A desvantagem é que você precisa fazer o download de um kernel modificado (consulte Emulando com o Qemu: por que o kernel extra? ) E modificar a imagem, para que seja menos representativo do sistema real.
Faça o download: https://github.com/dhruvvyas90/qemu-rpi-kernel/blob/36ede073f4ccb64f60200ede36c231afe9502070/kernel-qemu-4.4.12-jessie
Nós escolhemos
4.4.12
uma vez que essa é a versão do kernel na imagem Raspbian.O processo para gerar esse blob do kernel está descrito no repositório em: https://github.com/dhruvvyas90/qemu-rpi-kernel/tree/36ede073f4ccb64f60200ede36c231afe9502070/tools
Por que essa imagem extra do kernel é necessária: Emulando com o Qemu: por que o kernel extra?
Modifique a imagem Raspbian conforme mencionado em: https://github.com/dhruvvyas90/qemu-rpi-kernel/wiki/Emulating-Jessie-image-with-4.x.xx-kernel/0068f0c21d942b0f331e18014ff8e22c20cada5c
Resumo:
Monte a imagem exatamente como fizemos para o
-M raspi2
, mas use a segunda partição em vez da primeira:Edite a imagem:
Corre:
[falhou] Ubuntu 17.04, QEMU 2.8.0 -M raspi2, Raspbian 27-05-2016, kernel vanilla
Neste Ubuntu mais recente, o QEMU 2.8.0 é o padrão, portanto, não precisamos compilar o QEMU da fonte para
-M raspi2
. No entanto, o 2.8.0 trava na inicialização após a mensagem:Isso mostra o quão instável
-M raspi2
ainda é.[falhou] Ubuntu 16.04, QEMU 2.9.0 -M raspi2, Raspbian 16/08/2017, kernel vanilla
Nesta imagem mais recente, usando o mesmo método para 27/05/2016, o kernel entra em pânico na inicialização com:
bztsrc/raspi3-tutorial
Metal desencapado RPI3 em QEMUhttps://github.com/bztsrc/raspi3-tutorial é um bom conjunto de exemplos que funcionam apenas no QEMU, iniciando com ultra-rápida em: Como fazer a emulação QEMU para imagens simples do Raspberry Pi
fonte
Você não pode fazer o que está sugerindo, porque o Raspberry Pi possui uma arquitetura de processador diferente da maioria dos PCs. Enquanto a maioria dos PCs são baseados em x86, o RPi é um computador baseado em ARM.
Esse é o mesmo motivo pelo qual você não pode executar, por exemplo, o Microsoft Windows no RPi.
O VmWare não funcionará, pois só pode virtualizar sistemas operacionais baseados em x86 (32 e 64 bits). Existem outros emuladores que podem virtualizar o ARM, como o QEMU, mas eles estão executando a emulação de software completa sem o suporte nativo à virtualização da CPU, portanto, você pode esperar que eles sejam bastante lentos.
fonte
Você pode facilmente experimentar um simulador do Raspberry Pi incluído no sensor, linha de comando e editor de arquivos no iotify.io. Confira nossa documentação em https://docs.iotify.io/ para iniciar os diferentes projetos, SO e familiarizar-se com o ambiente de trabalho do Raspberry Pi.
fonte