<div class='slidealt'>Expérimentez des extensions de <a title='virtualisation pour plateformes hétérogènes à base de processeurs ARM' href='/fr/produits/'>virtualisation KVM</a></div> <div class='slidealt'>Faites appelle à des <a title='services de full virtualisation pour kvm sur coeur ARM' href='/fr/services/'>services de virtualisation sur mesure</a></div> <div class='slidealt'>Virtualisation KVM des E/S's pour coeurs ARMv7, ARMv8 <a title='extensions de virtualisation de plateforme VFIO des E/S par kvm sur arm en logiciel libre' href='/fr/solutions/guides/vfio-sur-arm/'>par extensions VFIO/IOMMU</a></div> <div class='slidealt'>Projets de recherche de virtualisation <a title='kvm en logiciel libre pour ARM multicoeur' href='/fr/innovation/'>pour les systèmes embarqués et le cloud</a></div> <div class='slidealt'>Solutions de virtualisation pour systèmes <a title='solutions en logiciels libres de virtualisation pour ARMv7-ARMv8' href='/fr/solutions/'>hétérogènes multicoeur ARM</a></div>

Comment installer et utiliser KVM avec AGL sur une plate-forme à criticité mixte Renesas R-Car M3

Virtual Open Systems anime AGL EG-VIRT

Virtual Open Systems contribue activement au sein de la communauté Automotive Grade Linux (AGL) afin d'ajouter des fonctionnalités de virtualisation open source. De ce fait, la société est à l'origine de la création d'un groupe spécifique, le Virtualization Expert Group (EG-VIRT), responsable de diriger les contributions de code source de la communauté.

À l'Automotive Linux Summit 2017 (ALS-2017), Virtual Open Systems a fait une démonstration de l'intégration avec une distribution AGL de son produit de virtualization à criticité mixte, VOSYSmonitor; puis a partagée une présentation de EG-VIRT avec la communauté, ainsi que un article Virtualization: The Smart-Connected Vehicle Enabler.

L'une des premières contributions au code source de Virtual Open Systems à la virtualisation d'AGL a été d'activer l'hyperviseur KVM sur la plate-forme Renesas R-Car M3 avec le développement d'un patch, Enable Linux-based hypervisor execution in AGL, qui a été combiné avec la version "upstream" du code source d'AGL meta-rcar-gen3 yocto layer.

Ce guide présente comment exécuter des machines virtuelles avec KVM sur la version d'AGL intégrant le patch, conformément à la présentation de l'architecture dans la figure suivante:

/static/vosapp/images/guides/agl_kvm_rcar_m3/images/KVMonAGLoverview.png

Figure 1 - Vue globale de l'architecture

En section 1, la distribution AGL pour la plate-forme M3 sera téléchargée et compilée; ensuite, un binaire statique QEMU (Section 2) ainsi que l'image/rootfs de la machine virtuelle (Section 3) seront créés. Finalement, une machine virtuelle contenant Ubuntu sera exécutée dans AGL (Section 4). Ce guide ne nécessite pas d'interface graphique, toutes les commandes et les machines virtuelles peuvent être exécutées via des lignes de commande dans un terminal ou avec une connection série/SSH.

1. Compiler AGL avec le patch KVM de Virtual Open Systems

Le support de KVM pour le plate-forme Renesas R-Car M3 est déjà intégré dans la distribution open-source AGL grâce à la contribution du groupe EG-VIRT. Par conséquent, une version standard d'AGL pour la R-Car M3 est suffisante pour ce guide.

La communauté AGL fournit un guide pas à pas pour compiler une image pour les plates-formes Renesas R-Car M3 et H3. Il suffit donc de suivre ces instructions en étant vigilant de bien télécharger la "Master branch" d'AGL et de sélectionner le type de machine m3ulcb dans la section "Build for R Car Starter Kit gen3", comme montré dans l'exemple suivant:

$ repo init -u https://gerrit.automotivelinux.org/gerrit/AGL/AGL-repo
$ repo sync
$ source meta-agl/scripts/aglsetup.sh -m m3ulcb -b build agl-devel agl-demo agl-netboot agl-appfw-smack agl-localdev
$ bitbake agl-demo-platform

Cette commande télécharge et compile la dernière version AGL. Selon la configuration matérielle et la vitesse de connection, les binaires du Kernel ainsi que le système de fichier root doivent être disponible dans le répertoire build/tmp/deploy/images/m3ulcb après un certain temps.

Ensuite, à suivre les instructions de la section Booting AGL Image on R-Car Starter Kit Gen3 boards using a microSD card du guide Automotive Grade Linux afin d'installer les différents binaires dans une carte mémoire microSD qui sera ensuite connectée à la R-Car M3. A ce niveau, tout est en place pour commencer la compilation des logiciels nécessaire à ce guide.

Dans la section suivante, un Docker sera utilisé pour compiler QEMU et l'image kernel/rootfs de la machine virtuelle. Par conséquent, à vérifier l'installation de Docker, puis, exécutez la commande suivante pour créer un nouveau conteneur:

$ docker run -e CROSS_COMPILE=aarch64-linux-gnu- \
     -it -d --name agl-kvm-guide -v $PWD:/home  \
     ubuntu:17.10 /bin/bash

2. Compilation statique de QEMU pour aarch64

L'hyperviseur KVM a besoin de l'espace utilisateur de l'emulateur QEMU afin de créer le modèle d'abstraction pour les machines virtuelles. QEMU et ses dépendances ne sont pas automatiquement installés dans la distribution AGL. Dans ce cas, une image statique de QEMU va être compilée dans cette section.

Pour cela, un Docker et des scripts, préparés par Virtual Open Systems, sont utilisés. Téléchargez le script dans l'environnement de travail, puis, exécutez la commande suivante pour lancer son exécution dans le conteneur créé dans la section précédente:

$ docker exec -it agl-kvm-guide /home/VOSYS_qemu_static_cross_compile.sh

A la fin de l'exécution, le fichier binaire qemu-system-aarch64 doit être disponible dans le répertoire courant. Copiez ce fichier dans une clé USB qui sera nécessaire par la suite avec la R-Car M3.

Attention!

Vérifier le binaire QEMU Afin de vérifier que le binaire QEMU a été correctement compilé, il est possible d'utiliser l'outil file. Exécutez file qemu-system-aarch64 qui doit afficher: qemu-system-arm: ELF 64-bit LSB executable, ARM aarch64, version 1 (GNU/Linux), statically linked, for GNU/Linux 3.7.0, BuildID[sha1]=1b55b8b85f77cc7a9a685c9b0fbeac71921edaa5, not stripped

L'environnement est maintenant presque en place pour exécuter une machine virtuelle dans la R-Car M3. Dans la prochaine Section, l'image du kernel de la machine virtuelle ainsi que son rootfs vont être préparés.

3. Préparation de l'image kernel/rootfs de la machine virtuelle

Afin de démarrer une machine virtuelle via KVM, une image du kernel et du rootfs sont nécessaires. Ce guide propose, en particulier, de compiler un Ubuntu Xenial afin de l'exécuter dans AGL via KVM.

Identifiant ou inscription pour visualiser l'information complète