J'essaie de suivre divers guides sur Internet afin d'émuler Raspberry Pi sur ma machine Fedora 22. J'ai trouvé cette question: émuler raspbian avec QEMU et l'utiliser pour trouver kernel-qemu pour récupérer un noyau. J'ai téléchargé 2015-09-24-raspbian-jessie.img
des bonnes personnes sur Raspberry Pi.
Lorsque j'essaie de lancer, qemu-system-arm
je ressens une panique du noyau. Y a-t-il quelque chose qui me manque?
Voici la qemu-system-arm
ligne de commande que j'ai tapée:
qemu-system-arm -cpu arm1176 -m 256 -M versatilepb -no-reboot -nographic -kernel kernel-qemu -appc=2 console=ttyAMA0 rw" -hda 2015-09-24-raspbian-jessie.img -net nic -net user,hostfwd=tcp::9999-:22
Suivi des messages du noyau:
sd 0:0:0:0: [sda] Attached SCSI disk
smc91x.c: v1.1, sep 22 2004 by Nicolas Pitre <[email protected]>
eth0: SMC91C11xFD (rev 1) at d089a000 IRQ 25 [nowait]
eth0: Ethernet addr: 52:54:00:12:34:56
mousedev: PS/2 mouse device common for all mice
TCP cubic registered
NET: Registered protocol family 17
input: AT Raw Set 2 keyboard as /devices/fpga:06/serio0/input/input0
input: ImExPS/2 Generic Explorer Mouse as /devices/fpga:07/serio1/input/input1
EXT2-fs (sda2): error: couldn't mount because of unsupported optional features (244)
EXT4-fs (sda2): couldn't mount as ext3 due to feature incompatibilities
EXT4-fs (sda2): recovery complete
EXT4-fs (sda2): mounted filesystem with ordered data mode. Opts: (null)
VFS: Mounted root (ext4 filesystem) on device 8:2.
devtmpfs: mounted
Freeing init memory: 120K
Kernel panic - not syncing: Attempted to kill init!
[<c0032bec>] (unwind_backtrace+0x0/0xf0) from [<c03064dc>] (panic+0x58/0x170)
[<c03064dc>] (panic+0x58/0x170) from [<c0044054>] (do_exit+0x5d0/0x68c)
[<c0044054>] (do_exit+0x5d0/0x68c) from [<c004435c>] (do_group_exit+0x40/0xb0)
[<c004435c>] (do_group_exit+0x40/0xb0) from [<c004ed48>] (get_signal_to_deliver+0x1a8/0x378)
[<c004ed48>] (get_signal_to_deliver+0x1a8/0x378) from [<c002f124>] (do_signal+0x90/0x518)
[<c002f124>] (do_signal+0x90/0x518) from [<c002fa64>] (do_notify_resume+0x48/0x54)
[<c002fa64>] (do_notify_resume+0x48/0x54) from [<c002cc38>] (work_pending+0x24/0x28)
Réponses:
Comme l'a dit @dastaan, la version du noyau doit correspondre au fichier img. J'essayais d'utiliser un fichier image de version du noyau 4.1 avec un noyau 3.18.
Maintenant que j'utilise l'image appropriée, cela fonctionne.
Merci!
Edit: Pour que cela fonctionne, c'est assez simple: prenez l'image à partir de https://github.com/dhruvvyas90/qemu-rpi-kernel/ , puis téléchargez l'image Raspian correspondante que vous souhaitez sur https://www.raspberrypi.org/ téléchargements / raspbian / . Actuellement, Jessie et Wheezy sont en place aux deux endroits, mais il n'y a aucune garantie à l'avenir que le noyau approprié sera disponible sur ce site Github. Quoi qu'il en soit, je n'ai pas été aussi impressionné par la vitesse moi-même, donc je cherche à mettre un vrai Pi sur le port réseau filaire de mon ordinateur portable et à l'alimenter via une batterie auxiliaire de 5200 mAh pour téléphone portable, et à utiliser VNC sur l'ordinateur portable comme un écran.
Je n'ai pas fait travailler Jessie; c'était le problème - j'avais un noyau Wheezy et une image Jessie, mais je n'avais pas de noyau Jessie.
la source
N'hésitez pas à jeter un œil à mon noyau compatible qemu: https://github.com/diederikdehaas/raspbian-kernel
Dans les messages de validation, vous pouvez trouver des descriptions détaillées sur ce qui a été changé et comment.
La plupart d'entre eux étaient basés sur cet article: https://web.archive.org/web/20131210001638/http://xecdesign.com/compiling-a-kernel/
la source
Ubuntu 16.04, QEMU 2.9.0 -M raspi2, Raspbian 2016-05-27, noyau vanille
Pas:
Compilez QEMU 2.9.0 à partir de la source:
Téléchargez l'image et extrayez-y le noyau et les dts:
Téléchargez l'image et décompressez-la:
Montez la deuxième image de la partition. Le moyen le plus simple est:
Cela ne fonctionne qu'avec la dernière version
losetup
d'Ubuntu 16.04, d'autres méthodes sur: /ubuntu/69363/mount-single-partition-from-image-of-entire-disk-device/496576#496576Ceci imprime un périphérique en boucle, par exemple:
nous faisons donc:
Courir:
Vous pouvez ensuite vous connecter sur le terminal qui s'affiche sur votre terminal hôte.
Limitations actuelles:
-M raspi2
a été ajouté dans QEMU 2.6.0, et Ubuntu 16.04 n'a que QEMU 2.5.0, nous devons donc compiler QEMU à partir de la source. Mais ce n'est pas difficile.Ubuntu 16.04, QEMU 2.5.0, Raspbian 2016-05-27, noyau modifié
Cette méthode utilise
-M versatilepb
ce qui est présent sur la QEMU 2.5.0 d'Ubuntu 16.04.L'inconvénient est que vous devez télécharger un noyau modifié (voir Émuler avec Qemu: pourquoi le noyau supplémentaire? ), Et modifier l'image, de sorte qu'elle soit moins représentative du système réel.
Téléchargement: https://github.com/dhruvvyas90/qemu-rpi-kernel/blob/36ede073f4ccb64f60200ede36c231afe9502070/kernel-qemu-4.4.12-jessie
Nous choisissons
4.4.12
puisque c'est la version du noyau dans l'image Raspbian.Le processus pour générer cet objet blob du noyau est décrit dans le référentiel à l' adresse : https://github.com/dhruvvyas90/qemu-rpi-kernel/tree/36ede073f4ccb64f60200ede36c231afe9502070/tools
Pourquoi cette image de noyau supplémentaire est-elle nécessaire? Émuler avec Qemu: pourquoi le noyau supplémentaire?
Modifiez l'image Raspbian comme mentionné sur: https://github.com/dhruvvyas90/qemu-rpi-kernel/wiki/Emulating-Jessie-image-with-4.x.xx-kernel/0068f0c21d942b0f331e18014ff8e22c20cada5c
Sommaire:
Montez l'image comme nous l'avons fait pour le
-M raspi2
, mais utilisez la deuxième partition au lieu de la première:Modifiez l'image:
Courir:
[Échec] Ubuntu 17.04, QEMU 2.8.0 -M raspi2, Raspbian 2016-05-27, noyau vanilla
Sur ce Ubuntu plus récent, QEMU 2.8.0 est la valeur par défaut, nous n'avons donc pas besoin de compiler QEMU à partir de la source pour
-M raspi2
. Cependant, 2.8.0 se bloque au démarrage après le message:Cela montre à quel point
-M raspi2
encore instable .[Échec] Ubuntu 16.04, QEMU 2.9.0 -M raspi2, Raspbian 2017-08-16, vanilla kernel
Sur cette image plus récente, en utilisant la même méthode pour 2016-05-27, le noyau panique au démarrage avec:
bztsrc/raspi3-tutorial
Métal nu RPI3 sur QEMUhttps://github.com/bztsrc/raspi3-tutorial est un bon ensemble d'exemples qui fonctionnent uniquement sur QEMU, ultra rapide pour commencer: Comment faire une émulation QEMU pour des images de Raspberry Pi en métal nu
la source
losetup
est trop compliquée. Vous pouvez à la place simplement utiliserfdisk -l your-image.img
, puis utiliser le décalage de la partition enmount
option-o loop,offset=$((512*YOUR_OFFSET))
.La plupart des guides sont obsolètes et contiennent des liens brisés. Vous devez utiliser un noyau corrigé qui correspond à la version raspbian que vous utilisez.
Le guide suivant fonctionne à partir de février 2017. Il comprend un script qui prend en charge la modification de l'image de raspbian pour une exécution sur QEMU et partage également votre connexion réseau avec raspbian automatiquement.
https://ownyourbits.com/2017/02/06/raspbian-on-qemu-with-network-access/
la source
Vous pouvez télécharger mon noyau personnalisé (4.1.7) pour Raspbian Jessie sur mon github, polaco1782 . Suivez les instructions sur les fichiers doc.
la source
fstab
entrées mmcblk.