{{tag>Precise Quantal BROUILLON}}
====== QEMU : émulation d'un Raspberry Pi (Linux ou Windows) ======
===== Pré-requis =====
* Une machine sous Ubuntu
* QEMU : [[http://xecdesign.com/compiling-qemu/|pour Linux]] ou [[http://qemu.weilnetz.de/|pour Windows]]. Assurez-vous que vous avez une version appropriée (ARM1176)
* Une image disque de la distribution choisie (Raspbian)
==== Préparation de l'environnement ====
- Créer le répertoire de travail et s'y rendre
- Télécharger le noyau Linux :$ wget http://xecdesign.com/downloads/linux-qemu/kernel-qemu
- Téléchargez et décompressez l'image disque .img dans le répertoire de travail.
- Toutes les opérations se feront dans ce répertoire.
Vérifiez que vous avez tout :
- Assurez-vous que vous avez les fichiers image **kernel-qemu** et vos fichiers image disque.
- $ qemu-system-arm -cpu ?La sortie devrait contenir **arm1176**.
===== Installation =====
Créez un répertoire **qemu** (par exemple dans votre home), allez-y et téléchargez-y le noyau de qemu :
$ mkdir qemu
cd qemu
wget http://xecdesign.com/downloads/linux-qemu/kernel-qemu
Téléchargez l'image disque de la distribution pour le Raspi sur [[http://www.raspberrypi.org/downloads]], décompressez le fichier zip (-> aaaa.mm.jj-wheezy.raspbian.img pour une raspbian) et enregistrez-la dans le répertoire **qemu** créé ci-dessus.
Raspian et Debian devraient fonctionner tout de suite, mais Arch Linux nécessite un peu de travail.
Installez le paquet **[[apt>qemu-system]]** ou en ligne de commande :$ sudo apt install qemu-system
==== Méthode graphique ====
Pour installer **qemu** et son GUI **aqemu**, [[fr:tutoriel:mini-tutoriels:comment_installer_un_paquet|installez le paquet]] **[[apt>aqemu]]** ou en ligne de commande :
$ sudo apt-get install aqemu
===== Configuration =====
Nous allons maintenant monter la partition ext4 de l'image pour faire une petite modification sur le filesystem.
Pour connaître l'emplacement du début de cette partition, lancez la commande :
$ file aaaa.mm.jj-wheezy-raspbian.img
2014-01-07-wheezy-raspbian.img: x86 boot sector; partition 1: ID=0xc, starthead
130, startsector 8192, 114688 sectors; partition 2: I0x83, starthead 165, star
tsector 122880, 5662720 sectors, code offset 0xb8
Multipliez par 512 la valeur indiquée pour le secteur de début (ici, **startsector 122880** -> * 512 = 6291456)
Montez la partition en donnant à l'offset la valeur calculée :
$ sudo mount aaaa.mm.jj-wheezy-raspbian.img -o offset=6291456 /mnt
Éditez avec les droits d'administration le fichier **/mnt/etc/ld.so.preload** pour ajouter un # en début de ligne :
#/usr/lib/arm-linux-gnueabihf/libcofi_rpi.so
Quittez l'éditeur.
(Facultatif) Créez avec les droits d'administration le fichier **/etc/udev/rules.d/90-qemu.rules** avec le contenu suivant :
KERNEL=="sda", SYMLINK+="mmcblk0"
KERNEL=="sda?", SYMLINK+="mmcblk0p%n"
KERNEL=="sda2", SYMLINK+="root"
-> le noyau voit le disque **/dev/sda** au lieu de **/dev/mmcblk0**. Cela va créer des liens symboliques pour être plus conforme à la vraie pi.
Démontez l'image :
$ sudo umount /mnt
Lancez Qemu avec l’image à émuler :
$ sudo qemu-system-arm -kernel kernel-qemu -cpu arm1176 -m 256 -M versatilepb -k fr -no-reboot -serial stdio -append "root=/dev/sda2 panic=1" -hda aaaa.mm.jj-wheezy-raspbian.img -redir tcp:5022::22
; -kernel kernel-qemu
:
; -cpu arm1176
: Select CPU model (-cpu help for list and additional feature selection)
; -m 256
: permet de spécifier la quantité de mémoire vive pour le système émulé; ne mettez pas la taille totale de votre mémoire car il faut en laisser pour le système hôte. Par défaut, cette valeur est de 128. Set virtual RAM size to megs megabytes. Default is 128 MiB. Optionally, a suffix of “M” or “G” can be used to signify a value in megabytes or gigabytes respectively.
; -M versatilepb
:
; -no-reboot
:
; -serial stdio
: Redirect the virtual serial port to host character device standard input/output. The default device is vc in graphical mode and stdio in non graphical mode.
; -append "root=/dev/sda2 panic=1"
:
; -hda aaaa.mm.jj-wheezy-raspbian.img
: sert à spécifier l'image de disque dur qui va servir pendant l'émulation; il peut aussi s'agir d'un périphérique ou d'une partition, comme /dev/hda1; Il y a aussi -hdb, -hdc, -hdd, pour simuler d'autres partitions, mais on ne peut pas utiliser -hdc en même temps que -cdrom. L'utilisation de partitions "réelles" présente des risques pour le disque dur, préférez les images. Use file as hard disk 0, 1, 2 or 3 image (see disk_images).
; -redir tcp:5022::22
:
; -k fr
: clavier français
Au premier lancement, il y a une erreur sur l’intégrité de la partition, puis vous vous retrouvez au prompt.
Attention c’est du qwerty !
Contrôler le disque :
$ fsck /dev/sda2
Puis arrêter le système :
$ halt
Une fois installé, **AQEMU** peut être lancé en sélectionnant **Applications -> Emulateurs -> AQEMU** dans le menu système.
Quand vous lancez **AQEMU** pour la première fois, le message suivant apparaît :
===== Utilisation =====
Lancez Qemu avec la commande (la même que pour la configuration) :
$ sudo qemu-system-arm -kernel kernel-qemu -cpu arm1176 -m 256 -M versatilepb -k fr -no-reboot -serial stdio -append "root=/dev/sda2 panic=1" -hda aaaa.mm.jj-wheezy-raspbian.img -redir tcp:5022::22
sous Windows, utilisez **qemu-system-armw.exe** lieu de **qemu-system-arm**
N'essayez pas d'utiliser plus de 256 Mo de RAM, la valeur est codée en dur dans QEMU.
Vous vous retrouvez sur l'écran de raspi-config.
Commencez par changer les paramètres linguistiques (en particulier le clavier...)
==== Premier démarrage ====
$ qemu-system-arm -kernel kernel-qemu -cpu arm1176 -m 256 -M versatilepb -no-reboot -serial stdio -append "root=/dev/sda2 panic=1 rootfstype=ext4 rw" -hda 2013-09-25-wheezy-raspbian.img
C'est la même commande que précédemment, mais sans init=/bin/bash.
Cela prend du temps, mais les démarrages suivants seront beaucoup plus rapides.
{{http://xecdesign.com/wp-content/uploads/2012/04/Screenshot-QEMU.png}}
===== Désinstallation =====
Pour supprimer cette application, il suffit de supprimer son paquet. Selon la méthode choisie, la configuration globale de l'application est conservée ou supprimée. Les journaux du système, et les fichiers de préférence des utilisateurs dans leurs dossiers personnels sont toujours conservés.
===== Voir aussi =====
----
//Basé sur << [[http://xecdesign.com/qemu-emulating-raspberry-pi-the-easy-way/|Emulating Raspberry Pi the easy way (Linux or Windows!)]] >>.//