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.

Ne disposant pas moi même d'un QEMU assez récent(qemu-kvm-0.14.0 , version ubuntu natty 11.04), j'ai utilisé “-cpu arm1136-r2” sans voir pour l'instant de problèmes

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

Références

sysadmin/virtualisation/kvm/raspberry_pi.txt · Dernière modification: 2015/01/09 11:59 par james
Driven by DokuWiki Recent changes RSS feed Valid CSS Valid XHTML 1.0