Virtualiser le Raspberry Pi avec QEmu sous Debian dans Virtualbox

Si vous êtes sur ce site c’est surement pour un tutoriel. Vous pouvez aussi avoir envie de savoir ce que vous pourriez faire avec cette petite machine. Avec Virtualbox vous allez pouvoir tester avant d’acheter !

rpi+vb-300x187

Cela fait un moment que je regardai pour voir comment faire des tests sans avoir à refaire des images toutes les deux minutes. J’avais en tête une virtualisation qui facilite l’usage du Raspberry sans Raspberry 🙂 J’ai jamais réussi à trouver un moyen de le faire de simplement. Jusqu’à ce que je trouve un post sur le forum du Raspberry.

Ce qui m’a surpris c’est qu’au final la mise en place est vraiment simple ! Voici donc comment j’ai procédé pour installer une distribution Moebius dans

Un grand merci à tonyhughes pour les explications !

  1. Je passe les explications sur comment installer VirtualBox et installer Ubuntu ou Debian dans VirtualBox. Je suis parti d’une machine avec Debian installé :Debian__Running_
  2. Dans votre machine virtuelle, mettez à jour tous les paquets. Depuis une console (vous pouvez aussi bien le faire depuis:
    sudo apt-get update
    sudo apt-get upgrade
  3. Mon choix a été d’installer l’ensemble des données (kernel et image) dans le home de mon utilisateur. A vous de choisir où vous voulez les mettre. J’ai donc créé un répertoire qemu
    mkdir qemu
    cd qemu
  4. Dans ce répertoire vous allez installer le noyau qui sera utilisé par Qemu. Pour cela vous pouvez le télécharger à cette adresse : http://xecdesign.com/downloads/linux-qemu/kernel-qemu (je n’ai pas réussi ni trop cherché par wget).Vous devriez donc avec maintenant dans le répertoire qemu créé à l’étape 2, le fichier kernel-qemu.
  5. Ensuite vous copiez l’image que vous souhaitez exécuter toujours dans ce répertoire qemu. J’y ai copié Raspbian et Moebius.Capture_d_écran_02_06_13_18_26-2
  6. Maintenant nous allons monter la partition ext4 de votre image pour faire une petite modification sur le filesystem. Pour cela, nous avons besoin de savoir où se trouve le début de cette partition. Utilisez la commande file puis prenez le secteur de début qu’il faut multiplier par 512 :capture_d_c3a9cran_02_06_13_18_28-2
    Ici le secteur de début de la seconde partition est 122880. Il faudra donc passer à la commande mount le paramètre 62914560.
  7. Monter la partition (ici j’utilise toujours Moebius) :
    mount /home/chris/qemu/moebius-1.1.1.img  -o offset=62914560 /mnt
  8. Modifier le fichier /mnt/etc/ld.so.preload pour mettre en commentaire la ligne. Ajoutez un # en début de ligne, ça suffira pour désactiver le chargement de la librairie ELF.
    #/usr/lib/arm-linux-gnueabihf/libcofi_rpi.so
  9. Démonter l’image
    umount /mnt
  10. Installer Qemu
    apt-get install qemu-system
  11. Lancer Qemu avec l’image que vous souhaitez émuler
    sudo qemu-system-arm -kernel /home/chris/qemu/kernel-qemu -cpu arm1176 -m 256 -M versatilepb -no-reboot -serial stdio -append "root=/dev/sda2 panic=1" -hda /home/chris/qemu/moebius-1.1.1.img -redir tcp:5022::22
  12. Lors du premier lancement vous allez avoir une erreur sur l’intégrité de la partition. Vous allez vous retrouver avec un prompt demandant le mot de passe root. A vous de la saisir. Attention c’est du qwertz !Contrôler le disque
    fsck /dev/sda2

    Puis arrêter le système

    halt
  13. Vous pouvez relancer maintenant Qemu avec la même commande qu’à l’étape 11 :
    sudo qemu-system-arm -kernel /home/chris/qemu/kernel-qemu -cpu arm1176 -m 256 -M versatilepb -no-reboot -serial stdio -append "root=/dev/sda2 panic=1" -hda /home/chris/qemu/moebius-1.1.1.img -redir tcp:5022::22
  14. Vous devriez arriver au prompt sans erreurDebian__Running_

Alors maintenant que vous avez votre système lancé, plusieurs contraintes :

  • C’est de l’émulation dans de la virtualisation. C’est pas top mais pour un processeur ARM ça semble suffire (j’ai pas non plus fait 50 tests). Ca fonctionne
  • Vous ne pouvez pas étendre la partition étant donné que le fichier image ne peut être agrandi. Vous pouvez par exemple copier l’img sur une SD card, faire une image de la SD et utiliser cette nouvelle image.

Je n’ai pas testé avec Raspbian mais à priori les performances sous X ne sont pas mauvaises.

A vous de tester !

 

Vous aimerez aussi...

  • Christophe

    Il est aussi possible de lancer un qemu depuis Windows 🙂
    Je préfère ma debian mais sous windows j’ai téléchargé un zip lancé un .bat et hop 10secondes chrono en main!

    • Salut,
      Si tu as un lien pour le téléchargement, peux tu le poster ? Ca pourrait être utile pour ceux qui ne connaissent pas (encore) Linux 🙂

  • sebseb

    Salut

    En fait je vois pas le rapport avec Virtualbox, tu utilises qemu pour virtualiser dans ton exemple?!
    Tu dis qu’il faut l’installer, mais tu ne sembles pas l’utiliser…

    • Salut,
      J’utilise qemu sous Debian, Debian étant dans une machine virtuelle sous VirtualBox. Chacun peut alors installer VirtualBox avec Ubuntu ou Debian et y ajouter qemu. Je vais voir si je peux rendre l’article plus clair
      [Edit] Perso je trouve l’étape 1 assez explicite

      • Christian

        il n’empêche que l’intérêt de la virtualisation m’échappe totalement . Quel intérêt par rapport à l’installation directe de qemu sur un hôte linux ?

        • J’ai pas d’hôte Linux. Avec la virtualisation j’en ai un 😉

  • sebseb

    Mea cupla 🙂

    En effet ca explique comment virtualiser un raspi DANS une debian virtualisée…
    Je suis allé trop vite, car comme le titre le laisse supposer, je pensait virtualiser la debian du raspi (raspbian) dans virtualbox.

    Alors ce n’est pas l’article qu’il faudrait changer, mais le titre devrait être « Virtualiser le RasPi dans Qemu sous Debian dans Virtualbox ».

    Car pour les utilisateur qui sont déjà sous debian/ubuntu (comme moi), en lisant le titre on se dit, « Quoi vbox peut virtualiser un ARM? »

    ++

    • sebseb

      @chris Désolé, j’ai loupé le « Reply »

    • Bonne remarque ! Titre mis à jour

  • raptou

    Bonjour,

    A l’étape 4 pour le wget, ca fonctionne sous Arch Linux: wget le lien.
    Al’étape 6 ==> file xxxxxxxxx.img pour voir le secteur à mon avis il manque » -k » avant l’image.
    Pour la tracduction regarde les doublons et le sens des phrases « tape4 & étape6.
    Cdlt.
    Raptou.

    • Salut,
      Pas de différence chez moi avec option -k activée. Il parcourt bien tout le fichier.
      Pour la traduction, désolé c’est du Google … 😉

  • jolona

    bonjour est ce que dans qemu je peux faire fonctionner une image de mon raspberry ?

    • Bonjour. Sans être certain je dirais que oui si le format de l’image est correct

  • GRENON SKY

    Merci pour ta contribution mec!

  • Patricia Moya

    Yo he conseguido virtualizar pero tengo un 88% ocupado en la memoria SD virtual y no puedo instalar casi nada, ¿cómo la puedo hacer más grande?

    Otro problema es que cuando arranca sale un error porque no encuentra el archivo /lib/modules/3.10.26+ y tengo que teclear exit para continuar el arranque.

    Uso Ubuntu 14.04 de 64 bits.

    He probado aumentar la partición dentro del disco duro una vez aumentado con estos comandos:
    sudo losetup -f -show 8graspi.img
    sudo gparted /dev/loop0

    Pero en las particiones me sale un icono de error y si miro la información dice que no puedo ver el contenido porque falta algunos paquetes por instalar que tengo instalados.

    • Patricia
      Not sure to understand your question : if your filesystem is nearly full, you have to use either another image file (bigger one) or for example, a clone of a SD card. The partitions can not be extended because of the limit of the img file. What i made when i used Qemu was to create a copy of a 4Gb SD card with dd command applied to the full SD (not only the ext4 partition)

Handpicked links

Mise en cache objet de 2114/2408 objets utilisant disk Mise en cache utilisant disk: enhanced Mise en cache de base de données 15/81 requêtes dans 0.313 secondes utilisant disk Served from: pihomeserver.fr @ 2017-07-04 02:01:34 by W3 Total Cache -->