Les fichiers de configuration de Bitbake

Linux | Publié par cpb
Sep 03 2024

Lorsqu’on réalise un build pour un système Linux embarqué avec Yocto Project, de nombreux fichiers sont parcourus par l’outil Bitbake. Il n’est pas toujours simple de savoir dans quel ordre ces fichiers de configuration sont examinés, mais c’est pourtant une clé pour la bonne compréhension des opérations réalisées.

Nous allons nous intéresser ici aux fichiers de configuration et de données (distro, machine, image, recettes, etc.) pas aux fichiers python internes de Bitbake, ni aux fichiers sources, objets ou exécutables obtenus lors de la compilation des packages.

Bien sûr nous regarderons certains fichiers directement livrés avec Yocto, mais ce qui m’intéresse avant tout, c’est la connaissance des fichiers sur lesquels nous avons la possibilité d’agir, ceux que nous pouvons personnaliser avant de lancer le build.

Lire la suite de cette entrée »

Mise à jour de mon cours « Linux embarqué avec Yocto »

Embarqué, Formations, Linux, Yocto Project | Publié par cpb
Août 20 2024

J’ai mis à jour mon cours en ligne « Linux embarqué avec Yocto » (gratuit, sous licence Creative Commons CC-BY-NC) avec la dernière version long terme de Yocto Project : « Poky Scarthgap »

La première édition de ce cours datait de janvier 2020 (Poky « Zeus » ), la deuxième de 2021 (Poky « Hardknott » ) et la troisième de 2023 (Poky « Kirkstone » ).

Ce cours est destiné aux personnes souhaitant découvrir l’utilisation de Yocto pour produire des systèmes Linux embarqués robustes et fiables.

Le texte est accompagné de beaucoup de manipulations que je vous encourage à refaire vous-même pour bien prendre en main cet environnement de build (la plupart des expérimentations ne nécessite qu’un PC sous Linux).

Le cours est accessible ici : https://www.blaess.fr/christophe/yocto-lab/.

Illustration : Lake District, England (fond de carte OpenStreetMap) les versions récentes de Yocto Project sont nommées à partir de lieux de ce parc national.

Un LLM sur un Raspberry Pi

IA, Linux, Raspberry Pi | Publié par cpb
Juil 23 2024

J’aime bien de temps en temps essayer des implémentations improbables, exécuter une tâche sur une plateforme inattendue ou l’écrire dans un langage peu approprié, juste pour l’exercice.

Par exemple, il y a quelques temps, je m’étais amusé à imbriquer des émulateurs Qemu les uns dans les autres, en compilant l’émulateur central sur une machine cible tournant avec Qemu. Une autre fois nous avions réussi, avec mon fils, à implémenter un jeu de la vie de Conway en utilisant uniquement le langage LaTeX.

Avec l’engouement actuel pour l’IA et plus particulièrement les LLM (Large Language Model), j’ai été séduit par l’idée de faire fonctionner un de ces modèles sur une plateforme non prévue pour cela : un Raspberry Pi.

Lire la suite de cette entrée »

Signer ses modules kernel avec Yocto Project

Linux | Publié par cpb
Juin 25 2024

Pour des applications où l’aspect sécurité est particulièrement important, on souhaite souvent s’assurer de l’intégrité de l’espace mémoire et des activités du noyau Linux. Pour cela on vérifie que les modules chargés dynamiquement dans le noyau (les fichiers avec l’extension .ko) sont bien conformes à ceux prévus à la production du système en les signant cryptographiquement.

Si cette étape est souvent réalisée automatiquement pour les distributions Linux courantes (voir par exemple https://www.kernel.org/doc/html/latest/admin-guide/module-signing.html), elle est un peu moins simple à mettre en oeuvre pour les systèmes embarqués produits avec Yocto.

Lors d’une récente session de formation « Écriture de drivers pour Linux » que j’animais pour Logilin, un participant m’a interrogé sur les méthodes à employer pour signer les modules dans un contexte de système embarqué. Nous n’avons pas eu le temps de développer ce sujet durant cette session, mais j’ai voulu détailler ce thème dans ce petit article.

Lire la suite de cette entrée »

Utiliser Git LFS avec Yocto Kirkstone/Scarthgap

Linux | Publié par cpb
Juin 03 2024

La fonctionnalité LFS (Large File Support) permet de superviser avec git des fichiers volumineux en évitant les téléchargements longs. Lors d’une opération git clone, le fichier original est remplacé par un fichier de référence beaucoup plus petit. Le remplacement inverse par le contenu initial n’a lieu que sur demande explicite.

Les anciennes versions de Yocto Project étaient capable d’extraire automatiquement les contenus LFS, mais il semble que cette fonctionnalité ait disparue depuis la branche Kirkstone de Poky. Nous pouvons y remédier assez simple en appelant explicitement git lfs pull dans une recette. Toutefois, l’écriture de la fonction nécessaire n’est pas intuitive et s’avère plutôt intéressante.

Lire la suite de cette entrée »

Early-init, les premiers instants du réveil de Linux

Linux | Publié par cpb
Fév 19 2024

Dans beaucoup de systèmes embarqués, il est important de réaliser certaines tâches au démarrage le plus rapidement possible et dans un ordre précis. Citons par exemple l’affichage d’un écran splashscreen, le montage d’une partition de données, l’initialisation des interfaces réseau, ou la mise à l’heure du système.

Or les systèmes d’initialisation modernes, comme systemd, sont prévus pour fonctionner sur des serveurs ou des postes de travail, sur lesquels l’ordre d’exécution et la rapidité des tâches d’initialisation ne sont pas primordiaux.

Il est facile de résoudre ce problème avec un petit script, nommé early-init, que je souhaite vous présenter ici.

Lire la suite de cette entrée »

Janvier 2038 et Linux 32 bits

Linux | Publié par cpb
Fév 21 2022

Vous avez sûrement déjà entendu parler du fameux «bug de 2038» qui menace certains systèmes informatiques.

Qu’en est-il exactement et quels sont les risques encourus par les machines que nous déployons aujourd’hui ?

Lire la suite de cette entrée >>

Imbriquer des systèmes Linux avec Yocto Cooker

Embarqué, Linux, Yocto Project | Publié par cpb
Fév 03 2022

Cet article décrit un petit projet expérimental sans grande utilité, mais qui a aiguisé ma curiosité pendant quelques temps. Nous allons imbriquer les uns dans les autres des émulateurs de systèmes compilés avec Yocto Project.

Outre le challenge un peu surréaliste que cela représente, nous verrons que cette expérience permet de comprendre certaines dépendances entre packages et d’affiner une recette pour embarquer notre outil Yocto Cooker.

Lire la suite de cette entrée »

Yocto Cooker (3/3)

Embarqué, Linux, Yocto Project | Publié par cpb
Jan 27 2022

Dans les deux premiers articles de cette série, nous avons vu comment écrire un menu assez complet pour Yocto Cooker afin de produire des images pour diverses plateformes.

Pour le moment nous n’avons principalement utilisé que l’action cooker cook. Il est temps de voir les autres possibilités offertes par Yocto Cooker.

Lire la suite de cette entrée »

Yocto Cooker (2/3)

Embarqué, Linux, Yocto Project | Publié par cpb
Jan 20 2022

Dans le premier article de cette série nous avons vu comment utiliser cooker pour produire une image avec Yocto Project en ne renseignant qu’un seul fichier : le menu.

Dans cet article nous allons voir comment compléter ce menu pour produire plusieurs builds en une seule commande, certains d’entre-eux pouvant partager divers éléments de configuration.

Lire la suite de cette entrée »