Comment exécuter le Raspberry Pi OS dans une machine virtuelle avec Qemu et KVM

Comment exécuter le Raspberry Pi OS dans une machine virtuelle avec Qemu et KVM

Bien que de nombreux systèmes d'exploitation soient disponibles pour le Raspberry Pi, le officiel est le Raspberry Pi OS. Le système d'exploitation est conçu pour s'exécuter pour le bras Architecture, et peut être facilement installé sur la carte SD qui sera utilisée comme périphérique de stockage Raspberry Pi. Parfois, nous pouvons vouloir effectuer des tests ou essayer certaines applications sans avoir de machine à framboise PI physique; Dans ce tutoriel, nous verrons comment nous pouvons créer une machine virtuelle avec le système Raspberry Pi OS en utilisant Qemu et Kvm (Machine virtuelle du noyau).

Dans ce tutoriel, vous apprendrez:

  • Comment installer Qemu et KVM
  • Comment télécharger et vérifier l'intégrité de la dernière version Raspberry Pi OS (Buster)
  • Comment exécuter le Raspberry Pi OS dans une machine virtuelle
Comment exécuter le Raspberry Pi OS dans une machine virtuelle avec Qemu et KVM

Exigences et conventions logicielles utilisées

Exigences logicielles et conventions de ligne de commande Linux
Catégorie Exigences, conventions ou version logicielle utilisée
Système Distribution indépendante
Logiciel Qemu, Qemu-System-Arm, KVM et GIT
Autre Aucun
Conventions # - nécessite que les commandes Linux sont exécutées avec des privilèges racine soit directement en tant qu'utilisateur racine, soit par l'utilisation de Sudo commande
$ - Exige que les commandes Linux sont exécutées en tant qu'utilisateur non privilégié régulier

Installation de Qemu

Qemu, tel que défini sur le site officiel est un «émulateur de machine générique et open source et virtualiseur». Nous pouvons l'utiliser pour exécuter le système d'exploitation pour tout type de machine. Sur Linux, il est souvent utilisé en combinaison avec kvm, qui est une solution de virtualisation complète incluse dans le noyau. Pour pouvoir virtualiser notre Raspberry Pi OS, nous devons l'installer sur notre distribution préférée, ainsi que le ARME Qemu-System package, qui fournit l'émulateur de système pour BRAS systèmes. Qemu et KVM sont disponibles dans les référentiels logiciels des principales distributions Linux. Pour les installer sur Fedora, nous pouvons utiliser le DNF directeur chargé d'emballage:

$ sudo dnf install @virtualization qemu-system-arm 


Ici, nous avons installé le virtualisation groupe de packages (remarquez le @ préfixe): il comprend tout ce qui est nécessaire pour la virtualisation sur Fedora, sauf pour le ARME Qemu-System package, que nous avons installé séparément.

Sur les distributions basées sur Debian et Debian, nous pouvons lancer les commandes suivantes pour synchroniser notre distribution avec les référentiels distants et installer les packages nécessaires sur notre système:

$ sudo apt-get updat && sudo apt-get install qemu-system-arm qemu-kvm libvirt-crients libvirt-daemon-system pont-utils virtinst libvirt-daemon vir-manager 

Téléchargement et vérification de la dernière image Raspberry Pi OS

Nous pouvons télécharger la dernière version du Raspberry Pi OS à partir du site officiel de Raspberry Pi. Nous pouvons essentiellement choisir entre 3 versions du système: certains sont plus minimes, d'autres sont livrés avec un ensemble plus grand de packages et un
Bureau graphique déjà installé. Les liens de téléchargement sont les suivants:

  • Raspberry Pi OS Lite
  • Raspberry Pi OS avec bureau
  • Raspberry Pi OS avec ordinateur de bureau et packages supplémentaires

Dans ce tutoriel, nous utiliserons la version «Lite» Raspberry Pi OS. Le télécharger à l'aide d'un navigateur Web, c'est juste une question de clic sur l'un des liens fournis ci-dessus. Si nous voulons le télécharger à partir de la ligne de commande, nous pouvons plutôt utiliser des outils comme wget ou boucle:

# Utilisation de wget $ wget https: // téléchargements.tarte aux framboises.org / raspios_lite_armhf / images / raspios_lite_armhf-2021-01-12 / 2021-01-11-raspios-buster-armhf-lite.zip # Utilisation de curl $ curl -o https: // téléchargements.tarte aux framboises.org / raspios_lite_armhf / images / raspios_lite_armhf-2021-01-12 / 2021-01-11-raspios-buster-armhf-lite.zipper 

En exécutant l'une des deux commandes ci-dessus, l'image sera téléchargée dans le répertoire de travail actuel. Une fois le téléchargement terminé, nous pouvons vérifier l'intégrité de l'image en comparant son sha256sum avec celui fourni sur le site Web.
Dans notre cas, le hashsum devrait être d49d6fab1b8e533f7efc40416e98ec16019b9c034bc89c59b83d0921c2aefeef. Pour le vérifier, nous pouvons exécuter la commande suivante:

$ sha256sum 2021-01-11-raspios-buster-armhf-lite.zipper 

La commande ci-dessus, dans notre cas, renvoie le résultat suivant:

49d6fab1b8e533f7efc40416e98ec16019b9c034bc89c59b83d0921c2aefeef 2021-01-11-raspios-buster-armhf-lite.zipper 

Vous pouvez voir que les deux hashsums correspondent, donc nous sommes prêts à y aller. Ce que nous devons faire maintenant, c'est d'extraire l'image, car il est zippé. Pour ce faire, nous pouvons exécuter la commande suivante:

$ unzip 2021-01-11-raspios-buster-armhf-lite.zipper 


Étant donné que le noyau inclus dans l'image du système officiel ne peut pas être démarré directement à partir de Qemu, nous devons cloner un référentiel Git qui contient une série de noyau conçu à cet effet exact. Nous verrons comment faire cela dans la section suivante.

Obtention des noyaux prêts pour le QEMU de GitHub

Le référentiel dont nous avons besoin pour clone de GitHub est dhruvvyas90 / qemu-rpi-kernel. Tout ce que nous avons à faire est d'exécuter la commande suivante:

$ git clone https: // github.com / dhruvvyas90 / qemu-rpi-kernel 

Le processus de clonage pourrait prendre un certain temps à terminer, cela dépend de la vitesse de votre connexion Internet. Une fois le référentiel cloné, nous sommes prêts à partir. Voici son contenu:

$ ls Qemu-Rpi-Kernel Kernel-Qemu-3.dix.25-Readme wheezy.MD Kernel-Qemu-4.14.79 outils d'étirement Kernel-Qemu-4.19.50-buster polyvalent-pb-buster-5.4.51.DTB Kernel-Qemu-4.4.34-Jessie polyvalent-pb-buster.DTB Kernel-Qemu-5.4.51-buster polyvalent-pb.DTB natif-émotion 

Puisque nous voulons imiter la dernière version du Raspberry Pi OS, les fichiers dont nous avons besoin sont noyau-qemu-4.19.50 buster et polyvalent-pb-buster.dtb. Le premier est l'image réelle du noyau, la seconde est un Blob de l'arborescence de l'appareil. Quel est le but de ce fichier?

Pour décrire le matériel disponible sur un système sur une carte Raspberry Pi, Dts (Source d'arborescence de périphérique) Les fichiers sont utilisés; La version compilée de ces fichiers est appelée Dtb et stocké dans des fichiers avec le .dtb extension. Dans notre cas, nous pourrions également utiliser le noyau-qemu-5.4.51-buster, avec la polyvalent-pb-buster-5.4.51.dtb déposer.

Imiter la framboise PI OS

Avec tous les fichiers nécessaires en place, nous pouvons enfin virtualiser l'image Raspberry Pi OS. Veuillez noter que je suppose ici que le répertoire de travail est le même où nous avons téléchargé l'image du système. Avant d'exécuter la commande réelle, uniquement sur Debian, nous devons démarrer le réseau de ponts Nated par défaut, qui n'est pas démarré automatiquement; Pour ce faire, nous devons courir:

$ sudo virsh --connect = qemu: /// Système net-start défaut 

Pour le faire démarrer automatiquement, nous pouvons courir:

$ sudo virsh --Connect = qemu: // système net-itostart par défaut 

Maintenant, pour construire la machine virtuelle, nous devons exécuter la commande suivante:

$ sudo virgin-stall \ --name rpios \ --arch armv6l \ --machine polyvalent \ --cpu arm1176 \ --vcpus 1 \ --mory 256 \ --impport \ --disk 2021-01-11-raspios -buster-armhf-lite.IMG, format = brut, bus = virtio \ --network pont, source = virbr0, modèle = virtio \ --video vga \ --graphics spice \ --boot 'dtb = qemu-rpi-kernel / polyvalent-pb-buster.dtb, noyau = qemu-rpi-kernel / kernel-qemu-4.19.50-buster, kernel_args = root = / dev / vda2 panic = 1 '\ --events on_reboot = détruire 

Une fenêtre Virt-Viewer doit apparaître; Là, nous devrions être en mesure de visualiser le démarrage du Raspberry Pi OS:



Jetons un bref aperçu des options que nous avons utilisées pour construire la machine virtuelle avec le verrouillage commande; Certains sont assez évidents, d'autres un peu plus obscurs.

Tout d'abord, nous avons utilisé le --nom Option: avec lui, nous pouvons définir le nom de l'instance de machine virtuelle (elle devrait être unique). La deuxième option que nous avons utilisée est --cambre: il est nécessaire pour demander une architecture CPU non native pour l'invité
système; Si nous ne l'utilisons pas, l'architecture hôte est supposée.

Avec le --machine Option Nous passons le type de machine à imiter à Qemu: Dans ce cas, nous avons utilisé polyvalent. Avec le --CPU Option Nous configurons le modèle et les fonctionnalités du CPU exposés à l'invité; Ici, nous avons utilisé ARM1176, depuis le
Raspberry Pi est basé sur le bras architecture.

Le --VCPUS Une option est nécessaire pour définir le nombre de processeurs virtuels pour la machine invitée, une seule dans ce cas. Comme il pourrait être facilement deviné, au lieu de cela --mémoire L'option, à la place, est utilisée pour définir la mémoire sur allocation de l'invité.

Le --importer L'option est vraiment importante ici, car elle est utilisée pour demander à l'application de sauter l'installation du système d'exploitation et de simplement construire un invité autour d'une image déjà existante, qui est plus tard spécifiée avec le --disque option.

Nous utilisons --réseau Pour connecter l'invité au réseau hôte. Dans ce cas, nous nous connectons via le virbr0 Bridge, qui est créé par défaut par libvirt. Avec le --vidéo Option Nous spécifions quel type d'appareil vidéo doit être attaché à l'invité et avec --graphique Nous spécifions comment l'affichage graphique de l'invité peut être accessible: dans ce cas, nous avons utilisé pimenter, Pour utiliser le protocole avec le même nom.

Avec le --botte option Il est possible de spécifier le dtb et le noyau fichier à utiliser, mais aussi la ligne de commande du noyau avec kernel_args. Enfin, avec le --événements Option Nous spécifions les valeurs des événements pour l'invité. Dans ce cas, nous détruire pour le on_reboot événement.

Une fois la machine virtuelle démarrée, nous pouvons également le gérer graphiquement via le manager application. Nous pouvons maintenant profiter de notre Raspberry Pi OS virtualisé!

Conclusion

Dans ce didacticiel, nous avons vu comment nous pouvons exécuter une image RAPBERRY PI OS à l'aide de Qemu et KVM, sans matériel réel Raspberry Pi. Nous avons vu comment télécharger et vérifier l'image du système, comment l'extraire, comment cloner le référentiel GIT contenant le noyau et les fichiers DTB nécessaires pour démarrer l'image avec Qemu, et la commande réelle que nous devrions exécuter pour démarrer la virtualisation du système.

Tutoriels Linux connexes:

  • Une introduction à l'automatisation Linux, des outils et des techniques
  • Choses à installer sur Ubuntu 20.04
  • Choses à faire après l'installation d'Ubuntu 20.04 Focal Fossa Linux
  • Masterring Bash Script Loops
  • Introduction aux moteurs de stockage MySQL
  • Mint 20: Mieux que Ubuntu et Microsoft Windows?
  • Système linux hung? Comment s'échapper vers la ligne de commande et…
  • Fichiers de configuration Linux: 30 premiers
  • Comment vérifier une santé du disque dur à partir de la ligne de commande…
  • Ubuntu 20.04 Guide