Table des matières
Emuler une Raspberry Pi dans une VM KVM
Le support de l'ARM1176 est relativement récent. Si vous n'avez pas compilé vous même QEMU depuis le git, ou téléchargé des binaires récents, remplacer “-cpu arm1176” par “-cpu arm1136-r2” dans ce qui suit. Notez que vous passerez alors à coté de nombreuses corrections de gros bugs, ainsi que de quelques fonctionnalités CPU peu importantes.
Installation des prérequis
- Installez QEMU si vous ne l'avez pas déja :
apt-get install qemu-user-static qemu-system
- Vérifiez le CPU qu'est capable d'émuler votre version de QEMU, grace a la commande
qemu-system-arm -cpu ?
Vous devez voir apparaître “arm1136-r2” ou mieux “arm1176” dans la liste, comme par exemple avec la version 0.14 (adaptez la suite au besoin) :
$ qemu-system-arm -cpu ? Available CPUs: arm926 arm946 arm1026 arm1136 arm1136-r2 arm11mpcore cortex-m3 cortex-a8 cortex-a8-r2 cortex-a9 ti925t pxa250 pxa255 pxa260 pxa261 pxa262 pxa270 pxa270-a0 pxa270-a1 pxa270-b0 pxa270-b1 pxa270-c0 pxa270-c5 any
- Téléchargez une image de raspbian ici : http://www.raspberrypi.org/downloads , par exemple http://downloads.raspberrypi.org/images/raspbian/2012-10-28-wheezy-raspbian/2012-10-28-wheezy-raspbian.zip (sha1sum : 3ee33a94079de631dee606aebd655664035756be ) qu'il faudra décompresser.
- Compilez vous même votre noyau (non abordé ici, voir http://xecdesign.com/compiling-a-kernel/ ) ou récupérez une version existante ici : http://xecdesign.com/downloads/linux-qemu/kernel-qemu, comme par exemple avec la commande “wget http://xecdesign.com/downloads/linux-qemu/kernel-qemu”.
- Vérifiez le modèle de carte réseau que vous pouvez émuler a l'aide de la commande “qemu-system-arm -net nic,model=?” comme dans l'exemple suivant :
$ qemu-system-arm -net nic,model=? qemu: Supported NIC models: smc91c111
- Nous allons utiliser l'interface “virbr0” utilisée par le réseau par défaut de libvirt pour mettre egalement l'interface réseau de cette VM : préparez donc les 2 scripts d'interfaces réseau de la VM :
# cat <<EOF > /etc/qemu-ifup-virbr0 #!/bin/sh switch=virbr0 /sbin/ifconfig $1 0.0.0.0 up /usr/sbin/brctl addif ${switch} $1
# cat <<EOF > /etc/qemu-ifdown-virbr0 #!/bin/sh switch=virbr0 /usr/sbin/brctl delif $switch $1 /sbin/ifconfig $1 0.0.0.0 down EOF
Lancement de la VM
Pour lancer la VM de la raspberry pi, il faut donc maintenant vous placer dans le répertoire ou vous avez téléchargé le noyau et décompressé le fichier image raspbian.
Lancez alors la commande suivante en root (sinon le réseau ne fonctionnera pas) que vous pouvez mettre dans un script/alias
qemu-system-arm -kernel kernel-qemu -cpu arm1136-r2 -m 256 -M versatilepb -no-reboot -serial stdio -append "root=/dev/sda2 panic=1" -hda 2012-10-28-wheezy-raspbian.img \ -net nic,model=smc91c111,netdev=arm0 -netdev tap,id=arm0,script=/etc/qemu-ifup-virbr0,downscript=/etc/qemu-ifdown-virbr0
Se connecter à la VM
Vous pouvez maintenant vous connecter a votre VM soit en utilisant SSH, soit en login classique, en utilisant l'utilisateur “pi” et le mot de passe “raspberry” par défaut