Utiliser QEmu pour créer une image Raspbian

Si pour un projet particulier comme moi ou tout simplement pour faire des tests sans passer par un Raspberry Pi et sa carte SD, vous pouvez tester rapidement la création d’image grâce à Qemu et la version installable par réseau de Raspbian.

network-installation-services-palm-harbor-small

Pour mon projet Pi Home Connect, je souhaite pouvoir déployer simplement une image « ready-to-use » pour ceux qui voudront se lancer dans l’aventure. Pour cela, il est pratique d’avoir un moyen simple et rapide sous la main. Je l’ai trouvé en combinant Qemu pour virtualiser le Raspberry et l’image d’installation en réseau de la Raspbian qui génère une image minimaliste et à jour.

Par la suite, je peux configurer cette installation pour ajouter des paquets supplémentaires puis télécharger sur GitHub par exemple des sources. Pratique pour mettre en place un serveur NodeJS et des bases données associées.

  • Mettre à jour le système
    apt-get update
  • Installer qemu 1.5+
    • Installer les outils nécessaires à la compilation
      apt-get build-dep qemu devscripts quilt libiscsi-dev libusbredirparser-dev libssh2-1-dev libvdeplug-dev libjpeg-dev
    • Récupérer les sources de Qemu. Au moment de l’écriture de ceta article c’est la version stable 2.2.0 la plus récente
      wget http://wiki.qemu-project.org/download/qemu-2.2.0.tar.bz2
      tar xvfj qemu-2.2.0.tar.bz2 
      
    • Compiler et installer Qemu
      cd qemu-2.2.0
      configure
      make
      make install
  • Récupérer le kernel spécial pour Qemu
    wget http://xecdesign.com/downloads/linux-qemu/kernel-qemu
  • Récupérer la dernière image de l’installation réseau. Actuellement la version 1.0.6
    wget https://github.com/debian-pi/raspbian-ua-netinst/releases/download/v1.0.6/raspbian-ua-netinst-v1.0.6.img.bz2
    bzip2 -d raspbian-ua-netinst-v1.0.6.img.bz2
  • Récupérer le script de modification de l’image à l’adresse http://pastebin.com/sqtQ19Ci. Chez moi j’ai sauvegardé son contenu dans un fichier préparé.sh
    curl http://pastebin.com/download.php?i=sqtQ19Ci | tr -d '\r' > prepare.sh
    chmod 755 prepare.sh
  • Installer Kpartx si besoin
    apt-get install kpartx
  • Préparer l’image officielle pour être utilisée avec Qemu
    ./prepare.sh raspbian-ua-netinst-v1.0.6.img

    Le processus va vous générer un fichier spécifique installer-qemu.cpio qui sera utilisé lors de la phase de démarrage

  • Lancer Qemu avec la commande suivante
    qemu-system-arm -kernel "kernel-qemu" -initrd "installer-qemu.cpio" -cpu arm1176 -m 256 -M versatilepb -no-reboot -serial stdio -append "consoleblank=0" "raspbian-ua-netinst-v1.0.6.img"

    Le processus va durer plusieurs minutes durant lequel il va télécharger et installer les paquets dont il a besoin. A la fin la fenêtre va se fermer, ça sera la fin de l’installation

  • Lancer Qemu pour utiliser votre image :
    qemu-system-arm -kernel kernel-qemu -cpu arm1176 -m 256 -M versatilepb -no-reboot -append "root=/dev/sda2 rw vga=normal console=ttyAMA0,115200" -hda raspbian-ua-netinst-v1.0.6.img -redir tcp:5022::22 -serial stdio

Vous voilà maintenant avec un système pour le Raspberry Pi tout frais et à jour.

Pour vous connecter utilisez le login root et password raspbian

Bravo à l’équipe qui réalise l’image netinstall pour le super travail réalisé !

Sources :

Vous aimerez aussi...

  • Salut,

    Tu pourrais remplacer cette ligne :
    bzip2 -d qemu-2.2.0.tar.bz2 && tar xvf qemu-2.2.0.tar
    par :
    tar xvfj qemu-2.2.0.tar.bz2

    Préciser aussi que tu fais : make install
    en root
    Merci pour ce tuto instructif ! 😉

    • J’arrive bien à lancer l’image Raspbian avec Qemu mais je n’arrive pas à me loguer O_o
      Je voudrais savoir quel est le login et le mot de passe à taper ? J’ai essayer pi/rqspberry (<= A cause de la configuration par défaut en clavier qwerty) mais cela ne fonctionne pas.