Lorsque Linus Torvalds, alors jeune étudiant de l’université d’Helsinki, publie sur Internet en juillet 1991 son premier message concernant le développement balbutiant de son noyau UNIX libre, il ne se doute certainement pas qu’à l’instar d’autres célébrités de la technologie comme Steve Jobs ou Bill Gates, il est sur le point de changer le monde.
Linux est un système d’exploitation multitâche (en fait un « noyau ») de la famille UNIX. Il fut initialement développé sur processeur de type Intel x86 (386 et 486), mais il a depuis été adapté sur un grand nombre d’architectures matérielles comme les PowerPC, ARM, SH4 et désormais des processeurs industriels spécialisés comme Nios II, MicroBlaze ou Blackfin. Au final, 31 architectures sont actuellement supportées par la version officielle du noyau Linux.
Linux est conforme au standard POSIX (pour Portable Operating System Interface for UNIX), ce qui signifie que les sources des programmes développés sous Linux peuvent être compilées facilement sur d’autres systèmes d’exploitation compatibles POSIX. Linux est également réputé pour sa grande interopérabilité, c’est-à-dire qu’il peut facilement s’intégrer dans un système informatique complexe utilisant d’autres systèmes d’exploitation propriétaires. Le code source du noyau Linux est disponible librement sur Internet, tout en respectant la licence GPL définie pour le projet GNU.
Initialement, le logiciel embarqué était un marché de « niche » totalement dominé par des éditeurs spécialisés (comme Wind River, fondée en 1981 et éditeur du système d’exploitation VxWorks), pratiquant des coûts de licence très élevés du fait du faible volume de production qui se résumait aux applications militaires, spatiales et industrielles en général. Les contraintes du logiciel embarqué sont très différentes de celles du logiciel classique, en particulier sur la notion de durée de vie du logiciel, qui est bien plus importante dans le cas de l’embarqué. À titre d’exemple, le télescope spatial Hubble utilisant le système d’exploitation VRTX tourne – au sens propre – depuis 1990.
Au début des années 2000, Linux était déjà très utilisé dans le monde des serveurs et ce directement en concurrence avec les solutions Microsoft. Déjà à l’époque, de nombreux développeurs et utilisateurs de Linux pensent que ce dernier peut être utilisé pour des solutions industrielles et embarquées grâce à sa fiabilité, la disponibilité de son code source et bien sûr son coût de redistribution nul. L’évolution de l’informatique embarquée vers le multimédia, de par la généralisation de l’accès à Internet, a depuis permis à Linux de devenir un acteur majeur dans le domaine puisque les systèmes d’exploitation embarqués propriétaires n’étaient pas adaptés à ces fonctionnalités. Les équipements d’accès à Internet comme les gateway et set-top box utilisent majoritairement des systèmes d’exploitation basés sur Linux. Citons les Freebox, Bbox et autres Livebox.
La grande majorité des smartphones (plus de 80 % à ce jour) utilise également le noyau Linux (et non le système complet) dans le système Android de Google. Récemment, l’éditeur Microsoft a annoncé qu’il se retirait peu à peu du marché de l’embarqué où il était connu pour Windows CE et autres Windows Embedded, laissant une belle place à Android pour les applications graphiques.
Notons que des set-top box récentes utilisent également le système d’exploitation Android.
La connaissance de Linux et des spécificités des versions embarquées et industrielles est désormais une nécessité pour les entreprises – et donc les ingénieurs – des domaines concernés, qu’ils soient fabricants de matériel électronique, éditeurs de logiciels, de solutions de développement ou d’exploitation.
La compréhension de cet article sera facilitée si le lecteur est déjà un utilisateur du système Linux. Cependant nous effectuerons les quelques rappels nécessaires à la compréhension pour le plus grand nombre de lecteurs. Au cours de cet article, nous décrirons la réalisation d’une véritable distribution Linux utilisable sur la célèbre carte Raspberry Pi 3, basée sur une architecture ARM.