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.
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
- Installer les outils nécessaires à la compilation
- 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 :
- http://www.gluster.org/community/documentation/index.php/Building_QEMU_with_gfapi_for_Debian_based_systems
- https://github.com/debian-pi/raspbian-ua-netinst/issues/34