Exécution de plusieurs systèmes d'exploitation sur le même processeur Embedded - Comment les équipementiers peuvent-ils surmonter la crise de la pénurie de puces ?

À mesure que la technologie progresse, notamment dans les secteurs de l'automobile, de l'électronique grand public et de la médecine, les puces sont embedded dans presque tous les aspects de la vie quotidienne, de l'infotainment automobile à l'écran chirurgical intelligent pour la salle d'opération. En raison de la pandémie, un ralentissement de la fabrication des semi-conducteurs a entraîné une pénurie de puces prévue jusqu'à la fin de 2023. Pourtant, le problème persiste et interfère avec la production de technologies courantes. À mesure que d'autres pays lèvent les restrictions et que l'économie reprend, les fabricants d'appareils Embedded et d'autres technologies peuvent également revenir à la normale. Mais les conditions post-pandémiques ont entraîné une pénurie de puces, limitant la capacité des fabricants à construire et à distribuer des produits. Pour les ingénieurs, les chefs de produit et les développeurs, cela peut sembler un obstacle difficile à franchir, mais il existe des solutions de rechange : la virtualisation et les conteneurs. Ces deux solutions peuvent être utilisées dans les systèmes Linux embedded afin de prendre en charge plusieurs systèmes d'exploitation et de respecter les délais de déploiement de vos applications.

Conteneurs et Embedded Linux

L'utilisation d'un environnement conteneurisé dans embedded Linux est différente de ses homologues de bureau en raison des ressources limitées sur les systèmes embedded . Les conteneurs sont présentés comme une option légère et plus souple que l'hyperviseur, et les développeurs peuvent isoler les applications des autres qui s'exécutent sur le même système. Bien qu'ils soient différents de chroot, les conteneurs sous Linux sont similaires : les processus sont isolés des autres applications et les applications disposent d'un espace de noms, d'une mémoire et de ressources réseau dédiés. Les conteneurs sont isolés des autres, mais ils peuvent toujours communiquer entre eux à l'aide de leur API. Cette communication entre conteneurs peut être soumise à des politiques de sécurité très fines (à peu près comparables à un pare-feu dans les technologies de réseau).

En matière de développement, les conteneurs sont beaucoup plus pratiques et polyvalents que les machines virtuelles. Un développeur peut créer un conteneur et le déployer sur différents systèmes, y compris son environnement de développement local Embedded ou le matériel cible embedded . Les configurations du conteneur et de l'environnement personnalisé sont fournies avec le conteneur, de sorte qu'il suffit de déployer le conteneur. En d'autres termes, le dispositif cible n'a plus besoin d'être configuré individuellement après le déploiement de l'application. La même chose peut être faite avec un système Linuxembedded à travers les chipsets, les émulateurs et les appareils.

Un autre avantage des conteneurs est qu'il est possible de les créer et de les supprimer en fonction des besoins, ce qui facilite grandement leur maintenance. Au lieu de gérer l'application avec les mises à jour installées, un conteneur d'application peut être supprimé et recréé pour chaque nouvelle version, mise à jour ou correctif. Ce gain de temps a fait des conteneurs un choix préférable pour de nombreux ingénieurs d'application et équipes de développement qui déploient plusieurs systèmes d'exploitation, applications et versions.

Pour les fabricants qui travaillent avec embedded Linux, les conteneurs peuvent contribuer à atténuer la lutte contre la pénurie de puces en fournissant une solution flexible de déploiement d'applications. Pour héberger plusieurs systèmes d'exploitation, les conteneurs sont toutefois utilisés en conjonction avec un hyperviseur ou une virtualisation.

Hyperviseur, machines virtuelles et Embedded Linux

Bien qu'il y ait de nombreuses raisons d'utiliser des conteneurs pour le développement, certains équipementiers préfèrent encore la virtualisation. L'un des inconvénients des conteneurs est qu'ils partagent des ressources avec le système d'exploitation sous-jacent et qu'ils doivent donc être conçus pour chaque système d'exploitation. La virtualisation est avantageuse pour les développeurs qui ont plusieurs applications devant être exécutées sur des systèmes d'exploitation individuels. Les développeurs conçoivent et testent les applications en utilisant un environnement virtualisé pour émuler chaque appareil ciblé et son système d'exploitation.

La virtualisation permet aux applications de s'exécuter sur des instances matérielles abstraites. Elle est donc avantageuse si les développeurs ont une application unique qui doit interagir avec le système d'exploitation comme si elle s'exécutait sur un matériel dédié. Cette solution peut être un peu plus "encombrante" en termes d'utilisation des ressources, mais elle permet toujours aux développeurs d'exécuter plusieurs systèmes d'exploitation sur un seul appareil. Les puces étant actuellement limitées, il s'agit d'un avantage considérable pour les fabricants qui s'efforcent de respecter les délais de déploiement sans disposer du matériel nécessaire pour leurs tests traditionnels d'ingénierie et d'assurance qualité.

Dans embedded Linux, la machine virtuelle basée sur le noyau (KVM) est couramment utilisée pour prendre en charge la virtualisation. KVM permet aux environnements virtualisés de fonctionner sur le même matériel physique, et c'est déjà une partie native du noyau Linux qui fournit aux développeurs une solution pour exécuter des instances de chaque machine virtuelle avec sa propre mémoire, son propre processeur et ses propres ressources réseau. 

Les machines virtuelles sont utilisées en plus des conteneurs lorsque plusieurs systèmes d'exploitation sont nécessaires. L'un des problèmes sous-jacents aux conteneurs est que la version du noyau du système d'exploitation doit être la même pour tous les conteneurs pris en charge. Par exemple, c'est ainsi que vous pouvez continuer à faire fonctionner un conteneur Android au-dessus du système d'exploitation Linux Embedded . Dans ce scénario compliqué et afin de dépasser ces limitations, les équipementiers utilisent parfois des machines virtuelles pour virtualiser le matériel, puis déploient des conteneurs configurés pour un système d'exploitation spécifique fonctionnant sur des instances individuelles. Les développeurs bénéficient du meilleur des deux mondes : plusieurs systèmes d'exploitation peuvent fonctionner à l'aide d'un hyperviseur, et les conteneurs peuvent être utilisés pour déployer des applications isolées.

Comment la virtualisation et les conteneurs peuvent-ils aider à faire face à la pénurie de puces ?

La pénurie de puces pourrait durer jusqu'en 2023. Cela signifie que les développeurs d'applications ciblant les systèmes embedded doivent trouver des moyens de poursuivre le développement de leurs produits avec moins de puces disponibles pour les tests. La machine virtuelle et la technologie des conteneurs permettent de tester des applications sur plusieurs systèmes d'exploitation sur un seul dispositif matériel physique. L4B Software travaille avec ces deux technologies afin que les fabricants puissent respecter les délais de développement et prendre en charge les applications embedded aussi longtemps que durera la pénurie de puces.

Nouvel appel à l'action