Accéder au contenu principal

Faire sa machine virtuelle sous Debian ARM avec QEMU



Introduction

L'objet de ce article est de vous expliquer comment faire pas à pas, sa machine virtuelle Debian Wheezy tournant sur un processeur ARM avec QEMU. Il est relativement simple de trouver des ressources à ce sujet sur le Web, mais je voulais apporter ma pierre à l'édifice sous forme d'un petit tutorial prêt à l'emploi.
A propos d'ARM et d'émulation, il faut savoir qu'au jour d'aujourd'hui, VirtualBox est incapable de virtualiser un OS tournant sur ARM, cela m'a donc obligé à m'intéresser de plus prêt à QEMU. Et si vous vous demandez pourquoi, je veux émuler de l'ARM, vous le serez au prochain épisode...


QEMU

QEMU est un logiciel développé à l'origine par le célébrissime programmeur Fabrice Bellard. Le succès de cet émulateur vient principalement du fait, qu'il est tout aussi capable d'émuler que de virtualiser. La principale différence entre l'émulation et la virtualisation est qu'un émulateur peut faire tourner n'importe quel OS invité, sur n'importe quel système hôte. Tandis qu'un virtualisateur ne peut faire tourner que des systèmes invités compatibles avec le système hôte. Ainsi, VirtualBox étant développé pour tourner uniquement sur des architectures x86, ne pourra faire tourner qu'un système x86. QEMU en tant qu'émulateur, pourra sans problème faire tourner un système ARM sur une plateforme hôte x86, mais avec un prix à payer, celui de la performance.
Il existe néanmoins des modules dit, d'accélération, disponibles pour Linux. Le plus abouti et le mieux intégré à QEMU étant KVM (Kernel-based Virtual Machine). Ces modules offrent la possibilité au système invité d'être exécuté directement sur le système hôte et accélèrent donc les traitements.

Suivez le guide

a) Préparer votre répertoire de travail :
mkdir ~/qemu/wheezy && cd ~/qemu/wheezy
mkdir mount
wget ftp://ftp.debian.org/debian/dists/wheezy/main/installer-armel/current/images/versatile/netboot/vmlinuz-3.2.0-4-versatile
wget ftp://ftp.debian.org/debian/dists/wheezy/main/installer-armel/current/images/versatile/netboot/initrd.gz

b) Installer QEMU directement avec son module KVM :
sudo apt-get install qemu-kvm qemu-kvm-extras

c) Créer un disque dur virtuel d'une taille suffisante pour vos travaux :
qemu-img create -f raw hda.img 4G

d) Lancer l'installation de la machine virtuelle avec 512Mo de RAM :

Il s'agit d'une étape relativement longue à s'exécuter, où vous êtes assez souvent sollicité pour répondre à des questions, donc pensez à vérifier régulièrement l'état de l'installation. Attention, toujours utiliser des apostrophes !
qemu-system-arm -m 512 -M versatilepb -kernel ~/qemu/wheezy/vmlinuz-3.2.0-4-versatile -initrd ~/qemu/wheezy/initrd.gz -hda ~/qemu/wheezy/hda.img -append “root=/dev/ram”
Une fois l'installation terminée, stopper QEMU.


e) Copier le kernel de boot dans votre installation :

Afin de pouvoir copier correctement notre kernel de boot situé sur le disque dur virtuel. Il faut au préalable monter et calculer l'offset de départ via la procédure suivante :

  1. Exécuter la commande file sur le fichier hda.img,
  2. Noter la valeur de startsector,
  3. Multiplier cette valeur par 512 et vous obtenez la valeur offset pour la commande suivante.
Ainsi, pour ma part :
sudo mount -o loop,offset=1048576 ~/qemu/wheezy/hda.img ~/qemu/wheezy/mount 
cp ~/qemu/wheezy/mount/boot/initrd.img-3.2.0-4-versatile ~/qemu/wheezy/
sudo umount ~/qemu/wheezy/mount

f) Lancer votre VM Debian ARM :
qemu-system-arm -m 512 -M versatilepb -kernel ~/qemu/wheezy/vmlinuz-3.2.0-4-versatile -initrd ~/qemu/wheezy/initrd.img-3.2.0-4-versatile -hda ~/qemu/wheezy/hda.img -append 'root=/dev/sda1'



Si la procédure s'est déroulée avec succès, vous devriez avoir une fenêtre QEMU affichant l'état d'avancement de la séquence de boot. Vous pouvez donc à présent vous connecter avec le compte "utilisateur" crée lors de l'installation.


Commentaires

Anonyme a dit…
Merci pour le tutoriel, ca fait un peu plus d'une semaine que je galère... qu'en ai t il du réseau?
Anonyme a dit…
Bonjour,

Merci pour le tuto !

Pour :
mkdir ~/qemu/wheezy && cd ~/qemu/wheezy
mkdir mount

Juste :
mkdir -p qemu/wheezy/mount && cd qemu/wheezy

Puis du coup on a fait le cd, on évite les PATH :

qemu-system-arm -m 512 -M versatilepb -kernel vmlinuz-3.2.0-4-versatile -initrd initrd.gz -hda hda.img -append “root=/dev/ram”

Idem pour le reste.

Posts les plus consultés de ce blog

Releaser avec Maven sur github

Le but de l'exercice est de releaser un projet Maven simple en utilisant le maven-release-plugin via Cygwin sur la plateforme github . En effet, la procédure serait aussi simple que sur Subversion , à la condition d'avoir ses settings et ses POM au carré, ce que nous allons voir de suite. Pour mener à bien l'opération, les pré-requis sont les suivants : Avoir un environnement de développement sous Cygwin , le mien étant Windows XP SP3 / Cygwin 2.712 , / java 1.6.0_17 / git 1.7.1 avec une auto-complétion des commandes git bien pratique, Avoir une configuration Maven opérationnelle dans le sens où vous avez accès aux maximums de repositories publics et une plateforme d'hébergement/déploiement pour vos archives. La mienne étant Maven 2.2.1 / Nexus™ Open Source Edition 1.7.1. J'avoue avoir de la chance, car j'utilise pour mes tests, ma plateforme d'entreprise (chez Vidal) configurée aux petits oignons par mon collègue Thierry que je salue au pass

Retour sur Rework

Je me suis pour une fois sorti la tête des ouvrages techniques, de mon GoogleReader/programming/languages et autres joyeusetés de ce genre, pour me plonger dans le livre à la mode, Rework . Ce livre co-écrit par Jason Fried et David Heinemeier Hansson est un cookbook destiné aussi bien aux boss, qu'à leurs employés, désirant comprendre et décrypter les clés de la réussite de cette entreprise : 37signals , qui est au passage la boite qui a crée le website Basecamp et le framework ROR . L'ensemble repose sur un enchainement intéressant de chapitres courts mais percutants, avec des illustrations assez plaisantes. Tout est écrit en noir & blanc dans un anglais assez compréhensif, qui permet de le terminer en un clin d'œil, si vous n'avez pas fait comme moi et pris des notes quasiment à chaque chapitre. Je ne vais pas coucher toutes mes notes sur cette page, mais vous en énumérez les premiers points qui m'ont le plus marqué, car ce livre a été pour moi et sera je