Présentation de l'outil Firmware Toolkit (DFT)

Discussions autour de Debian Firmware Toolkit (DFT)
https://github.com/wbonnet/dft
Répondre
-W.-
Messages : 42
Enregistré le : dim. mars 22, 2020 5:26 pm
Localisation : Allier

Présentation de l'outil Firmware Toolkit (DFT)

Message par -W.- »

Bonsoir,

Je me lance dans un exercice long et difficile pour moi :) essayer de présenter simplement l'outil DFT ( Debian FirmwareToolkit), ce qu’il est ce qu'il fait et ce qu'il ne fait pas.

DFT est une boite à outils servant à générer des firmware à partir d'une distribution de type Debian pour équiper des systèmes embarqués de type objets connectés ou objets autonomes. Voila les buzz word sont placés, ça c'est fait ;)

Dit comme cela, cet objectif semble au premier abord très ambitieux, trop sûrement :evil: J'attire votre attention sur le terme boite à outils servant à. Nous avons presque tous une boite ou caisse à outils chez nous.

Elle peut servir à plein de choses, et se veut pratique en proposant des outils servant à plusieurs tâches très différentes, de réparer ma machine à laver à monter une étagère d'une célèbre marque suédoise :mrgreen:

C'est ainsi qu'il faut voir DFT, comme une caisse a outils servant à assembler sur mesure unOS pour un objet connecté, plutôt de type embarqué et construit sur un cœur Debian (ou Ubuntu WIP).

DFT n'est pas une réécriture d'un système existant ou dejà proposé par les distribution citées, mais un outil différentautomatisant l'utilisation des outils des projets upstream en cherchant a les intégrer et les utiliser conformément aux standards. C'est aussi pourquoi il est parfois compliqué d'expliquer en une phrase le positionnement de l'outil, car je n(ai pas cherché à réécrire l'existant en croyant être capable de faire mieux. DFT cherche à utiliser ce qui existe, à l'ochestrer et apporte des éléments nouveaus car simplement manquant dans les distribution (ou plus modestement pas encore présent :oops: ).

Pour cela DFT s’appuie au démarrage sur deboostrap de Debian pour installer la racine du système puis sur Ansible pour l’installation des logiciels et leur configuration à l'aide d'une bibliothèque de rôles fourni par le projet et disponible sous licence Apache depuis gihub

La boite à outil DFT est écrite en python 3 et repose principalement sur Ansible mais aussi sur les commandes standards de Linux pour générer les images des systèmes intégrant noyaux et u-boot adapté à chaque carte et qui seront par la suites flashées dans l'objet mises sur unr carte SD ou démarrées par le réseau.

DFT est une chaîne d'assemblage prenant en entré des rôles ansible et une liste de des dépôts de paquets au format Debian qui serviront à fournir les paquets aux rôles.


Une des première force de l'outil apparaît ici. Il vous permet de générer une image bootable depuis n'importe quel dépôt, public ou privé, libre ou non, en installant une liste de paquets et seulement ceux-ci, définie par vos soins. Les dépendances seront installées auto-magiquement via les mécanismes standards de la distribution. Rassurez-vous il y a des exemples.

Avant d'aller plus loin une précision importante. DFT vous permet d'utiliser de générer une image, aussi bien à partir de dépôts publics que de dépôts privés ou les deux à la fois, qu'ils contiennent des logiciels sous licences libres ou propriétaires.

Le point crucial est donc de définir un ensemble de dépôts content à eux tous l'ensemble des paquets devant être installées. Il n'y a rien de magique à cela 8-) cl'outil génère les source.list utilisés lors du processus de debootstrap pour par Ansible lors de 'installation des rôles.

Ceci ne vous affranchi en rien des problématiques de licence. Simplement ce n'est pas à l'outil DFT de les gérer mais à vous. Le rôle de l'outil est d'automatiser vos installations et de générer des images système. Leur cycle de vie et leur mode de distribution est de votre ressort conformément aux licences des logiciels présents dans votre image.

Sur ce point DÛT doit être vu comme un compilateur. Un compilateur prend en entré du code et génère des binaires pour faire simple 8-) La gestion des licences du code compilé et de la distribution des binaires produits n'est pas la problématique du compilateur, mais de celui qui va l utiliser et de ce qu'il va faire des binaires et comment et à qui il va les distribuer.

DFT prend en entré des rôles Ansible et des dépôts au format Debian et produit en sortie des images système. C'est en cela qu'il est comparable à un compilateur, et que les licences sont du ressort de l'utilisateur et de celui qui distribue les binaires générés.


Puisque les dépôts officiels ne supportent pas toutes les cartes du marché, ou alors parfois sans disposer des options noyau ou ou du u-boot attendue pour votre usage, DFT propose aussi des procédures (ou manifest) de compilation) pour répondre à ce besoin.

Voila nous venons d'entrer dans la boite à outils... En effet ce n'est plus de l'assemblage de distribution , mais de la compilation et du packaging. Soit la création de paquets manquants, mais nécessaires à la production des images qui nous intéressent.


Lors de la mise au point de l'outil j'ai eu à de nombreuse reprise du faire face à des paquets manquants (à l'époque) sur certaines cartes de ma collections de boards.

Le choix s'est porté sur la création d'un mécanisme de compilation automatique des noyaux à partir d'un defconfig personnalisé et personnalisable et leur mise à disposition sur le site Armwizard.

Aujourd'hui un grand nombre de cartes du marché sont disponible (kernel et u-boot), et DFT vous offre les moyens de simplement ajouter le support de vos cartes et de vos propres noyaux customs en les injectant dans vos dépôts ajoutés à la liste utilisables par DFT dans votre environnement, sans avoir le besoin de les mettre a disposition sur des dépôts publics.


Pour produire l'image finale, DFT déroule un cycle d'installation classique d'une distribution, mais puisque c'est un framawork il vous permet d'insérer des hooks a n'importe qu'elle étape et de reprendre la main ou de récupérer l'état courant de la génération.

C'est ainsi que vous pouvez utiliser DFT pour générer vos conteneurs LXC par exemple :shock: O j'ai perdu du monde j'ai sauté une marche :o Oui je vous ai dit au début que DFT à pour but de générer des images pour des systèmes autonomes ou embarqué, alors qu'el est la point commun avec LXC ?

Et bien c'est le rootfs ! Lorsque vous créez un contenaeur LXC aprés avoir initialisé le conteneur au niveau de l'hyperviseur vous devez deployer unrootfs dedans, typiquement fait avec un debotstrap. Tien c'est la dessus que repose DFT ca tombe bien.

EEnsuite vous devrez installer des logiciels dans votre rootfs avec par exemple... Ansible0 Oh ca tombe bien, devinez ce qu'utilise DFT ? Ansible gagné ! et vous pouvez paramétrer chemin vers votre dépôts git contenant vos roles sans devoir obligatoirement les publier. Ce qui se passe sur votre infra reste sur votre infra. C'est votre responsabilité de gérer les compatibilité de licences des logiciels déployés. rien de neuf sous le soleil 8-)


Suite et fin de ce post d introduction demain matin
car il reste beaucoup de fonctionalité... ca fait toujours cela quand on vide sa caisse a outils :) ah tien j'avais ca aussi dedans ! ca tombe bien je le cherché partou

Répondre