About us Expertises Offer References Contact us Blog
FR EN

Fiabilisez vos mises à jours Linux embarqué

La mise à jour des flottes de produits Linux embarqué représente un enjeu stratégique. Risques et solutions, découvrez comment fiabiliser et unifier votre processus de mise à jour.

25/03/2024

Nathanaël Landais

image blog OTA mise à jour flotte Linux embarqué

La mise à jour des systèmes embarqués Linux : un enjeu stratégique

Que vous soyez un industriel établi ou une startup, vous êtes inévitablement confronté à la problématique de la mise à jour de vos produits embarquant Linux. Une fois déployés, ces systèmes doivent être mis à jour régulièrement pour corriger des bugs, améliorer les performances, ajouter des fonctionnalités ou renforcer la sécurité.

Mais comment gérer efficacement les mises à jour de ces systèmes embarqués Linux ? Quelles sont les solutions disponibles sur le marché ? Quels sont les avantages et les inconvénients de chacune d'entre elles ?

Dans cet article, je vais vous présenter les différents enjeux et solutions liés à la mise à jour des systèmes embarqués Linux. Nous verrons notamment comment améliorer la robustesse de vos processus de mise à jour, pour réduire les risques, détecter les bugs et améliorer continuellement la qualité des mises à jour.


Gestion de flottes Linux embarqué

Les enjeux de la mise à jour d'un parc de systèmes embarqués

Maintenir à jour vos produits est essentiel, aussi bien pour garantir la sécurité et la fiabilité de vos systèmes, que pour permettre à vos clients de bénéficier des dernières fonctionnalités et améliorations.
Cependant, la mise à jour d'un parc de systèmes embarqués Linux est critique: le risque majeur est de bloquer complètement un système et forcer une intervention humaine pour le réparer. Un blocage sur quelques unités est un problème en soi, mais si vous avez des dizaines ou des centaines de milliers de systèmes bloqués ou à minima malfonctionnants, c'est une catastrophe.

Il est donc essentiel de faire tout le nécessaire pour que ce scénario ne se produise pas, ou que les conséquences soient minimisées.

Fiabiliser les mises à jour

Le premier élèment essentiel est de fiabiliser le processus de mise à jour. Le système doit être robuste, capable de résister à des scénarios inattendus: coupures de réseau, pannes de courant, erreurs de transmission.
Une mise à jour interrompue ou non fonctionnelle à la fin du processus doit être capable de revenir à l'état précédent sans intervention humaine.

Déployer progressivement

Le second élément, vise à mitiger les risques en cas de dysfonctionnement majeur du processus de mise à jour. Pour y parvenir, la stratégie de déploiement doit être progressive, limitant le nombre de systèmes exposés à une mise à jour potentiellement problématique.

C'est ce qu'on appel le canary testing. C’est une stratégie efficace pour mesurer l’impact sur le terrain d’une nouvelle version avec une prise de risque limitée.
La remontée de statistiques, notamment de succès ou d’échecs, permet de valider la mise à jour avant de la déployer à l’ensemble des utilisateurs.

Les bénéfices de ces stratégies

Ces stratégies présentent plusieurs avantages pour la gestion de flottes de produits embarquant Linux:

Des réels bénéfices pour vous distinguer de vos concurrents et protéger votre image.

Les solutions propriétaires pour la mise à jour des systèmes embarqués Linux

Nombreux sont les industriels developpant en interne leurs propres solutions pour gérer les mises à jour de leurs produits basés sur Linux. Ces solutions sont souvent spécifiques à chaque projet, et reposent sur des protocoles et des formats de données propriétaires.

Les raisons de ce choix peuvent être variées, parmis elle on citera: l'ancienneté de la solution (avant l'arrivée d'alternatives robustes), la méconnaissance des outils existants, la recherche d’une solution sur mesure à des problèmatiques qui semblent très spécifiques à leurs cas d’usages.

Cependant, ces solutions peuvent présenter des limites importantes, notamment en termes de coûts, de flexibilité, de sécurité et de fiabilité. En effet, ces solutions sont souvent :

Sur ce dernier point, une solution consiste à faire valider les mises à jours par un opérateur humain capable de remettre le système dans son état précedent en cas de problème. Le constructeur automobile demande un passage en concession pour mettre à jour son système, le gestionnaire de parcs de distributeurs automatique fait effectuer les mises à jours par des techniciens. C’est sans conteste une contrainte dans le déploiement de mise à jours sur d’importantes flottes de produits. Cela limite également la capacité à réagir rapidement à des failles de sécurité, ou à des bugs critiques.

Mais alors, si on veut fiabiliser son processus de mise à jour et limiter ses coûts on s'y prend comment ?

Les solutions open-source pour la mise à jour des systèmes embarqués Linux

Si vous connaissez Lenewt vous m’avez vu venir, je veux vous parler des solutions de déploiement de mise à jour open-source. Il en existe aujourd’hui plusieurs, matures et activement supportées par la communauté. Plus complètes, flexibles et robustes qu’aucune solution développée sur-mesure ne peut l’être.

SWUpdate, Mender, RAUC

Parmi les les plus populaires, on peut citer SWUpdate, Mender et RAUC. Ces solutions se basent sur le principe de la mise à jour atomique: une mise à jour est soit appliquée dans son intégralité, soit annulée.

L'implémentation de la mise à jour atomique

Dans le détails ces systèmes fonctionnent avec deux partitions (ou deux images) pour le système :
une partition active, qui contient le système en cours d’utilisation, et une partition passive, qui reçoit la nouvelle version du système.

Lors de la mise à jour, la partition passive est écrite avec la nouvelle image, puis le système redémarre sur cette partition. Si la mise à jour échoue ou si le nouveau système ne fonctionne pas correctement, il est possible de revenir à la partition active, qui contient l’ancienne version du système. Ce mécanisme permet d’éviter les risques de blocage ou de corruption du système lors de la mise à jour.

La robustesse de cette stratégie de mise à jour élimine la nécessite d’une présence humaine auprès de la machine et permet de déployer simplement des mises à jours sur de grandes flottes de produits embarquants Linux.

Des cas d'usage trop spécifiques ?

Vous trouvez votre cas spécifique incompatible avec ces solutions génériques ? Ces outils sont plus flexible que vous l’imaginez. Par exemple si vous devez mettre à jour un firmware d'un autre composant communiquant avec votre système Linux en UART, SWUpdate permet d’implémenter ce qu’ils appellent un handler, qui vous permettra même d’y intégrer d’éventuels outils et processus propriétaires dans vos packages de mise à jour.

Ces outils sont utilisées dans de grands projets industriels aux cas d’usages très variés, votre cas d’usage même spécifique est très probablement paramètrable dans ces outils.
Et si ce n’est pas le cas ? C’est open-source, vous pouvez contribuer à enrichir l’outil de votre choix, avec en bonus le support de la communauté qui pourra vous aider à intégrer votre besoin à l’outil, pour le bénéfice de tous.

Des solutions pour le déploiement différencié

Et le déploiement progressif dans tout ça, comment faire du canary testing, pour s’assurer de leur stabilité et mitiger les risques d'un dysfonctionnement majeur ?

Les trois outils mentionnés permettent d’une manière ou une autre de faire du déploiement progressif.

Conclusion

La mise à jour des systèmes embarqués Linux est un enjeu stratégique pour les entreprises, qui doivent assurer la qualité, la sécurité et la fiabilité de leurs produits, tout en répondant aux attentes et aux besoins de leurs clients. Les conséquence d’un déploiement de mises à jour ratées peuvent être importantes autant d’un point de vue financier qu’en terme d’image.

Si l’inertie et les processus en place peuvent dissuader d’abandonner les solutions de mise à jour dévéloppées en interne, ils peuvent également représenter un réel frein dans l’évolution des produits. Les solutions open-source modernes améliorent l’expérience utilisateur et rendent de nouveaux usages possibles en permettant notamment la mise à jour à distance (OTA) de flottes complètes.

Un tournant à prendre bien accompagnés. Contactez-nous pour bénéficier de nos conseils experts sur les sujets Linux embarqué.

Article précédent

Flutter peut-il remplacer Qt sur Linux embarqué ?