Embarquer Linux et des systèmes libres, méthodes et apports
1. Embarquer Linux et des systèmes
libres, méthodes et apports
Benoît Donnette
Expert OSSA
1
2. Sommaire
●
L'embarqué...
●
Linux embarqué
●
Impact de l'approche « Open Source »
– Coopération dans un marché concurrentiel
– Distribution, reversement
●
Méthodes et approches
– Fondamentaux, choix des éléments
– Approche traditionnelle
– Projets « prêt à embarquer »
●
2 Perspectives
3. L'embarqué...
●
Traduction approximative de « embedded »
– Vraie traduction : « enfoui »
– A l'origine : petits systèmes
– Couvre tous les ordinateurs dont la fonction
première n'est ni serveur ni poste de travail
3
4. L'embarqué...
●
Un produit souvent industriel
– Coût d'un prototype peu accessible
– Produit pour une fabrication de masse
●
Caractéristiques
– Processeurs variés
●
ARM, MIPS, i386,PowerPC
– Matériel spécifique
●
Flash, pas toujours de disque dur
4
5. Linux embarqué
●
Pourquoi le libre embarqué ?
●
Histoire de Linux embarqué
●
Linux embarqué aujourd'hui
5
6. Pourquoi le libre embarqué
●
Liberté d'exécution, de redistribution
– Coût de licence maitrisé
●
Liberté d'adaptation
– Utilisation optimale des ressources
7. Pourquoi le libre embarqué
●
Support d'une grande diversité de matériels
– Bonne adaptation au problème
●
Choix variés pour tous les éléments
– Micro-boot, OS, support, compilateurs,...
8. Histoire de Linux embarqué
●
Première version en 1991, stable en 1994 (1.0.0)
– Spécifique i386
●
Seconde version (1.2.0) en 1995, premier
portage (Alpha)
– Architectures suivantes : PPC, m68k, MIPS, ARM
●
Démarrage de la mailing-liste « Linux-ce » en 1996
9. Histoire de Linux embarqué
●
Kernel 2.6.0 en 1994
– Intégration de µClinux
– Diminution de la latence du kernel
●
But initial : serveurs SMP
●
Profite à l'aspect temps réel (aidé par quelques
patchs)
●
Scheduler O(1) sur le kernel (2.6.0), récrit lors
du Completely Fair Scheduler (2.6.23, 1997)
10. Linux embarqué aujourd'hui
●
Aujourd'hui, Linux embarqué, c'est :
– Les *box ADSL
– Des lecteurs DVD
– Des équimements informatiques personnels
●
proxies, serveurs personnels de disques,...
– Des consoles de jeu (GP2X, PlayStation 3)
– Un projet téléphone : OpenMoko
11. Impact de l'approche « Open Source »
Coopération dans un marché concurrentiel
●
Utilisation de logiciels éprouvés
●
Indépendance par rapport aux fournisseurs
●
Garantie de pérennité
●
Adaptatabilité des logiciels au produit
●
Liberté d'adapter, d'améliorer
12. Impact de l'approche « Open Source »
Distribution, reversement
●
Impacts de propriété
●
Plusieurs licences, droits et devoirs différents
●
Image
●
Transparence
●
Adhésion à une philosophie
13. Méthodes et approches
Éléments Fondamentaux d'un système embarqué
●
Bootloader
●
Outils
●
Système
●
Root file system / file systems
●
Applications
●
Maintenance
14. Méthodes et approches
Chois des éléments : Hardware
●
ARM, MIPS, PowerPC, x86, m68k...
– avec MMU (linux) ou sans (µClinux)
●
RAM : compromis souplesse-coût
●
Stockage
– Flash ? Disque dur ? NFS ? Autre ?
15. Méthodes et approches
Choix des éléments
●
Bootloader
– µboot
– Micromonitor
– D'autres
●
Outils
– Gcc, gdb, binutils
– Compilateurs dédiés
16. Méthodes et approches
Choix des éléments
●
Système
– Linux : latence élevée, mais fixe depuis le
scheduler O(1) (2.6.x) puis CFS (2007)
●
Latence ~ 1ms (worst-case)
17. Méthodes et approches
Choix des éléments
●
Système (suite)
– Versions temps-réel (RTLinux, RTAI,...)
●
latence minimale (~100µs)
●
communication entre TR et Linux parfois difficile
– Approche par virtualisation
●
paravirtualiseur TR, système TR et système Linux
18. Méthodes et approches
Choix des éléments
●
Root file system, file systems
– Diversité des FS : grande variété de choix
●
RAM : Cramfs (ro), tmpfs
●
Flash : jffs2, tout fs sur NFTL
●
unionfs
– Selon volatilité et rémanence
●
Utilisation raisonnée des ressources : RAM, Flash,
autres ressources éventuelles
– Option « noatime » fortement conseillée
19. Méthodes et approches
Choix des éléments
●
Applications : à vous de jouer...
– Serveurs personnels faible consommation
– Serveur video
– Domotique, télésurveillance
– Consolidation de systèmes enfouis
●
Maintenance
20. Méthodes et approches
Approches traditionnelles
●
Réalisation individuelle des éléments
●
Bottom-up
– On part d'une feuille blanche, on construit tout
●
Totale maitrise
●
Long et fastidieux (LFS)
●
Top-down
– Nécessite une distribution proche du résultat
voulu
21. Méthodes et approches
Approches traditionnelles
●
Organisation probable : 1 équipe par élément
– Chaque élément peut être isolé et parfois figé
indépendamment des autres (microboot,
compilateur)
– Nécessite la gestion de plusieurs flux vers la
communauté
22. Méthodes et approches
Approches traditionnelles
●
Premières automatisations : les outils
– Crosstool : script de génération de chaine de
compilation croisée
– Automatise la compilation de binutils, gcc et la
libc pour la cible embarquée
●
Combinaisons kernel/libc/binutils/gcc/options...
23. Méthodes et approches
Approches traditionnelles
●
Apparition de distributions source embarqué
– Embedded-gentoo : basée sur µClinux
– Défaut : nécessite un système de base capable
de compilation native
24. Méthodes et approches
Projets « prêt à embarquer »
●
Projets embarqués générés
– Approche mixte, apparue depuis fin 2006
●
Exemples : OpenEmbedded, OpenMoko
●
Prend en charge tout le processus jusqu'à
constitution de l'image à transférer
– Génère les outils, le microboot, le système et le
root file system
25. Perspectives
●
Potentiel Linux embarqué énorme
●
Des atouts importants (portabilité, empreinte)
●
Un support riche (pilote des périphériques variés)
●
Des références significatives
●
Un existant important
●
Des projets phares
●
Une consolidation industrielle
●
Une démocratisation du matériel
26. Perspectives
●
Approche Gentoo
– Compilation personnalisée
– Gestion de paquetages et dépendances
●
Compilation croisée et émulation logicielle
– Tests instantanés
– Génération du système embarqué incrémentale