Si vous êtes passionné par l'embarqué ou l'IoT, tôt ou tard, vous tomberez sur le projet Yocto. C'est la base sur laquelle des milliers d'équipes construisent leur « propre » distribution Linux.Adapté à votre matériel et à vos besoins. Il ne s'agit pas d'une simple distribution, mais d'un ensemble d'outils, de métadonnées et de processus qui propulsent la personnalisation et la reproductibilité à un niveau supérieur.
Dans ce guide, vous comprendrez, sans plus attendre, ce qu'est Yocto et ce qu'il n'est pas, pourquoi il est si répandu, comment il est composé (OpenEmbedded, BitBake et Poky), en quoi consiste le Layer Model, quels outils gravitent autour de lui (Toaster, CROPS, eSDK...), comment une image est réellement construite, quelles options de mise à jour existent, ce qu'elle offre en termes de sécurité et comment le projet est gouverné et versionné.De plus, vous verrez des concepts et des exemples pratiques (reTerminal/Raspberry Pi) qui vous aideront à le mettre en œuvre dans votre vie quotidienne.
Qu'est-ce que le projet Yocto ?
Yocto Project est une initiative collaborative sponsorisée par la Linux Foundation qui fournit les éléments de base pour la création de distributions Linux personnalisées pour les appareils embarqués et IoT. quelle que soit l'architecture matérielle. Elle a été fondée en 2010 et a publié sa première version en 2011, soutenue par une vingtaine d'organisations et en étroite collaboration avec OpenEmbedded.
Son objectif est d'améliorer le cycle de vie des logiciels embarqués : il offre des outils, des métadonnées et des flux de travail interopérables pour rendre la construction d'un système rapide, reproductible et entièrement personnalisable. La combinaison Yocto + OpenEmbedded + BitBake décrit comment obtenir, configurer, compiler, empaqueter et assembler votre système. avec une précision chirurgicale.
En 2018, ARM et Intel ont uni leurs forces au sein de Yocto pour faciliter le partage de code dans les systèmes embarqués, renforcer la neutralité de la plateforme et le support multi-architectureAujourd’hui, le projet est utilisé dans des appareils allant des cartes modestes aux produits industriels complexes.
Yocto ne vous enferme pas : il est indépendant du fournisseur et du format de package, vous pouvez donc choisir entre deb, rpm ou ipk et suivre un modèle de construction déterministe. En plus des images d'appareils, vous pouvez générer des chaînes d'outils et des SDK personnalisés. pour le développement et le débogage d'applications.

Pourquoi utiliser Yocto en embarqué
Le grand avantage est la personnalisation. Avec Yocto, vous créez un système d'exploitation avec juste ce qu'il faut : vous éliminez ce dont vous n'avez pas besoin, réduisez la surface d'attaque et le poids, et vous ajustez les performances et la consommation. Vous ne dépendez pas des décisions d'une distribution généraliste.
Un autre avantage important est la reproductibilité. Tout (couches, recettes, configurations) peut être versionné dans les dépôts. qui permet de construire la même image dans des environnements et des moments différentsCela correspond au CI/CD et fournit une traçabilité pour l'assurance qualité et la conformité.
Il se distingue également par sa flexibilité : il prend en charge des architectures telles que Arm, x86/x86-64, MIPS ou PowerPC, et facilite le recyclage de votre distribution entre les familles de produits ou pivoter lors du changement de cartes ou de SoC.
Le soutien de la communauté et de l’industrie garantit des mises à jour et des correctifs de sécurité continus. Il existe des branches avec un support étendu (LTS) qui simplifient la vie du produit et l'entretien du terrain.
Le prix à payer ? Il faut une machine puissante et un apprentissage intensif. Pour les très petits projets ou ceux avec des délais ultra-courts, peut être excessif par rapport aux alternatives légères, mais à moyen terme, cela s'avère payant lorsque l'évolution et la maintenance comptent.
Composants clés : OpenEmbedded, BitBake et Poky

Le cœur de la construction est BitBake : un moteur qui interprète les recettes et les variables de configuration, résout les dépendances et exécute les tâches dans l'ordre (télécharger, décompresser, configurer, compiler, installer, empaqueter, assembler des images). Considérez BitBake comme un orchestrateur de style « make » mais conçu pour le monde embarqué..
OpenEmbedded (OE) fournit les métadonnées et la base de classe (OpenEmbedded-Core ou oe-core), un ensemble organisé de recettes et d'utilitaires qui sont continuellement testés qui sert de base à des centaines de couches et de projets.
Poky est la distribution de référence de Yocto : elle intègre le système de build OE, un large ensemble de recettes et une configuration « by-the-book » valide pour démarrer. Il ne s’agit pas d’une distribution de produits, mais plutôt d’un point de départ didactique et fonctionnel. qui valide l'écosystème.
Modèle en couches : collaboration et personnalisation simultanées
Le modèle de couche est la pierre angulaire. Une couche est un référentiel de recettes, de configurations et de classes associées. Les couches sont empilées et peuvent être remplacées de manière hiérarchique, qui vous permet d'hériter de ce qui est commun et d'appliquer des modifications sans casser la base.
Cette approche favorise la séparation logique de ce que vous faites : une couche BSP du fabricant, une couche GUI, une couche middleware, une couche pour votre application, une couche pour la distribution… Éviter de « tout mettre sur une seule couche » vous simplifie la vie en matière de mise à jour, de maintenance et de réutilisation. composants entre les projets.
Les couches BSP sont essentielles : elles contiennent des arborescences de périphériques, des configurations de noyau, des pilotes et des paramètres de machine pour des cibles spécifiques (par exemple, les familles Raspberry Pi). Grâce à eux, ajouter ou changer de matériel ne signifie pas tout réécrire., il suffit d'ajouter ou d'adapter la couche appropriée.
Flux de travail de construction
Le processus typique est très clair, bien qu'intense. Tout d'abord, vous définissez l'architecture, les politiques, les correctifs et les paramètres (par exemple, local.conf y bblayers.conf). BitBake récupère les sources (tarballs, git…), corrige, configure et compile en fonction des classes (autotools, cmake, etc.).
Le résultat intermédiaire est installé dans un staging temporaire et packagé au format choisi (deb, rpm, ipk). Avec ces packages, le rootfs est composé et les images finales sont générées. que vous allez flasher ou déployer sur l'appareil.
Des contrôles de cohérence, des régressions et des tests d'assurance qualité sont effectués tout au long du processus de construction ; vous pouvez également démarrer et valider des images dans QEMU. Cela réduit le cycle d’essais-erreurs sur le matériel réel., surtout dans les premiers stades.
Outils et sous-projets autour de Yocto

L'écosystème propose des utilitaires qui vous simplifient la vie. CROPS est un framework de conteneurs qui fournit des environnements de build cohérents sous Linux, Windows et macOS ; idéal pour les équipes mixtes ou pour encapsuler les dépendancesToaster est une interface Web permettant de configurer et de lancer des builds et d'afficher des métriques et des artefacts.
L'eSDK (Extensible SDK) permet aux développeurs d'applications ajouter des bibliothèques et des modifications et les réinjecter dans l'image Pratique. Il existe également une prise en charge de la configuration multiple pour créer plusieurs architectures avec une seule commande et des « builds binaires » pour inclure des binaires lorsque les sources ne sont pas disponibles.
Le système peut générer un manifeste de licence et des références au code utilisé, clé de la conformité dans des environnements réglementés ou avec des obligations de copyleft.
D'autres projets sous l'égide de l'entreprise incluent des utilitaires tels que pseudo, cross-prelink, la suite Matchbox pour les environnements graphiques légers, et bien plus encore. Il existait auparavant une intégration avec Eclipse qui a été supprimée à partir de la version 2.7. devenir obsolète face aux nouveaux outils.
Gestion des paquets et stratégies de mise à jour
La mise à jour des appareils de terrain est essentielle, et Yocto propose plusieurs options. Vous pouvez choisir de mettre à jour l'image complète (cohérence totale du système) ; distribuer les modifications au niveau du paquet pour économiser la bande passante, utilisez des modèles atomiques avec réversion (tels que OSTree) ou recourez aux deltas pour minimiser les transferts.
Il n’existe pas de solution miracle : l’image complète est idéale pour les « grands sauts », les paquets pour les changements granulaires, l’atomique pour les environnements critiques avec restauration et les deltas pour les réseaux étroits. L’avantage est que vous choisissez la stratégie qui correspond à votre produit. et votre opération.
Tests, émulation et documentation
Yocto assure la qualité. Il inclut des tests de cohérence et de régression, la prise en charge du démarrage et des tests dans QEMU, ainsi que la possibilité d'intégrer des suites de tests. Cela réduit le cycle de validation et les surprises matérielles..
La documentation est la pierre angulaire du projet. Chaque version publie des guides mis à jour et Les documents des versions actuelles et archivées sont conservés, quelque chose de très nécessaire car le comportement peut changer entre les versions.
Gouvernance et lancements
La direction technique incombe à l'architecte du projet (Richard Purdie) et à une hiérarchie de mainteneurs par composant, dans un modèle similaire à celui du noyau LinuxDu côté administratif, il existe un conseil consultatif composé de représentants des membres (fabricants de silicium, fournisseurs commerciaux basés sur Yocto, utilisateurs professionnels et consultants), ainsi que des groupes de travail pour les finances, les infrastructures, la promotion et la communauté.
Le calendrier de publication est semestriel (avril et octobre), avec des versions spécifiques pour les trois dernières branches. Cela établit un rythme prévisible que les entreprises peuvent planifier. pour mettre à jour les calques et les produits.
Versions et noms de code
Historiquement, Yocto a publié des versions identifiées par un numéro et un surnom. Vous trouverez ci-dessous une sélection représentative de versions et de dates:
| version | Nom de code | Date |
|---|---|---|
| 3.3 | Hardknott | 04/2021 |
| 3.2 | Gatesgarth | 11/2020 |
| 3.1 | Dunfell | 04/2020 |
| 3.0 | Zeus | 10/2019 |
| 2.7 | Guerrier | 04/2019 |
| 2.6 | Bruit sourd | 11/2018 |
| 2.5 | Sumo | 04/2018 |
| 2.4 | Rocko | 10/2017 |
| 2.3 | Pyro | 04/2017 |
| 2.2 | Morty | 10/2016 |
| 2.1 | Krogoth | 04/2016 |
| 2.0 | Jethro | 10/2015 |
| 1.8 | Fido | 04/2015 |
| 1.7 | Étourdi | 10/2014 |
| 1.6 | Marguerite | 04/2014 |
| 1.5 | Dora | 10/2013 |
| 1.4 | Dylan | 04/2013 |
| 1.3 | Dylan | 10/2012 |
| 1.2 | Denzil | 04/2012 |
| 1.1 | Edison | 10/2011 |
| 1.0 | Bernard | 2011 |
| 0.9 | Laverne | 2010 |
En plus des images génériques, le projet maintient une implémentation de référence appelée Poky qui intègre le système de construction OE et un ensemble complet de recettes organisées en couches, utile comme modèle fonctionnel pour un système embarqué.
Programme de marque : participants et compatibilité

Le programme de marque Yocto permet aux organisations et aux produits d'associer leur travail au projet avec deux sceaux : « Participant au projet Yocto » pour les entités qui utilisent et soutiennent publiquement Yoctoet « Yocto Project Compatible » pour les produits compatibles OE, les BSP et les couches des organisations membres.
Glossaire essentiel
- Fichiers de configuration (conf):définir les variables globales, les options utilisateur et les paramètres matériels ; ils guident ce qui est compilé et ce qui entre dans l'image pour une plate-forme spécifique.
- Recettes (.bb):décrivez la source du code, les correctifs, les dépendances et les options de construction pour générer des packages et, avec eux, l'image finale.
- Couches:Collections de recettes et de métadonnées associées ; elles permettent l'isolement des personnalisations et le support propre de plusieurs architectures.
- métadonnées:Il s'agit notamment de recettes, de configurations, de classes et de données qui contrôlent ce qui est construit et comment, y compris les références de version et de correctif.
- BitBake: moteur d'exécution qui analyse les recettes et configure l'ordre des tâches ; similaire à « make », mais orienté vers les packages et les images.
- Forfaits: artefacts générés (deb, rpm, ipk) qui sont utilisés pour monter les images rootfs et système.
- eSDK:Un SDK extensible permettant aux développeurs d'applications d'intégrer des modifications et des bibliothèques et de les tester sur le matériel cible.
- Image:forme binaire du système d'exploitation Linux à flasher ou à déployer sur le périphérique cible.
Cas d'utilisation, IoT et sélection de systèmes
Le marché de l'embarqué connaît une croissance constante : davantage d'appareils personnalisés, une plus grande variété de cartes et de SoC et, par conséquent, besoin accru de systèmes d'exploitation personnalisésLinux s’est imposé comme la norme de facto, et Yocto est idéal pour le construire « à votre façon ».
Comparé à une distribution binaire à usage général comme Debian/Ubuntu, Yocto offre un contrôle complet sur ce qui est installé, y compris les versions et les correctifs, avec reproductibilité et traçabilité. Pour les produits nécessitant un encombrement limité, une sécurité et une maintenance à long terme, est une décision pragmatique.
Les entreprises combinent Yocto avec des architectures d'opérations de terrain modernes (OTA, partitions sécurisées, rollback), intégration de pipelines CI/CD, de tests automatisés et de déploiements progressifsIl existe même des solutions qui exploitent Yocto pour étendre les capacités de pointe (par exemple, des plates-formes axées sur l'analyse, l'IA et la connectivité cloud prises en charge par Yocto).
Sécurité et bonnes pratiques
La sécurité est une priorité. Le projet est conforme aux bonnes pratiques du CII et favorise la reproductibilité des builds (les tests ont atteint environ 99,8 % sur l'image minimale du cœur). Le contrôle des dépendances, des environnements et des chaînes d’outils réduit la pollution de la construction..
Au niveau de l'exécution, vous pouvez activer SELinux pour un contrôle d'accès précis, IMA pour la mesure de l'intégrité de l'exécution et des chaînes de démarrage sécurisées qui vérifient le chargeur de démarrage, le noyau et l'initramfs. Le chiffrement du système de fichiers et la gestion des clés assurent une protection complète au repos.
De la théorie à la pratique : construire une image
La manière la plus simple est de cloner Poky, d'initialiser l'environnement, de sélectionner la machine (par exemple une cible QEMU ou un Raspberry Pi), Ajoutez les couches BSP nécessaires et exécutez BitBake sur une image de référenceLa première construction prend un certain temps, mais ensuite les constructions incrémentielles passent à toute vitesse.
Pour le matériel tel que Raspberry Pi/reTerminal, le flux typique comprend le clonage de couches telles que meta-raspberrypi, meta-oe, meta-python ou une couche du fournisseur de l'appareil, Réglez le noyau, importez des couches et des variables et créez une image spécifique (par exemple, une « image de test rpi »).
Toaster vous permet de faire la même chose via l'interface graphique : créer un projet, choisir la version, la machine (raspberrypi4-64, raspberrypi5…), Importez des calques, ajustez les variables (par exemple, les backends graphiques) et lancez la construction à partir du navigateur.. Une fois terminé, téléchargez les artefacts (par exemple un .wic.bz2) et flashez.
BitBake propose des commandes utiles pour répertorier les couches et les recettes, explorer les dépendances, ouvrir un devshell pour un package, inspecter les tâches ou nettoyer l'environnement pour reconstruireCela accélère le diagnostic en cas de problème.
Flux de travail détaillé (résumé opérationnel)
- Définit l'architecture, les politiques, les correctifs et la configuration.
- Téléchargez les polices à partir des sources déclarées.
- Décompressez, appliquez les correctifs et exécutez configure/compile selon ce qui correspond.
- Mise en scène et packaging.
- Exécutez l'assurance qualité et les contrôles.
- Publie des flux de packages.
- Génère l'image finale.
Ce schéma s'adapte aux classes et aux couches en fonction de vos composants : vous pouvez vouloir un backend graphique spécifique, vos propres modules de noyau ou un init différent. La beauté de Yocto est que tout cela est exprimé sous forme de métadonnées versionnables..
Conseils pour l'adoption d'équipe
Pour les profils provenant d'environnements Windows, investir dans les fondamentaux Unix/Linux aide beaucoup. Travaillez avec une distribution Linux sur votre poste de travail, comprenez Bash et Python et familiarisez-vous avec les chaînes d'outils croisées. accélère la courbe.
Si vous êtes nouveau dans le projet, commencez avec Poky et QEMU pour valider le flux de travail de bout en bout. Ajoutez ensuite la couche BSP matérielle réelle et votre propre couche d’application.. Automatisez les builds de conteneurs (CROPS) et CI/CD dès le départ.
Capacités de mise à niveau et d'exploitation sur le terrain
Lorsque le produit quitte l'usine, vous avez besoin d'une stratégie de mise à jour. Avec Yocto, vous pouvez choisir entre des dépôts de packages, des images complètes signées et des schémas atomiques avec rollbacks ou deltas. Choisissez en fonction de la taille de la mise à jour, de la bande passante et du risque que vous souhaitez assumer.
L’intégration de l’inventaire des licences et du code source associé est un autre élément essentiel de la conformité. Yocto génère des manifestes de licence et peut créer un lien vers le code du composant., facilitant les audits et les obligations de redistribution.
