Académique Documents
Professionnel Documents
Culture Documents
3 Yocto
Cette partie sera consacrée à l'étude de l’un des plus principaux outils utilisables de manière
industrielle : Yocto qui est un environnement de production (Build system) permettant la
création de notre image de système Linux embarqués.
3.1.1 Historique
Le projet Yocto est un projet open source collaboratif de la Fondation Linux dont le but est
de produire des outils et des processus permettant la création de distributions Linux pour les
logiciels embarqués et IOT indépendants de l'architecture sous-jacente du matériel
embarqué.
Le projet a été annoncé par la Fondation Linux en 2010 et lancé en mars 2011, en
collaboration avec 22 organisations, dont Open Embedded, qui est un cadre d’automatisation
de construction et un environnement de compilation croisée utilisé pour créer des
distributions Linux pour les périphériques embarqués [1]
https://fr.qaz.wiki/wiki/Yocto_Project
3.1.2 Avantages
Il y avait une volonté de pouvoir moduler les applications sur différents matériels sans avoir à
investir dans un nouveau développement. Des développeurs et la Fondation Linux se sont
unis pour proposer une mécanique qui fasse abstraction du matériel, et ainsi rendre
réutilisables les développements déjà effectués.
L’utilisation de Yocto apporte de nombreux avantages :
Création de distributions sur mesure
De nombreux développements existent
Adaptation de l’existant par le mécanisme de bbappend
De nombreuses architectures matérielles supportées
Système de paquets binaires rpm, deb, et ipk
Support de plusieurs cibles simultanées dans le même répertoire de travail
Intégration de vos applications
En effet, Poky est un espace de travail qui contient à la fois l'ensemble d'outils de base
OpenEmbedded (Bitbake, Toaster, etc.), la couche de référence Linux principale (meta-poky)
et une couche BSP (meta-yocto-bsp) qui ajoute la prise en charge d'un certain nombre de
plates-formes matérielles courantes. Il contient les recettes, les fichiers de configuration, etc.
nécessaires pour construire une distribution Linux embarquée de base.
Pour des raisons historiques, une couche supplémentaire est nécessaire, qui n'est pas
conforme à la convention de dénomination «meta-xxx», mais qui est appelée openembedded-
core. Celle-ci contient des métadonnées de base communes à toutes les distributions.
Pour utiliser les outils du Yocto Project, on doit télécharger Poky et l'utiliser pour démarrer
notre propre distribution.
3.3.2 Layers
https://www.yoctoproject.org/software-overview/
L’approche de Yocto est très déférente de ses concurrents car il est basé sur une architecture
en couches (Layers) permettant de construire l’image d’une distribution de référence Poky et
d’enrichir cette image en y ajoutant d’autres couches (donc de nouvelles recettes). Seules les
couches indispensables (soit oe-core et meta-yocto) sont fournies par le projet Yocto. On peut
ensuite ajouter des couches externes liées au matériel (BSP), à des systèmes graphiques
comme Qt ou à des composants métier.
D'autres couches nous permettent d'étendre la distribution en ajoutant des applications
supplémentaires et des packages de prise en charge de la carte pour des plates-formes
matérielles spécifiques.
3.3.3 Recette
Les recettes des packages individuels sont en fait des scripts Shell Linux, utilisant un grand
ensemble de variables et de fonctions fournies par bitbake, telles que ses classes d'extension,
les fichiers de configuration utilisateur et les recettes elles-mêmes. Ils comprennent comment
obtenir, configurer, adapter et construire le code source de leurs packages.
Layer
Recette 1
Recette 1
Recette 1
3.3.4 Bitbake
Bitbake est un outil de ligne de commande écrit en Python et extensible au moyen de
«classes» Python qui lui permettent de comprendre comment effectuer des activités de
construction courantes (par exemple, télécharger le code source du package à partir de
référentiels Git distants).
3.3.5 Image et contenu
Une image présente un gros fichier qu’on transfère dans la mémoire persistante du système
embarqué (eMMC, SD, Flash, disque…) pour pouvoir fonctionner l’environnement Linux.
Elle regroupe plusieurs éléments qui sont présents dans la plupart des systèmes embarqués:
Un bootloader (chargeur) est lancé dès la mise sous tension du système et s’occupe
de placer le noyau Linux en mémoire et de l’exécuter. Exemple : U-Boot, Barebox,
Grub…
Le noyau (kernel) Linux, est le véritable cœur d’un SE qui pilote les différentes
ressources matérielles comme le processeur, mémoire, périphériques …, pour les
mettre à disposition des applications. Sur certaines architectures, le kernel
s’accompagne d’un device tree(dtb), qui présente un fichier de description du matériel
existant lorsque ce dernier n’est pas détectable automatiquement.
Le root filesystem souvent abrégé rootfs, une arborescence contenant l’ensemble des
fichiers nécessaires pour le fonctionnement du système (exécutables, bibliothèques,
fichiers de configuration, scripts de lancement, fichiers de données, etc.). Le rootfs est
généralement représenté par une archive «.tar» ou une image binaire du contenu de la
partition principale.