Crer une distribution Linux embarqu professionnelle avec Yocto Project
C. Charreyre
[email protected]://www.ciose.frhttp://fr.slideshare.net/charreyre@CIOinfoindus
Licence
Attribution-Noncommercial-Share Alike 4.0 InternationalYou are free:
to Share - copy and redistribute the material in any medium or formatto Adapt - remix, transform, and build upon the materialThe licensor cannot revoke these freedoms as long as you follow the license terms.Under the following conditions:
Attribution You must give appropriate credit, provide a link to the license, and indicate if changes were made. You may do so in any reasonable manner, but not in any way that suggests the licensor endorses you or your use.NonCommercial You may not use the material for commercial purposes. ShareAlike If you remix, transform, or build upon the material, you must distribute your contributions under the same license as the original. No additional restrictions You may not apply legal terms or technological measures that legally restrict others from doing anything the license permits.
License text : http://creativecommons.org/licenses/by-nc-sa/4.0/legalcode
CIO en quelques mots
Socit d'ingnierie en systmes embarqus: lectronique et logiciel
Au service de nos clients depuis 1990
15 spcialistes en embarqu et temps rel
Expert en Linux embarqu depuis 2000, OpenEmbedded et Yocto Project depuis 2008
CA annuel : 1 500 000
Sige Saint-Etienne
Agence Marseille
Agr CIR
Prsentation C. Charreyre
Associ au sein de CIOSystmes Embarqus
Responsable des technologies Linux embarqu
Formateur Linux embarqu et outils Yocto Project
30 ans dans l'embarqu et le monde Unix / Linux
Fervent promoteur du logiciel libre
It's not an embedded Linux distribution it creates a custom one for you
Page d'accueil du site yoctoproject.org
Contexte
Les tendances en Linux embarqu
10 ans en arrire, Linux = alternative aux RTOS propritaires peu de besoins fonctionnels:Kernel et glibc
Fabrication la main d'un Root File System autour de Busybox
Application mtier dveloppe en interne
Peu de problmes de complexit et de cohrence
Ncessit d'une bonne connaissance de Linux pour crer sa distribution embarque
Linux = un OS parmi d'autres, pas de dveloppement massif
Les tendances en Linux embarqu
Aujourd'hui: forte pression pour dvelopper des smart devices dans des Time To Market rduitsMoins (plus?) de limitations de mmoire vive ou de masse
Processeurs beaucoup plus puissants
IHM riches avec audio, vido, graphisme volu (impact iOS et Androd)
Besoins importants de connectivit: Wifi, Bluetooth, 3G
Time to Market de plus en plus court
Recentrage sur la valeur ajoute
Pourquoi un outil de build?
Le challengeLinux embarqu
Logique conomique:Rduire le Time To Market et optimiser les cots
Utiliser largement des logiciels issus du riche cosystme Linux
Les assembler comme des briques modulaires, tels quels ou adapts
Le challenge= Grer la richesse et la complexit:Un monde riche et fragment aux multiples sources
Qu'il faut assembler en un ensemble cohrent : le device raliser
Mais chaque projet contributeur vit sa vie son propre rythme: cycle de vie propre, sans gestion centralise
Pourquoi un outil de build?
Pour viter cela
Pourquoi un outil de build ?
Pour grer cela
Rseau de dpendances entre composants logiciels au cycle de vie autonome
Pourquoi un outil de build ?
Dpendances de nautilus(file manager) : 62 librairies
Pourquoi un outil de build ?
Rles de l'outil:Slectionner les bons composants dans les bonnes versions (compatibilit)
Automatiser les gnrations (composants + image finale dployable)
Prendre en charge les architectures varies (cross compilation)
Au final, cration d'une distribution:Ddie et non gnraliste (plus ou moins selon type de device)
Adapte l'architecture embarque retenue
Fiable malgr sa richesse
Yocto Project
Workflow du Yocto Project
Crdit Yocto Project
Workflow du Yocto Project
Les entres:Code source des projets upstream:Fetchs depuis le site projet ou depuis un miroir Yocto Project
Formats varis: archive, rvision dans un SCM ...
Protocoles varis: http(s), ftp, svn, git
Code source local (projet interne):Archive locale ou accs un serveur SCM interne
Fichiers de configuration:Caractristiques de la machine cible (kernel, bootloader, format image, tuning compilateur ...)
Caractristiques de la distribution (paquets inclus, versions, choix entre alternatives, choix libc )
Configuration du build: machine, distribution, layers actives, format paquet ...
Workflow du Yocto Project
Le cur:Un moteur d'excution de tches crit en Python: bitbake
Excute automatiquement les tches ncessaires la fabrication de la cible fournie: composant ou image complte
Fonctionne en ligne de commande
Exemple: bitbake core-image-minimal cre l'image en une commande unique
Workflow du Yocto Project
Les sorties:Les paquets binaires des composants utiliss (formats ipk, deb ou rpm)Possibilit d'embarquer un gestionnaire de paquets sur la cible
Permet de travailler en diffrentiel pour mise jour / enrichissement
L'image finale dployable sur la cible (formats varis: tar.bz2, ext3, ubi etc....)
Un SDK exportable pour les dveloppeurs d'application
Un rcapitulatif des paquets embarqus et de leur licences
Le moteur bitbake
Un moteur crit en Python: bitbake
Un jeu de recettes pour fabriquer les paquets logiciels: fichiers texte
Des dpendances entre paquets, dcrites dans les recettes
Pour chaque recette des tches lmentaires
Calcul de l'arbre des dpendances pour fabriquer les paquets dans le bon ordre
Principales tches lmentaires
TcheRle
fetchTlchargement depuis dpt upstream
unpackExtraction dans rpertoire travail
patchApplication de patches issus des recettes
configureConfiguration
compileCompilation croise
installInstallation dans tampon local au composant
populate_licInstallation fichier(s) licence dans rpertoire deploy
packageFabrication des descriptifs des packages
populate_sysrootDploiement des paquets dans le sysroot
package_write_xxxCration du paquet au format xxx
Anatomie d'une recette
Une recette pour un ou plusieurs paquets (fractionnement pour optimisation de l'espace)
Des variables d'environnement
Des tches lmentaires implicites ou explicites (pour modifier/remplacer l'implicite): langage shell et python
Jeu de recettes gr par la communaut Yocto Project solution au problme de complexit :Cohrence entre versions de composants dpendants
Mise jour des recettes fonction des volutions upstream
Application de patches locaux quand cela est ncessaire
Anatomie d'une recette
(log4c)
SUMMARY = "a library of C for flexible logging to files, syslog and other destinations"SECTION = "libs"HOMEPAGE = "http://log4c.sourceforge.net/"LICENSE = "LGPLv2.1"LIC_FILES_CHKSUM = "file://COPYING;md5=7fbc338309ac38fefcd64b04bb903e34"PR = "r1"SRC_URI = "http://prdownloads.sourceforge.net/${PN}/log4c-${PV}.tar.gz \file://oe.patch \file://add-pkgconfig-data.patch \"inherit autotools pkgconfig binconfigSRC_URI[md5sum] = "ca5412b7515d8901714ab7892323adb6"SRC_URI[sha256sum] = "6ed40a41307c26d052667e1661437394ab00e29cd24ff2640b502ba8ab1e442b"
Anatomie d'une recette (ed)
DESCRIPTION = "a line-oriented text editor"HOMEPAGE = "http://www.gnu.org/software/ed/"BUGTRACKER = ""
LICENSE = "GPLv3+"LIC_FILES_CHKSUM = "file://COPYING;md5=f27defe1e96c2e1ecd4e0c9be8967949 \ file://ed.h;endline=20;md5=c708cda1b2e8d723d458690b7db03878 \ file://main.c;endline=24;md5=1bd039d59e04ee5f82adcc970144a2c3"
SECTION = "base"PR = "r0"
# LSB states that ed should be in /bin/bindir = "${base_bindir}"
SRC_URI = "${GNU_MIRROR}/ed/ed-${PV}.tar.gz \ file://ed-1.2-build.patch"
SRC_URI[md5sum] = "9a78593decccaa889523aa4bb555ed4b"SRC_URI[sha256sum] = "211c67b0c4aae277d34b1c5f842db1952e468e5905142868e4718ac838f08a65"
do_configure() {${S}/configure}
do_install() {oe_runmake 'DESTDIR=${D}' install}
Tches explicites
Anatomie d'une recette (image)
include recipes-sato/images/core-image-sato.bbIMAGE_FEATURES += "debug-tweaks"DISTRO_FEATURES += "pulseaudio"WEB = "web-webkit"
# Add extra image featuresEXTRA_IMAGE_FEATURES += " \ ${SOC_EXTRA_IMAGE_FEATURES} \ nfs-server \ tools-debug \ tools-profile \ qt4-pkgs \"
IMAGE_INSTALL += " \ ${SOC_IMAGE_INSTALL} \ cpufrequtils \ nano \ packagegroup-fsl-gstreamer \ packagegroup-fsl-tools-testapps \ packagegroup-fsl-tools-benchmark \ packagegroup-qt-in-use-demos \ qt4-plugin-phonon-backend-gstreamer \ qt4-demos \ qt4-examples \ fsl-gui-extrafiles \ "export IMAGE_BASENAME = "fsl-image-gui"
Slection de featuresSlection de composantslogiciels
Bon savoir
Outil historiquement en mode console:Mais apparition d'outils graphiques: Hob, Toaster
Plugin Eclipse: ADT
Prvoir beaucoup de disque et de temps CPU:Gnration de la toolchain + libc par l'outil (temps CPU)
Conservation des tapes intermdiaires optionnel mais utile trs gourmand en disque
Connaissance de Python: non obligatoire mais un + pour comprendre / dvelopper des recettes
Connaissance des standards tels que autotools, pkgconfig etc... conseille:Plus du fait des logiciels grs que de l'outil lui mme
Conclusion
Conclusion
Yocto Project fournit un framework complet pour dvelopper des distributions embarques riches et fiables:Jeu de recettes large et forte communaut d'utilisateurs
Gnration automatique d'image pr-paramtres, prtes l'installation (pas de personnalisation par admin systme)
Gnration d'un SDK exportable aux dveloppeurs
Le framework et la communaut prennent en compte la complexit et la fragmentation de l'cosystme Linux
Utilis par des fondeurs majeurs (Intel, AMD, Freescale, Texas Instruments, Broadcom, Huawei )
Fondation de distribution Linux commerciales (Wind River Linux, Enea Linux, Mentor Graphics Embedded Linux ...)
2 release par an, sur une base prvisible (Printemps et Automne)
Conclusion
Yocto Project offre un outil de packaging, la qualit globale dpend galement de la qualit des projets upstreamMais des corrections locales
Un effort de slection de projets srieux
Ne pas ngliger qu'il n'y a pas d'outil miracle:Temps de prise en main initial
Courbe d'apprentissage pour passer par les stades:J'utilise
Je comprends
Je modifie / je cre
La documentation s'est professionnalise (sur le site Web Yocto Project et distribue avec l'outil).
Possibilit de se faire accompagner par un spcialiste: rduction du Time To Market
Merci de votre attention
Questions?
texte du titre
Cliquez pour diter le format du plan de texteSecond niveau de planTroisime niveau de plan
Crer une distribution Linux embarqu professionnelle avec Yocto Project - 19 Novembre 2015
www.ciose.fr
Top Related