Conception d’un système Linux industriel


On rencontre aujourd’hui essentiellement trois méthodes de conception pour un système industriel bâti autour de Linux.

Distribution

La première approche – la plus simple – est l’installation d’une distribution Linux (par exemple Debian, Ubuntu, Redhat, Fedora, etc.) dont on ajuste le contenu pour arriver à répondre aux besoins applicatifs voulus. Bien que facile et rapide, cette méthode est plutôt déconseillée, notamment pour les systèmes embarqués (pour en savoir plus, lire “Dois-je utiliser une distribution Linux pour mon projet ?“)

Build system

L’autre solution, que l’on préfère très souvent, est l’utilisation d’un build system qui permet de générer soi-même l’environnement complet de fonctionnement de l’application depuis les plus basses couches (bootloader, kernel, bibliothèques, utilitaires, etc.) jusqu’aux services réseau, environnements graphiques et applications métier. Au fil du temps, de nombreux build systems ont été créés, mais de nos jours, il en existe principalement deux, Buildroot et Yocto.

Ces deux systèmes fonctionnent suivant le même principe : télécharger (sous forme de fichiers source), compiler et assembler des packages sélectionnés par l’utilisateur pour produire une image prête à installer sur le système cible. Néanmoins, leurs organisations internes et leurs utilisations diffèrent sensiblement.

Buildroot

Buildroot est plus simple d’accès pour l’utilisateur débutant sur Linux embarqué. La configuration du  système cible et la sélection des packages désirés sont effectuées grâce à un menu clair et bien organisé. Les temps de téléchargement et de compilation des packages sont raisonnables.

Un utilisateur peut prendre en main Buildroot et se sentir à l’aise dans la configuration et la production d’un système embarqué en quelques jours. Notre formation “Linux embarqué avec Buildroot” permet en trois jours d’aborder les concepts et la pratique nécessaires pour produire un système Linux embarqué personnalisé en intégrant son propre code métier.

Yocto

Yocto est nettement plus complexe à apprivoiser. La personnalisation d’un système passe par la modification et l’écriture de plusieurs fichiers dans une arborescence peu intuitive. La maîtrise de l’outil Yocto nécessite un investissement en temps sensiblement plus long que Buildroot (compter quelques semaines). Notre formation “Linux embarqué avec Yocto” s’étend sur quatre jours. Elle permet de se familiariser avec tous les concepts et de pratiquer la production d’une image personnalisée. Elle fournit en outre toutes les références dont l’utilisateur aura besoin pour approfondir sa compréhension du système.

La complexité de Yocto s’accompagne d’une richesse plus grande que Buildroot. Le nombre de packages disponibles (bibliothèques, utilitaires, etc.) est plus important et le rythme de leurs mises à jour plus rapide. Bien que cela soit rarement utile pour les systèmes embarqués, Yocto propose un mécanisme de mise à jour des packages binaires sur la cible (à l’instar des distributions) en tenant compte des inter-dépendances.

On peut également considérer que Yocto est plus adapté que Buildroot pour industrialiser la production logicielle sur une gamme de plates-formes cibles.

Comment choisir ?

Le choix d’un build system dépend bien évidemment de l’environnement de travail, des utilisateurs, des cibles matérielles envisagées, mais nous pouvons globalement suggérer quelques conseils.

Si vous débutez sur Linux embarqué et si vous désirez prototyper rapidement un système en vous concentrant sur votre code applicatif, utilisez plutôt Buildroot.

Si vous désirez développer la version finale de votre produit dont le code applicatif est prêt, en optimisant la pérennité et le déploiement sur des plates-formes (voire des architectures) différentes, utilisez plutôt Yocto.

Si vous hésitez et souhaitez être conseillés pour faire le meilleur choix possible et éventuellement être accompagnés dans la réalisation de votre projet, n’hésitez pas à nous contacter !

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *