Préparer une image RaspberryPi hard-float sous QEmu

Ce n’est plus la peine de présenter le Raspberry Pi.

Les images distribuées sur le site de la fondation Raspberry Pi sont assez complètes, même un peu trop complètes si on ne veut en faire qu’un serveur (il y a notamment un environnement graphique pré-installé).
Personnellement j’ai choisi d’adapter à mes besoins une image pré-existante, mais sous QEmu pour éviter d’être embêté avec les histoires d’écran (HDMI ou composite) et de hub USB alimenté (clavier / souris ; le Pi ne délivre pas assez de puissance sur les ports USB pour pouvoir alimenter tout et n’importe quoi comme sur un PC normal).

Voici donc comment faire.

1) Télécharger une image pré-existante : raspberrypi.org/downloads
On choisira une image “hard-float” pour exploiter au mieux le matériel : « Raspbian “wheezy” » ou bien « Arch Linux ARM ».
Pour ceux qui veulent utiliser la JVM Oracle sur leur Pi, il faut une image “soft-float” (« Soft-float Debian “wheezy” ») mais là on sort du cadre de ce T&A car le kernel QEmu ci-dessous ne convient qu’au “hard-float”.
Une fois le .zip téléchargé, décompressez-le à l’endroit de votre choix, vous obtiendrez un fichier .img.

2) Télécharger un kernel spécifique pour QEmu. J’ai eu un peu de mal à le trouver (liens cassés) donc je vous le mets ci-dessous :
kernel-3.6.8-armhf-qemu.zip.txt (3.3 MB) Évidemment c’est un .zip, le .txt n’est là que pour contourner les limitations du forum.
Décompressez le .zip dans le même répertoire où vous avez mis votre fichier .img.

3) Installer le paquet qemu
ATTENTION : la version présente dans Squeeze (0.12.5) est beaucoup trop ancienne, il faudra utiliser celle des backports (1.1.2), je vous laisse chercher comment faire. Si vous êtes sur Wheezy pas de souci c’est la 1.1.2 qui est dans les dépôts.

4) Lancer l’image téléchargée :
(suite aux messages de thuban et aux retours d’un utilisateur particulièrement chiant qui se reconnaîtra :006 j’ai modifié la ligne de commandes pour que ça marche mieux)

qemu-system-arm -kernel kernel-3.6.8-armhf-qemu -cpu arm1176 -m 256 -M versatilepb -no-reboot -nographic -append "root=/dev/sda2 panic=1 console=ttyAMA0" -hda NOM_DE_L_IMAGE.img

Si vous avez un modèle B récent avec 512 Mo de RAM, vous pouvez changer -m 256 en -m 512 si ça vous chante.

Et voilà, y’a plus qu’à.
Pendant le boot vous aurez plein de messages d’erreur, c’est normal : QEmu ne fournit pas l’ensemble du matériel disponible sur le Pi. Entre autres, la puce graphique n’est pas émulée donc vous atterrirez directement sur un login console, et non pas sur un environnement graphique. Mais vu que le but est avant tout de configurer l’image selon nos besoins, ça gêne pas du moment qu’on a accès aux outils de base (nano / apt).
Il se peut que certains messages d’erreur vous donnent l’impression que le système est bloqué mais si vous attendez un moment ça devrait se débloquer tout seul. Soyez patient : chez moi ça met plusieurs minutes à booter !

Quand vous êtes satisfait de votre image (environnement graphique supprimé si vous voulez juste un serveur, SSH configuré comme vous voulez, etc) il n’y a plus qu’à la mettre sur une carte SD (avec dd par exemple). Si vous voulez agrandir la partition pour occuper toutes la carte SD c’est le bon moment (fdisk ; resize2fs). Puis mettre la carte SD dans le Pi et roulez jeunesse.

Merci! :023

Après essai, je n’arrive pas à démarrer le système. Le cpu s’exite un peu au départ, puis j’ai ce message d’erreur et le processus semble en attente ensuite :

Ça vient d’où?

EDIT : Partiellement résolu avec la commande suivante (et comme je ne veux pas de graphique ça me va)

Seulement un warning, ça se débloque après quelques minutes.

Moi j’ai pas ce message particulier, par contre j’en ai d’autres (libkmod notamment) qui semblent bloquer mais ça finit par passer, suffit d’être patient.
Je rajoute ça dans mon post (être patient). :wink:

[quote=“thuban”]Après essai, je n’arrive pas à démarrer le système. Le cpu s’exite un peu au départ, puis j’ai ce message d’erreur et le processus semble en attente ensuite :

Ça vient d’où?

EDIT : Partiellement résolu avec la commande suivante (et comme je ne veux pas de graphique ça me va)

J’ai le me message d’erreur au lancement de la 1ère commande, la 2ème commande que tu proposes ne fonctionne pas, contiend elle des erreurs/oublis?

En effet, je ne vois pas à quel moment mentionner le nom de l’image?

Oui, il y a des “erreurs”, c’est à adapter.
Par exemple :

ah! ça fonctionne bien mieux, j’arrive au prompt login/password

Je met pi en login et raspberry en password mais ça boucle, après le message (…)Please run sudo raspi-config

Ah oui, j’ai eu des merdes avec la dernière image de raspbian moi aussi. Avec l’ancienne image ça allait beaucoup mieux! (voir MP).

Cependant, il me semble bien que j’arrivais à avoir un affichage graphique avec la dernière image (de 2013). Mais comme j’ai entre temps bidouillé et compilé qemu, c’est peut-être lié. Pourtant, j’ai désinstallé la version compilée entre temps, mais si est-ce une librairie ou je ne sais quoi qui est restée…