Creation d'une image Yocto NXP SDK6 avec QEMU et VOSYSwitch pour NXP LS2085A-RDB
Comment transformer une plateforme NXP LS2085A-RDB en hôte de virtualisation KVM avec support de VOSYSwitch
La NXP LS2085A-RDB est une plateforme de référence pour un grand nombre de scénarios de virtualisation sur ARM dans les domaines du vCPE edge, de IoT, du Mobile Edge Computing, etc. Cependant l'image d'origine fourni par NXP ne comprend pas d'outils de virtualisation. Pour aider les développeurs qui veulent bénéficier de machines virtuelles KVM sur la LS2085A-RDB, Virtual Open Systems propose ce guide qui explique comment créer et installer un système de fichiers, comprenant une couche de virtualisation et le commutateur virtuel VOSYSwitch.
Introduction à la virtualisation de la NXP LS2085A-RDB
La plateforme NXP LS2085A-RDB dispose, entre autres, de 8 Cortex-A57 cores, d'un processeur I/O avancé à 40Gbps et d'un commutateur L2 d'un débit total de 88Gbps. Ce qui en fait un choix logique lorsqu'il s'agit de projets de cloud computing et edge vCPE sur ARMv8.
Note
Ce guide ne décrit pas la procédure pour lancer une machine virtuelle sous Linux. Cependant cette information est disponible dans le guide .
Pré-requis pour virtualiser NXP LS2085A-RDB
Ce guide est basé sur la plateforme NXP LS2085A-RDB et Ubuntu 16.04 (Xenial Xerus). Les outils logiciel sont également disponible sur d'autres distributions Linux telles que Debian et CentOS. Les autres prérequis sont :
Une station de travail avec Ubuntu 16.04 ou similaire
Un câble Ethernet pour connecter l'ordinateur à la LS2085A
Le port série "UART2" de la LS2085A-RDB connecté à la station de travail via un câble UART USB-to-RS232
Un disque SATA connecté à la LS2085A-RDB
Les firmwares NXP SDK EAR6 déjà installé sur la LS2085A-RDB (ex. U-boot, MC)
Les images ISO de NXP LS2085A-SDK-SOURCE-<DATE>-yocto.iso et LS2085A-SDK-AARCH64-CACHE-<DATE>-yocto.iso
Installation d'un environnement SDK et compilation des images kernel et système de fichiers
Cette section décrit comment installer le SDK fourni par NXP et comment l'utiliser pour compiler une image noyau et une image du système de fichiers.
build et exécution de l'image de filesystem avec NXP Yocto SDK 6
Installation des images ISO du NXP SDK 6
Avant tout, l'image ISO SOURCE doit être installée :
$ mkdir iso_image
$ sudo mount LS2085A-SDK-SOURCE-<DATE>-yocto.iso iso_image
$ cd iso_image
$ ./install
LS2085A-SDK-<DATE>-yocto: Checking ISO integrity ...
You are about to install the SDK built by Yocto
LS2085A-SDK-<DATE>-yocto
Before installing , you must read and accept the EULA
(End User License Agreement) which will be presented next.
Do you want to continue ? Y|n
Where to install LS2085A-SDK-<DATE>-yocto? (/home/<USER>)
<SDK6_INSTALL_DIRECTORY>
$ sudo umount iso_image
Ensuite, suivre la même procédure pour installer l'image ISO CACHE LS2085A-SDK-CACHE-<DATE>-yocto.iso. Le répertoire d'installation doit rester le même. Il n'y a pas besoin de recréer le répertoire iso_image.
Les commandes suivantes installent les outils et les librairies nécessaires sur la station de travail.
$ cd <SDK6_INSTALL_DIRECTORY>
$ ./poky/scripts/host-prepare.sh
Compilation du kernel et du système de fichiers
À ce stade l'environnement SDK est installé et la compilation des images peut être démarrée :
$ source ./poky/fsl-setup-poky -m ls2085ardb
$ bitbake fsl-image-virt
Une fois la compilation terminée, les images générées sont disponibles dans tmp/deploy/images/ls2085ardb :
$ cd tmp/deploy/images/ls2085ardb
U-boot étant le bootloader utilisé sur LS2085A-RDB, une image de type uImage doit être générée à partir de l'image noyau Image :
$ sudo apt-get install u-boot-tools
$ mkimage -A arm64 -O linux -T kernel -C none -a 0x80080000 -e 0x80080000 -d Image uImage
La dernière étape de la préparation des images consiste à intégrer l'uImage et le DTB dans l'image du système de fichiers :
$ mkdir filesystem
$ gunzip fsl-image-virt-ls2085ardb-<DATE>.rootfs.ext2.gz
$ sudo mount -o rw fsl-image-virt-ls2085ardb-<DATE>.rootfs.ext2 filesystem
$ sudo cp uImage filesystem/boot/
$ sudo cp Image-fsl-ls2085a-rdb.dtb filesystem/boot/fsl-ls2085a-rdb.dtb
$ sudo umount filesystem
Installer le système de fichiers pour la plateforme LS2085A et démarrer le nouveau système
Dans cette section l'image du système de fichiers créée au préalable est installée sur le disque SATA qui sera connecté à la plateforme LS2085A.
Note
Virtual Open Systems se décharge de toutes responsabilité en cas de dommages causés sur votre matériel en suivant les instructions ci-dessous. Bien que le contenu de ce guide ait été vérifié scrupuleusement, Virtual Open Systems ne peut garantir qu'une potentielle erreur d'utilisateur ne puisse endommager votre plate-forme.
Partitionnement du disque SATA et installation du système de fichiers
Une partition pour héberger le nouveau système de fichiers doit être créée sur le disque SATA. Le disque est ainsi connecté à la station de travail.
L'outil de partitionnement utilisé est parted. À ce stade, la table de partitions doit être modifiée individuellement, en tenant compte du partitionnement actuel. Il est recommandé d'allouer au moins 10Go d'espace. Le nom du disque dans les commandes ci-dessous est sda mais il est très probable que ce nom soit diffèrent et doive être adapté. Les commandes pour créer la partition pour le nouveau système de fichiers sont :
# parted
(parted) mkpart logical ext4 <START_POSITION> <END_POSITION>
(parted) print
Model: ATA KINGSTON SV300S3 (scsi)
Disk /dev/sda: 240GB
Sector size (logical/physical): 512B/512B
Partition Table: msdos
Disk Flags:
Number Start End Size Type File system Flags
1 1049kB 269MB 268MB primary fat16
2 269MB 43.2GB 42.9GB primary ext4
3 43.2GB 86.2GB 42.9GB primary ext4
4 86.2GB 240GB 154GB extended
5 86.2GB 94.8GB 8590MB logical ext4
6 94.8GB 127GB 32.2GB logical ext4
7 127GB 170GB 42.9GB logical ext4
8 170GB 180GB 10.1GB logical ext4 lba
(parted) set 8 lba off
(parted) quit
La sortie de la commande print de parted est une manière de vérifier que la partition a bien été créée et de récupérer son numéro. Cependant il faut encore mettre à jour les informations de partitionnement dans le noyau :
# partprobe
Maintenant que la partition est disponible, il est nécessaire de créer le système de fichiers :
# mkfs.ext4 -L SDK6-YOCTO /dev/sda<PARTITION_NUMBER>
Ensuite le contenu du système de fichiers précédemment crée peut être copié dans la partition nouvellement créée :
# mkdir /media/image
# mount fsl-image-virt-ls2085ardb-<DATE>.rootfs.ext2 /media/image
# mkdir /run/media/sda<PARTITION_NUMBER>
# mount /dev/sda<PARTITION_NUMBER> /run/media/sda<PARTITION_NUMBER>
# cp -r /media/image/* /run/media/sda<PARTITION_NUMBER>/
# umount /media/image
# umount /run/media/sda<PARTITION_NUMBER>
On peut remarquer que l'image contenant le système de fichiers n'est pas transférée directement sur la partition au moyen d'un outil tel que **dd**. En effet, si tel été le cas, la taille du système de fichiers serait réduite à la taille de l'image, c'est-à-dire environ 400Mo, elle devrait alors être étendue.
Enfin le disque SATA peut être connecté sur la plateforme LS2085A-RDB.
Configuration de la connexion UART à la NXP LS2085A
Une fois le système de fichiers généré, une liaison série doit être établie entre le poste de travail et la plateforme LS2085A. Pour ce faire, un outil tel que minicom doit être installé sur le poste de travail:
$ sudo apt-get install minicom
Ensuite, on peut détecter le port UART utilisé sur le poste de travail :
$ dmesg | grep ttyUSB
Un message similaire a celui-ci devrait apparaître :
[2316635.684250] usb 3-10: pl2303 converter now attached to ttyUSB0
Cela signifie que l'interface UART est accessible sur ttyUSB0. L'étape suivant est la configuration du lien dans minicom :
$ sudo minicom -D /dev/ttyUSB0
La configuration est effectuée au moyen d'un menu:
Appuyer Ctrl-A Z pour ouvrir Minicom menu
Appuyer sur O (Minicom Configuration)
Dans le menu de Configuration, selectionner "Serial port setup" avec les flèches
Configurer l'UART comme ceci:
+-----------------------------------------------------------------------+
| A - Serial port : /dev/ttyUSB0 |
| B - Lockfile location : /var/lock |
| C - Callin Program : |
| D - Callout Program : |
| E - Bps/Par/Bits : 115200 8N1 |
| F - Hardware Flow Control : No |
| G - Software Flow Control : No |
| |
| Change which setting ? |
+-----------------------------------------------------------------------+
Appuyer sur "Entrer" pour sauvegarder la configuration, ensuite sélectionner "Exit" pour quitter le menu de Minicom.
Identifiant ou inscription pour visualiser l'information complète