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...
c) Créer un disque dur virtuel d'une taille suffisante pour vos travaux :
d) Lancer l'installation de la machine virtuelle avec 512Mo de 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 :
f) Lancer votre VM Debian ARM :
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.
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.
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 :
b) Installer QEMU directement avec son module KVM :
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”
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 :
- Exécuter la commande file sur le fichier hda.img,
- Noter la valeur de startsector,
- Multiplier cette valeur par 512 et vous obtenez la valeur offset pour la commande suivante.
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.
Crédit photo : http://www.flickr.com/photos/feuilllu/
Commentaires
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.