Comment puis-je connecter une carte SD contenant un système d'exploitation Raspberry Pi à mon PC Linux et démarrer le système d'exploitation dans un émulateur?
Pourquoi VMWare ne fonctionne-t-il pas?
Quelles sont les limites de cette méthode?
Connexes: émulation sur un PC Windows
Réponses:
Oui c'est tout à fait possible. Cependant, en réalité, votre façon de penser est un peu différente.
Préambule
La carte SD contient une image du système d'exploitation. Et fonctionne en gonflant cette image lorsque l'appareil est allumé.
Comme vous le savez déjà, vous devez afficher cette image sur la carte SD afin de créer un système opérationnel. Cependant, ce que vous pouvez faire avant de flasher l’image, c’est de jouer avec QEMU , qui est un émulateur de processeur , et qui nous permet d’émuler le jeu d’instructions ARM.
De cette manière, toute modification apportée à l'image (installation, compilation, etc.) sera toujours présente une fois que vous l'aurez flashée sur la carte SD.
Je vais maintenant vous expliquer comment utiliser QEMU pour charger l'image. Je vais faire la démonstration avec l’image Arch Linux, mais le processus devrait être le même.
Utiliser QEMU
Pré-requis
Vous devrez acquérir QEMU pour votre système. QEMU ne devrait avoir qu’une seule exigence. Pour que les périphériques d’entrée fonctionnent, vous devez installer le package de développement SDL, qui devrait être disponible à partir de votre gestionnaire de packages.
Je recommande de télécharger le paquet en utilisant votre gestionnaire de paquets habituel:
Arch :
Ubuntu :
Les versions plus récentes (depuis 14.04) ont un paquet pour cela:
Pour les anciennes versions:
Construire vous-même QEMU
Alternativement, vous pouvez construire QEMU vous-même. C'est très bien si vous voulez essayer une nouvelle version, mais elle peut être lente et être préparée à de nombreuses erreurs lors de la compilation! Notez que si QEMU est créé à partir de leur site Web, il doit être compilé pour le support ARM. Vérifiez donc d’abord vos dépôts de distribution. Cela peut être fait comme ça;
Vérifiez que vous disposez du support ARM avec:
Obtention de l'image
Nous travaillons avec Arch Linux, nous allons donc utiliser l'image Arch Arm. Mais remplacez-le par ce que vous souhaitez utiliser, ou peut-être avez-vous déjà une image. Dans ce cas, ignorez cette étape.
Pour que QEMU fonctionne, nous avons également besoin de l’image du noyau (qui se trouve dans le fichier .img).
Heureusement, des images précompilées sont disponibles et vous pouvez utiliser celle d’ ici ( téléchargement direct ).
Démarrer la VM
Vous devriez maintenant avoir:
La machine virtuelle peut maintenant être démarrée à l'aide de la commande longue suivante:
la source
Ubuntu 16.04, QEMU 2.9.0 -M raspi2, Raspbian 2016-05-27, noyau vanille
Compilez QEMU 2.9.0 à partir des sources:
Téléchargez l'image et extrayez 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:
Ceci ne fonctionne qu'avec la dernière version
losetup
de Ubuntu 16.04, d’autres méthodes sont disponibles à l’ adresse suivante : https://askubuntu.com/questions/69363/mount-single-partition-from-image-of-entire-disk-device/496576#496576Ceci imprime un périphérique en boucle, par exemple:
alors nous faisons:
Courir:
Vous pouvez ensuite vous connecter sur le terminal affiché sur votre terminal hôte.
Limites 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 du code 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 le QEMU 2.5.0 d’Ubuntu 16.04.L'inconvénient est que vous devez télécharger un noyau modifié (voir Emulation avec Qemu: pourquoi le noyau supplémentaire? ) Et modifier l'image afin 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 permettant de générer ce blob de 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? Emulation avec Qemu: pourquoi le noyau supplémentaire?
Modifiez l'image Raspbian comme indiqué à l' adresse : https://github.com/dhruvvyas90/qemu-rpi-kernel/wiki/Emulating-Jessie-image-with-4.x.xx-kernel/0068f0c21d942b0f331e18014ff8e22c20cadac
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:Modifier l'image:
Courir:
[Echec] Ubuntu 17.04, QEMU 2.8.0 -M raspi2, Raspbian 2016-05-27, noyau vanille
Sur cette nouvelle Ubuntu, QEMU 2.8.0 est la valeur par défaut, il n’est donc pas nécessaire 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 l'instabilité
-M raspi2
est encore.[Echec] Ubuntu 16.04, QEMU 2.9.0 -M raspi2, Raspbian 2017-08-16, noyau vanille
Sur cette nouvelle image, en utilisant la même méthode que pour le 27/05/2016, le noyau panique au démarrage avec:
bztsrc/raspi3-tutorial
RPI3 métal nu sur QEMUhttps://github.com/bztsrc/raspi3-tutorial est une bonne série d'exemples qui fonctionnent uniquement avec QEMU, un démarrage ultra-rapide sur: Comment émuler QEMU pour des images Raspberry Pi en métal nu
la source
Vous ne pouvez pas faire ce que vous suggérez, car Raspberry Pi a une architecture de processeur différente de celle de la plupart des PC. Alors que la plupart des ordinateurs sont basés sur x86, RPi est un ordinateur basé sur ARM.
C'est la même raison que vous ne pouvez pas exécuter, par exemple, Microsoft Windows sur RPi.
VmWare ne fonctionnera pas, car il ne peut virtualiser que les systèmes d'exploitation x86 (32 bits et 64 bits). Certains émulateurs peuvent virtualiser ARM, tels que QEMU, mais ils exécutent une émulation logicielle complète sans prise en charge native de la virtualisation du processeur. Vous pouvez donc vous attendre à ce qu'ils soient assez lents.
la source
Vous pouvez facilement essayer un simulateur Raspberry Pi inclus avec l'éditeur de capteurs, de lignes de commande et de fichiers sur iotify.io. Consultez notre documentation à l' adresse https://docs.iotify.io/ pour vous familiariser avec les différents projets et systèmes d'exploitation et vous familiariser avec l'environnement de travail de Raspberry Pi.
la source