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 »

Yocto Cooker (1/3)

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

Cette petite série de trois articles présente un outil (Yocto Cooker) qui permet d’organiser tous les fichiers nécessaires à la compilation d’un système Linux embarqué avec Yocto Project. Cet outil permet également de lancer automatiquement un ou plusieurs builds (compilation d’images complètes prêtes à installer).

Attention: cet article ne présente pas les concepts propres à Yocto Project, on pré-suppose une certaine familiarité avec cet environnement. Pour trouver une introduction à Yocto, et un tutorial complet sur son utilisation, on se reportera à l’article Linux embarqué avec Yocto Project.

Lire la suite de cette entrée »

Live Embedded Event #3

Actualité, Conférences, Embarqué, Linux, Raspberry Pi | Publié par cpb
Jan 06 2022

Depuis un peu plus d’un an, j’ai le plaisir d’organiser régulièrement avec mes confrères de Bootlin, Smile et Theoris les Live Embedded Events.

La troisième édition du Live Embedded Event aura lieu de mercredi 18 mai 2022.

Il s’agit d’une journée de conférences en-ligne, dédiées à l’embarqué (les thèmes abordés sont assez larges).

Les éditions précédentes se sont déroulées en décembre 2020 et juin 2019. Les vidéos des conférences sont disponibles sur You Tube.

Bien entendu, je vous encourage à assister à cette journée de mai 2022, en suivant les conférences (certaines en français, une majorité en anglais) en direct et en posant vos questions aux intervenants par l’intermédiaire du chat.

Je vous encourage également à participer aux conférences en présentant des projets, des technologies, des recherches, ou encore des retours d’expériences dans le domaine de l’embarqué. Le Call For Paper est disponible depuis la page web du Live Embedded Event. Il est ouvert jusqu’à mi-avril, mais n’hésitez pas à nous soumettre vos propositions le plus tôt possible.

Rendez-vous le 15 avril pour l’annonce de la liste des conférences retenues, la publication de l’agenda aura lieu la semaine suivante.