System.out

Tags: qemu, arm, and raspberry

Emuler un Raspberry Pi avec Qemu

02/02/2014

Emuler un processeur ARM sur une archi x86 sous Linux, c’est possible ! Voici comment faire.

Les étapes

Tout d’abord, il faut installer qemu en version 1.5 minimum (sinon risque de bugs, voir à la fin de ce post).

Ensuite, on récupère une image de raspbian, et un kernel compilé pour les architectures ARM:

wget http://downloads.raspberrypi.org/raspbian/images/raspbian-2013-12-24/2013-12-20-wheezy-raspbian.zip
wget http://xecdesign.com/downloads/linux-qemu/kernel-qemu

Ensuite, on prépare l’environnement

mkdir -p vm/raspbian
cd vm/raspbian
unzip 2013-12-20-wheezy-raspbian.zip

Premier lancement de qemu

Il y a un peu de configuration afin de faire fonctionner l’image. On démarre donc d’abord qemu sur l’image raspbian en exécutant un shell (option init=/bin/bash):

qemu-system-arm -kernel kernel-qemu -cpu arm1176 -m 256 -M versatilepb -no-reboot -serial stdio -append "root=/dev/sda2 panic=1 rootfstype=ext4 rw init=/bin/bash" -hda 2013-12-20-wheezy-raspbian.img 

Cette commande devrait donc démarrer un bash, il faut ensuite éditer le fichier /etc/ld.so.preload afin de mettre en commentaire la ligne suivante :

#/usr/lib/arm-linux-gnueabihf/libcofi_rpi.so

Sauvegarder puis arrêter qemu:

halt

ou Ctrl-D

Véritable démarrage de Raspbian

On peut ensuite relancer qemu sans l’option init :

qemu-system-arm -kernel kernel-qemu -cpu arm1176 -m 256 -M versatilepb -no-reboot -serial stdio -append "root=/dev/sda2 panic=1 rootfstype=ext4 rw" -hda 2013-12-20-wheezy-raspbian.img 

Attendre ensuite patiemment le démarrage… L’écran de config de raspbian devrait s’afficher. Après configuration basique, on obtient un shell ressemblant à ça :

Problèmes rencontrés

Sous Ubuntu 12.04, avec qemu 1.0 installé par : sudo apt-get install qemu-system qemu-user qemu-kvm-extras

Le lancement de qemu donne des erreurs sur l’accès SCSI :

L’installation d’une version plus récente de qemu (1.5) a permis de résoudre le problème.

Liens

  • http://xecdesign.com/qemu-emulating-raspberry-pi-the-easy-way/
  • http://www.soslug.org/wiki/raspberry_pi_emulation

Installation d’un environnement de cross-compilation

L’étape d’après consistera à voir comment compiler une application pour architecture ARM à partir d’un Linux.

git clone git://github.com/raspberrypi/tools.git

La suite au prochain numéro !


comments powered by Disqus