Yocto Project est le framework de référence pour construire des distributions Linux sur mesure destinées aux systèmes embarqués industriels. Cette formation de 4 jours vous apprend à maîtriser BitBake, écrire des recettes, gérer les layers et générer des images personnalisées pour des cibles comme le Raspberry Pi. Vous serez capable de créer un système Linux complet adapté aux contraintes spécifiques de votre matériel.
Public visé
Administrateurs Linux et/ou développeurs.
Objectifs pédagogiques
À l’issue de cette formation, vous serez capable de :
- Générer une plateforme Linux avec Yocto
Programme
Jour 1
Présentation
Découverte
- Principe
- Histoire de Yocto
- Ressources
- Les avantages de Yocto
- Les inconvénients de Yocto
- Buildroot et Yocto
- Equipes de travail et choix de la plateforme
- Recommandations
- Dépendances nécessaires sur la machine de développement
- Les composants de Yocto
- Choix d’un répertoire de travail
- Téléchargement de Poky
- Guide de migration des versions
- Autres variantes de commandes de chargement
- Contenu du répertoire Poky
Fabrication d’une image
- Initialisation de l’environnement de travail
- Organisation des répertoires build et Poky
- Attention après initialisation
- Plusieurs répertoires build
- Lancement du build
- Processus parallèle bitbake
- Les différents états des tâches Yocto
- Test de la machine virtuelle
- Vérification Busybox
- Bitbake
- Les recettes
- Le répertoire tmp
- Le fichier local.conf
- Curiosité dans l’affectation des variables
Les variables et layers
Les variables
- Les différentes passes de bitbake
- Comportement de bitbake
- Expansion des variables
- Exemples variables
- OVERRIDES avant et après la version Honister
- Autres variables
- Les drapeaux de variables
- La variable IMAGE_INSTALL
- La variable PACKAGE_EXCLUDE
Les layers
- Utilisation d’une variable en Shell
- Installation de la couche RaspberryPI
- Récapitulatif des répertoires
- Le fichier bblayers.conf
- Séquence des commandes
- Exploration du meta RaspberryPI
- Modification de la variable MACHINE dans local.conf
- Flashage de la carte
- Remarque sur cette première installation
- Eléments de vocabulaire
Jour 2
Sélection de paquets
- Paquets virtuels
- Versions de paquets
- Les features
- Modification du hostname du device
- Gestion des utilisateurs
- La directive INHERIT
- Utilisation de extrausers
- Les recettes de Poky
- Utilisation d’un package Poky
- Recherche des recettes installées avec devtool
- Les différentes sources de meta
- Ajouter une recette extérieure
- Lister les recettes appartenant à un meta
- Remarque sur l’organisation du répertoire de travail
- Création d’une image
- Customisation de my-image
- Remarques
Fabriquer des recettes
Utilisation de recettes
- Ajouter une recette
- Les types de recette
- Ajouter le fichier bb
- Renommer la recette bb
- Les fonctions de logging
- Les variables des recettes
- Les variables S et B
- La variable D
- L’entête d’une recette
- Les protocoles sources distants
- Ajout des licences
- Fichiers licences issus des sources
- Dépendances des recettes
- Exploration des dépendances
- Les tâches d’une recette
- Installation de fichiers
- La variable FILES
- Exécution de la recette
- Prise en compte de la recette
Jour 3
Code dans les recettes
- Intégrer du code Shell dans Bitbake
- Intégrer du code Python
- Insérer du code lors de la lecture des fichiers de configuration
- Processus de création de la recette
- Fabrication d’une recette avec utilisation de variables
Héritage d’une classe
- Les classes de Poky
- Les directives “include require inherit”
- Mauvaise fabrication d’une recette utilisateurs
- Problème avec EXTRA_USERS_PARAMS
- Utilisation de la classe useradd
- Recette d’ajout d’un utilisateur
Création d’une recette CMake
- Fabrication d’une recette CMake
- La variable SRC_URI
- Le contenu du fichier hello.tgz
- Construction de la recette
- Syntaxe Bitbake
- Points divers sur les recettes
Création d’autres recettes
- Ajout d’un patch dans une recette
- Extension de recette pour un fichier patch
- Utilisation de recipetool
- Fabrication d’une recette avec devtool
Jour 4
Configurations
Configuration
- Configuration de busybox
- Configuration du noyau
- La chaîne compilation SDK et la chaîne de compilation eSDK
- La chaîne de compilation croisée
- Plusieurs chaînes de compilations croisées
- Installation du meta-Qt5
- Ajout de la chaîne croisée dans QtCreator
- Mise en place du device
Les tâches
- Gestion des tâches
- Communiquer avec l’environnement de la tâche de build
- Drapeaux sur les variables
- Evénements
- Extension de classe
- Dépendances
- Dépendance récurcive et inter-dépendance
Rappel des commandes Yocto
- Commandes bitbake
- Commandes qemu
- Commandes bitbake-layers
- Commandes devtool
Travaux pratiques
- Fabrication d’une image qemu
- Prise en main de la machine ARM en qemu
- Localiser le répertoire générant busybox avant son installation
- Récupérer et installer l’image sur une carte SD pour en vérifier le bon fonctionnement sur la Raspberry
- Choisir une recette extérieure et l’installer sur qemu et/ou sur votre carte
- Ajouter un utilisateur avec mot de passe sur le device, sur les opérateurs
- Ajouter un programme C dans votre device
Modalités d’évaluation des acquis
En cours de formation, par des travaux pratiques. En fin de formation, par un questionnaire d’auto-évaluation.
Voir aussi
Vous serez peut-être intéressés par les formations suivantes :
Formation SYS-YOCTO-100 — Yocto - Systèmes embarqués sous Linux. Domaine : Systèmes. Niveau : Initiation. Durée : 4 jours (28 heures). Mots-clés : yocto, linux, embarqué, bitbake, raspberry-pi. Cylian Formation, Dijon.