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
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:
- Elles permettent de revenir en arrière facilement, en annulant la mise à jour si celle-ci s'avère problématique.
- Elles réduisent les risques liés aux mises à jour, en limitant le nombre d'utilisateurs exposés à une éventuelle erreur ou à un dysfonctionnement.
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 :
- Difficiles à adapter à des changements de contexte, de matériel ou de logiciel. Le développement de nouveaux produit peut nécessiter d’importantes adaptations sur l’outil interne, pas forcément formalisé en tant qu’outil mais souvent constitués de nombreux composants, plus ou moins réutilisables.
- Coûteuses à maintenir et à faire évoluer, c'est la conséquence du point précédent
- Limitées aux cas d’usage essentiels. Rares sont les solutions sur-mesure à proposer des mises à jours résistants aux scénarios inattendus: coupures de réseau, les pannes de courant ou les erreurs de transmission. Le résultat de ces scénarios pouvant se concrétiser par un blocage du système.
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.
- Mender permet de créer des campagnes de mise à jour, et de suivre les statistiques de déploiement et de performance.
- SWUpdate et RAUC peuvent être associé à hawkBit pour des résultats similaires.
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é.