mirror of https://github.com/kianby/blog
You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
124 lines
5.0 KiB
Markdown
124 lines
5.0 KiB
Markdown
<!-- title: Emuler la Raspbian avec Qemu -->
|
|
<!-- category: Debian Matériel Virtualisation -->
|
|
<!-- tag: planet -->
|
|
|
|
<img src="/images/2014/rasplogo.png" alt="Raspberry logo" style="margin: 0px
|
|
20px; float:left;" />Je m'intéresse de plus en plus au Raspberry et je
|
|
franchirai peut-être le pas de l'achat dans quelque temps. J'ai voulu voir à
|
|
quoi ressemble sa distribution principale Raspbian (basée sur Debian) en
|
|
l'émulant sous Qemu. <!-- more -->Je me suis basé sur [le tutorial pointé par beaucoup de
|
|
gens dans les forums](http://xecdesign.com/qemu-emulating-raspberry-pi-the-
|
|
easy-way/) et j'ai effectué des recherches annexes pour résoudre
|
|
certains problèmes : taille des partitions, gestion de la souris sous Qemu. Ce
|
|
qui suit est le résultat de mes manipulations pour émuler Raspbian avec Qemu
|
|
depuis une distribution GNU/Linux 64 bits.
|
|
|
|
En pré-requis, on suppose que Qemu est installé sur le système hôte. On
|
|
vérifie que le processeur ARM du Raspberry est supporté par Qemu avec la
|
|
commande suivante :
|
|
|
|
```shell
|
|
$ qemu-system-arm -cpu ?
|
|
```
|
|
|
|
Le résultat liste les types de processeur supportés. On s'assure que **arm1176** est mentionné.
|
|
|
|
### Installation de base
|
|
|
|
On se crée un répertoire de travail dans lequel on va télécharger les fichiers nécessaires :
|
|
|
|
- le noyau Linux [depuis ce lien](http://xecdesign.com/downloads/linux-qemu/kernel-qemu)
|
|
- l'image de la Raspbian [depuis le site officiel](http://www.raspberrypi.org/downloads)
|
|
|
|
La modification d'un fichier est nécessaire pour que la distribution
|
|
fonctionne avec Qemu. On effectue donc un premier démarrage particulier avec
|
|
BASH en processus INIT pour la réaliser.
|
|
|
|
```shell
|
|
$ 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 init=/bin/bash" -hda 2014-06-20-wheezy-raspbian.img
|
|
```
|
|
|
|
Quand Qemu a démarré BASH on modifie le fichier /etc/ld.so.preload
|
|
|
|
$ nano /etc/ld.so.preload
|
|
|
|
On commente la première ligne du fichier :
|
|
|
|
#/usr/lib/arm-linux-gnueabihf/libcofi_rpi.so
|
|
|
|
On sauvegarde (CTRL-X avec nano) et on arrête l'émulation
|
|
|
|
exit
|
|
|
|
A ce stade, l'émulation Raspbian sous Qemu est fonctionnelle et on peut faire un vrai démarrage avec la commande :
|
|
|
|
$ 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 2014-06-20-wheezy-raspbian.img
|
|
|
|
### Elargir la partition
|
|
|
|
Il ne reste pas beaucoup d'espace disque sur la partition root. On peut
|
|
élargir la partition, sinon on ne pourra même pas mettre à jour Raspbian avec
|
|
apt-get. Cela nécessite plusieurs étapes.
|
|
|
|
D'abord on élargit le disque avec l'utilitaire qemu-resize.
|
|
|
|
$ qemu-img resize 2014-06-20-wheezy-raspbian.img +2G
|
|
|
|
Ensuite on démarre la Raspbian avec Qemu
|
|
|
|
```shell
|
|
$ 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 2014-06-20-wheezy-raspbian.img
|
|
```
|
|
|
|
On se connecte au Raspberry avec l'utilisateur **pi** et le mot de passe
|
|
**raspberry**. Attention si on se connecte depuis la fenêtre Qemu, le clavier
|
|
est probablement configuré en QWERTY.
|
|
|
|
On lancer l'utilitaire **fdisk** pour modifier les partitions
|
|
|
|
$ fdisk /dev/sda
|
|
|
|
- supprimer la partition 2 qui commence à l'offset 122880 : commande **d** puis indiquer la partition **2**
|
|
- recréer une partition 2 qui commence à l'offset 122880 et utilise la totalité du disque : commande **n**
|
|
- sauvegarder les modifications : commande **w**
|
|
- arrêter le système avec la commande **reboot**.
|
|
|
|
On démarre à nouveau la Raspbian avec Qemu et on lance la commande resize2fs
|
|
pour élargir la partition 2 :
|
|
|
|
$ resize2fs /dev/sda2
|
|
$ reboot
|
|
|
|
### Augmenter la résolution sous X
|
|
|
|
Par défaut, on a une résolution en 640x480 quand on lance LXDE avec
|
|
**startx**. On peut monter en 800x600 en créant un fichier *xorg.conf*.
|
|
|
|
# sudo nano /etc/X11/xorg.conf
|
|
|
|
Ajouter ces lignes dans le fichier :
|
|
|
|
Section "Screen"
|
|
Identifier "Default Screen"
|
|
SubSection "Display"
|
|
Depth 16
|
|
Modes "800x600" "640x480"
|
|
EndSubSection
|
|
EndSection
|
|
|
|
Sauvegarde et redémarrer X pour voir le résultat.
|
|
|
|
### Déplacements erratiques de la souris
|
|
|
|
J'ai été confronté à ce problème lié à la configuration de Qemu. La souris se
|
|
fige ou certaines portions de l'écrans deviennent inaccessibles. je l'ai
|
|
résolu en lançant Qemu ainsi :
|
|
|
|
qemu-system-arm -kernel kernel-qemu -cpu arm1176 -m 256 -M versatilepb -no-reboot -serial stdio -usbdevice tablet -display sdl -append "root=/dev/sda2 panic=1 rootfstype=ext4 rw" -hda 2014-06-20-wheezy-raspbian.img
|
|
|
|
Notez le paramètre *-usbdevice tablet* et *-display sdl*.
|
|
|
|
### Conclusion
|
|
|
|
L'émulation Qemu permet de se faire une bonne idée de la distribution. Bien sûr, ce n'est pas complètement fonctionnel car certains périphériques spécifiques au Raspberry ne sont pas présent (je pense aux entrées / sortie, au port HDMI) mais cela permet déjà beaucoup.
|