Créer une distribution Linux embarqué professionnelle avec Yocto Project

download Créer une distribution Linux embarqué professionnelle avec Yocto Project

If you can't read please download the document

Transcript of Créer une distribution Linux embarqué professionnelle avec Yocto Project

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