SlideShare une entreprise Scribd logo
Introduction à Yocto / OpenEmbedded


Pierre Ficheux (pierre.ficheux@openwide.fr)

Avril 2013




                      Yocto / OpenEmbedded    1
Présentation Open Wide


●   SSII/SSLL créée en septembre 2001 avec Thales et
    Schneider
●   Indépendante depuis 2009
●   Environ 110 salariés sur Paris, Lyon et Toulouse
    (depuis janvier 2012)
●   Industrialisation de composants open source
●   Trois activités :
        –   OW Système d'Information (Java/PHP)
        –   OW Outsourcing: hébergement
        –   OW Ingénierie: informatique industrielle




                              Yocto / OpenEmbedded                 2
Présentation PF

●   Utilisateur de logiciels libres depuis 1989
●   Utilisateur de Linux depuis 1992
●   Auteur des 4 éditions de l'ouvrage « Linux embarqué »
    (Eyrolles), 4ème édition parue en juin 2012
●   Auteur GNU Linux Magazine et Open Silicium
●   CTO Open Wide Ingénierie, enseignant EPITA




                          Yocto / OpenEmbedded                 3
Programme


●   Créer une distribution embarquée
●   Introduction à OpenEmbedded
●   Yocto Project(s)
●   Construction d'une distribution pour Raspberry Pi
●   Exemple de recette simple (Hello World)
●   Démonstration sur RPi




                         Yocto / OpenEmbedded           4
Créer une distribution
                                                       « embarquée »

●   Choisir un outil commercial (Wind River, Montavista)
●   Utiliser un outil de génération : Buildroot,
    OpenEmbedded, OpenWrt, LTIB
●   Adapter une distribution Linux classique
         –   Souvent limité au niveau matériel
         –   Empreinte mémoire et flash importante
         –   Temps de démarrage
●   Créer la distribution « from scratch »
         –   Approche plutôt « pédagogique »
         –   Difficile/impossible à industrialiser → dépendances,
               mise à jour


                          Yocto / OpenEmbedded                        5
Les principaux outils disponibles
●   OpenEmbedded
        –   Moteur écrit en Python (bitbake)
        –   Puissant mais lourd
        –   Basé sur des fichiers de configuration (?)
●   Buildroot
        –   Basé sur la commande make
        –   Au départ un démonstrateur pour uClibc
        –   Bon outil mais pas de gestion de paquets
        –   Utilisé par Google Fiber project
●   OpenWrt
        –   Dérivé de BR + gère les paquets IPK
        –   Orienté vers les IAD (Internet Access Device)
●   Autres: LTIB (Freescale), PTXdist (Pengutronix)
                           Yocto / OpenEmbedded             6
OpenEmbedded, introduction

●   OE est une « généralisation » de l'approche utilisée
    dans BR → framework de compilation croisée
●   Démarrage en 2003 pour OpenZaurus
●   Utilise un moteur écrit en Python (bitbake) et un
    ensemble de règles utilisant un principe d'héritage →
    recipe (recette = fichier .bb)
●   Gère la notion de paquet binaire, contrairement à
    BR (IPK, RPM, DEB)
●   Plusieurs milliers de paquets disponibles
●   Par contre :
         –   Peu d'interfaces de configuration (en cours)
         –   Processus de compilation plus lourd qu'avec BR
●   Très utilisé dans l'industrie (Yocto Project)
                            Yocto / OpenEmbedded              7
Yocto Project(s)

●   Le projet « chapeau » le plus important autour de OE
    (Poky, Eglibc, Hob, Matchbox, infrastructures de test,
    QA, …)
●   Contributions Intel, Wind River, Montavista, Mentor
    Graphics, … (20 participants officiels)
●   Architecte : Richard Purdie → rejoint la Linux
    Foundation en tant que « fellow » en décembre 2010
●   Organisation similaire à celle de l'équipe du noyau
    Linux
    « meritocracy presided over by a benevolent dictator »
●   Forte présence d'Intel mais l’engagement de la
    fondation Linux permet une collaboration fructueuse ;-)



                         Yocto / OpenEmbedded                  8
Yocto Project(s), suite
●   Utilisé par les éditeurs pour leurs produits commerciaux
●   Utilisé par les fabricants de matériel pour les BSP
    (Board Support Package)
●   Pas réellement une « distribution » mais fournit des
    templates et outils pour créer des distributions
         –   Support matériel (meta-intel, meta-raspberrypi)
         –   Portage de composants (meta-mono)
         –   Distributions (meta-yocto, meta-angstrom)
         –   Couches « métier » (meta-ivi) → GENIVI
    It's not an embedded Linux distribution
    – it creates a custom one for you
●   Poky est le projet « distribution de référence »
         –   Poky 8.0 (danny) succède Poky 7.0 (denzel)
             Poky 8.0 (Yocto Project 1.3 Reference Distro)
                            Yocto / OpenEmbedded                         9
Quelques distributions


●   Angstrom (meta-angstrom)
        –   Distribution basée sur OE, fait partie du projet Yocto
              depuis 9/2012
        –   Approche binaire similaire aux distributions
              classiques
●   Arago (meta-arago-distro)
        –   Fournie par TI (OMAP)
●   ELDK (meta-eldk)
        –   Embedded Linux Development Kit, Denx Software
●   De plus en plus d'acteurs du domaine se rapprochent
    de Yocto Project !
            http://git.eukrea.fr

                             Yocto / OpenEmbedded                       10
Métadonnées OE
●   Les recettes (.bb) décrivent la manière de compiler un
    paquet (ou plusieurs) pour la cible :
           $ bitbake ma_recette
●   Un .bb peut décrire UN composant mais également
    une distribution complète
●   Les classes (classes/*.bbclass) décrivent des
    règles communes aux recettes (autotools, cmake,
    module, ...)
●   Les fichiers de configuration (.conf), définissent les
    paramètres de la distribution cible (poky.conf,
    local.conf, ...)
●   Extrait de conf/local.conf
           BB_NUMBER_THREADS = "8"
           PARALLEL_MAKE = "-j 8"
           MACHINE ?= "raspberrypi"
                          Yocto / OpenEmbedded               11
Métadonnées OE, suite
●   OE est rarement utilisé seul
●   Il fournit les « métadonnées » principales (OE-Core)
    permettant de construire des distributions
●   Les autres couches (layers) sont disponibles sur :
          http://layers.openembedded.org/layerindex
●   OE fournit cependant des recettes pour des images de
    test simples (QEMU)
          $ cd meta/recipes-core/images/
          $ ls -1 *.bb
          build-appliance-image.bb
          core-image-base.bb
          core-image-minimal.bb
          core-image-minimal-dev.bb
          core-image-minimal-initramfs.bb
          core-image-minimal-mtdutils.bb

                           Yocto / OpenEmbedded                 12
Bitbake


●   L’outil bitbake permet de créer un composant OE
    allant du simple paquet à une distribution complète :
          $ bitbake vim
          $ bitbake core-image-minimal
          $ bitbake rpi-basic-image
●   Il parcourt les fichiers de configuration afin de
    déterminer quels sont les composants à construire en
    fonction des recettes
●   L’outil est équivalent à make dans le cas de Buildroot
●   Pour chaque paquet: fetch, unpack, patch, configure,
    compile, stage, install, package, ...


                         Yocto / OpenEmbedded                13
Installation Yocto/OE pour RPi

●   Installation de Poky (Yocto reference distro)
    $ git clone git://git.yoctoproject.org/poky
●   Installation de la couche RPi (meta-raspberrypi)
    $ cd poky
    $ git clone git://git.yoctoproject.org/meta-raspberrypi
●   Création du répertoire de travail
    $ . ./oe-init-build-env rpi-build
●   Ajout de la couche RPi à conf/bblayers.conf
    BBLAYERS ?= " 
      ...
      <path>/poky/meta-raspberrypi 
      "
●   Ajout du type de machine à conf/local.conf
    MACHINE ?= "raspberrypi"


                           Yocto / OpenEmbedded               14
Production d'une image de test
●   Les archives des paquets sont stockées dans rpi-
    build/downloads lors de l'étape fetch
●   La couche RPi fournit une image de test dérivée de
    core-image-minimal
    $ ls -1 meta-raspberrypi/recipes-core/images/
    rpi-basic-image.bb
    rpi-hwup-image.bb
●   On produit l'image par :
           $ bitbake rpi-basic-image
●   Par défaut, Poky utilise le format de paquet RPM (voir
    conf/local.conf)
●   L'image de la SD est produite automatiquement
●   Environ 50 mn sur un 16 CPU Xeon mais 12h sur un
    Core2 Duo...

                          Yocto / OpenEmbedded               15
Répertoires produits


●   Le répertoire rpi-build/downloads contient les
    archives téléchargées (à partager !)
●   Le répertoire rpi-build/tmp est utilisé comme
    « sortie » avec les sous-répertoires deploy et work
    $ ls -1 deploy
    images         noyau et archives (root-fs) produits
    ipk            paquets IPK
                                       $ ls -1 linux-raspberrypi
    licenses                           COPYING
    rpm            paquets RPM         generic_GPLv2




                           Yocto / OpenEmbedded                     16
Répertoires produits, suite


●   Le répertoire tmp/work fournit d'autres informations :
        –   Contenu du root-filesystem
        –   Liste des paquets installés
        –   Traces de construction
    $ ls -1 work/raspberrypi-poky-linux-gnueabi/rpi-
    basic-image/1.0-r0/
    image-version-info bin
    installed_pkgs.txt boot
                        dev
    ...                 etc log.do_populate_lic
                        ... log.do_populate_lic.13363
    rootfs              var log.do_rootfs
    temp                    log.do_rootfs.13927
                                     log.do_rootfs.16374
                                     ...


                           Yocto / OpenEmbedded                  17
Ajustement de la configuration
●   La configuration peut être ajustée à plusieurs niveaux :
         –   Configuration locale conf/local.conf
         –   Recettes (.bb)
●   Modification local.conf pour utiliser IPK
             PACKAGE_CLASSES ?= "package_ipk"
●   Ajout de « features » → x11, tools-debug, nfs-server, ...
           IMAGE_FEATURES (dans la recette)
             EXTRA_IMAGE_FEATURES (dans local.conf)
    IMAGE_FEATURES += "ssh-server-dropbear splash"
●   Suppression des répertoires de construction (work) !!
    INHERIT += "rm_work"




                              Yocto / OpenEmbedded              18
Ajustement de la configuration, suite


●   Par défaut la base RPM/IPK/DEB n'est pas disponible
    sur l'image, voir core-image-minimal.bb
    # remove not needed ipkg informations
    ROOTFS_POSTPROCESS_COMMAND += "remove_packaging_data_files ; "
●   On ne peut donc pas ajouter/supprimer des paquets
         –   Commenter la ligne précédente
         –   Ajouter à la configuration de la cible la ligne :
    {EXTRA_}IMAGE_FEATURES += "package-management"
●   La distribution RPM est deux fois plus volumineuse que
    la version IPK !
    Filesystem       Size        Used           Available Use% Mounted on
    /dev/root        290.5M      125.3M         150.2M    45%   /

    /dev/root        290.5M      53.5M          222.0M    19%   /


                               Yocto / OpenEmbedded                         19
Création du SDK

●   On peut créer la chaîne croisée et produire un script
    d'installation automatique
    $ bitbake meta-toolchain
●   On installe le SDK par :
    $ ./tmp/deploy/sdk/poky-eglibc-x86_64-arm-toolchain-1.3+snapshot-
    20130212.sh
    ...
    Extracting SDK...done
    Setting it up...done
    SDK has been successfully set up and is ready to be used.
●   Accès au SDK par :
    $ source <path>/environment-setup-armv6-vfp-poky-linux-gnueabi
    $ arm-poky-linux-gnueabi-gcc -v
    ...
    Thread model: posix
    gcc version 4.7.2 (GCC)


                               Yocto / OpenEmbedded                     20
Exemple de recette (simple)
●   L'exemple est un paquet « Hello World » basé sur un
    Makefile générique (ni Autotools, ni CMake)
●   Le fichier recette hello_1.0.bb est installé sur le
    répertoire meta-raspberry/recipes-core/hello
●   Les variables à définir sont :
        –   DESCRIPTION
        –   LICENSE
        –   LIC_FILES_CHKSUM
        –   PR        Package Release
        –   SRC_URI
        –   SRC_URI[md5sum]
        –   SRC_URI[sha256sum]


                          Yocto / OpenEmbedded              21
Exemple de recette, suite

DESCRIPTION = "Helloworld software"
LICENSE = "GPLv2"
LIC_FILES_CHKSUM =
"file://COPYING;md5=8ca43cbc842c2336e835926c2166c28b"
PR = "r0"


SRC_URI = "http://pficheux.free.fr/tmp/hello-1.0.tar.gz"


do_install() {
        oe_runmake install DESTDIR=${D}
}


SRC_URI[md5sum] = "b8fd6dac37f15cd475368ed7e23beb3b"
SRC_URI[sha256sum] =
"1fb572c6e6958856b491e4b478732e66268dc957562f4d80368d60c247
aeabef"



                      Yocto / OpenEmbedded                    22
Exemple de recette, suite


●   L'archive des sources contient les fichiers suivants :
           COPYING
           hello_oe.c
           Makefile
●   Le Makefile doit contenir un but install utilisant la
    variable DESTDIR :
           install:
              mkdir -p $(DESTDIR)/usr/bin
              cp hello_oe $(DESTDIR)/usr/bin
●   Construction du paquet par :
           $ bitbake hello



                          Yocto / OpenEmbedded                 23
Cas du paquet RPM

●   L'archive .tar.gz est chargée sur le répertoire
    downloads lors du fetch
●   La compilation s'effectue sur :
    tmp/work/armv6-vfp-poky-linux-gnueabi/hello
●   Affichage du contenu du paquet
    $ rpm -qpl tmp/deploy/rpm/armv6_vfp/hello-1.0-
    r0.armv6_vfp.rpm
    /usr
    /usr/bin
    /usr/bin/hello_oe
●   On peut installer le paquet par la commande :
    # rpm -ivh <path>/hello_1.0-r0_armv6-vfp.rpm




                          Yocto / OpenEmbedded                  24
Cas du paquet IPK
●   Affichage du contenu du paquet
    $ dpkg -c tmp/deploy/ipk/armv6-vfp/hello_1.0-r0_armv6-vfp.ipk
    drwxr-xr-x 0/0                0 2013-02-11 16:56 ./
    drwxr-xr-x 0/0                0 2013-02-11 16:56 ./usr/
    drwxr-xr-x 0/0                0 2013-02-11 16:56 ./usr/bin/
    -rwxr-xr-x 0/0           2952 2013-02-11 16:56 ./usr/bin/hello_oe
●   On installe le paquet par la commande :
    # opkg install <path>/hello_1.0-r0_armv6-vfp.ipk




                             Yocto / OpenEmbedded                       25
Options utiles

●   Pour exécuter uniquement une étape (clean, fetch, ...)
    $ bitbake -c <étape> <recette>
●   Exemples :                   Téléchargement archive

    $ bitbake -c fetch hello Idem + dépendances
    $ bitbake -c fetchall core-image-minimal
    $ bitbake -c listtasks hello
                                            Tâches à exécuter

●   Reconstruction d'un paquet
    $ bitbake -c cleansstate hello
    $ bitbake hello               Effacement du cache




                          Yocto / OpenEmbedded                              26
Conclusions


●   Yocto/OpenEmbedded est un outil puissant mais
    complexe
●   La distribution produite est plus lourde que dans le cas
    de Buildroot
●   Niveau de complexité (taille) sur la RPi
         –   Raspian (Go)
         –   Poky (100 Mo si RPM, 50 Mo si IPK)
         –   Buildroot (20 Mo)
●   On utilise Poky lorsque l'on veut une distribution
    évoluée et non un firmware !
●   Voir les démos sur la RPi


                            Yocto / OpenEmbedded               27
Bibliographie


●   http://www.openembedded.org
●   https://www.yoctoproject.org
●   http://www.yoctoproject.org/docs/1.3/poky-ref-manual/poky-ref-
    manual.html
●   http://git.yoctoproject.org/cgit/cgit.cgi/poky/tree/meta/classes/core-
    image.bbclass
●   http://www.linuxfoundation.org/news-
    media/announcements/2010/12/linux-foundation-appoints-new-fellow
●   Chapitres 11 et 15 de l'ouvrage Linux embarqué, 4ème édition sur
    http://www.editions-eyrolles.com/Livre/9782212134827/linux-embarque
●   Démonstration OE sur carte Eukréa sur http://www.youtube.com/watch?
    v=5VPB8LeCloM
●   http://www.linuxembedded.fr/2011/08/ajouter-un-package-dans-
    openembedded-en-5-minutes



                              Yocto / OpenEmbedded                           28

Contenu connexe

Tendances

Yocto une solution robuste pour construire des applications à fort contenu ap...
Yocto une solution robuste pour construire des applications à fort contenu ap...Yocto une solution robuste pour construire des applications à fort contenu ap...
Yocto une solution robuste pour construire des applications à fort contenu ap...
Christian Charreyre
 
Barre pour développeur Firefox et Eclipse
Barre pour développeur Firefox et EclipseBarre pour développeur Firefox et Eclipse
Barre pour développeur Firefox et Eclipse
Yannick Pavard
 
Open Wide : Les outils pour le développement des systemes embarques
Open Wide : Les outils pour le développement des systemes embarquesOpen Wide : Les outils pour le développement des systemes embarques
Open Wide : Les outils pour le développement des systemes embarques
Alexandre LAHAYE
 
Open Embedded un framework libre pour assurer la cohérence de son projet
Open Embedded un framework libre pour assurer la cohérence de son projetOpen Embedded un framework libre pour assurer la cohérence de son projet
Open Embedded un framework libre pour assurer la cohérence de son projet
Christian Charreyre
 
Créer sa distribution Linux embarqué avec Yocto ou Angström
Créer sa distribution Linux embarqué avec Yocto ou AngströmCréer sa distribution Linux embarqué avec Yocto ou Angström
Créer sa distribution Linux embarqué avec Yocto ou Angström
Christian Charreyre
 
Distro Recipes 2013 : Yocto / OpenEmbedded
Distro Recipes 2013 : Yocto / OpenEmbeddedDistro Recipes 2013 : Yocto / OpenEmbedded
Distro Recipes 2013 : Yocto / OpenEmbedded
Anne Nicolas
 
Conférence Shinken à SophiaConf2012 (Jean Gabès)
Conférence Shinken à SophiaConf2012 (Jean Gabès)Conférence Shinken à SophiaConf2012 (Jean Gabès)
Conférence Shinken à SophiaConf2012 (Jean Gabès)
Jean Gabès
 
Meetup Systemd vs sysvinit
Meetup Systemd vs sysvinitMeetup Systemd vs sysvinit
Meetup Systemd vs sysvinit
Christian Charreyre
 
Embarquer Linux et des systèmes libres, méthodes et apports
Embarquer Linux et des systèmes libres, méthodes et apportsEmbarquer Linux et des systèmes libres, méthodes et apports
Embarquer Linux et des systèmes libres, méthodes et apports
guest3be047
 
Licences libres et embarqué
Licences libres et embarquéLicences libres et embarqué
Licences libres et embarqué
Christian Charreyre
 
Autotools
AutotoolsAutotools
Open Wide : Les interfaces graphiques dans l'embarque
Open Wide : Les interfaces graphiques dans l'embarqueOpen Wide : Les interfaces graphiques dans l'embarque
Open Wide : Les interfaces graphiques dans l'embarque
Alexandre LAHAYE
 
Gestion des dépendances dans un projet PHP - Forum PHP 2012
Gestion des dépendances dans un projet PHP - Forum PHP 2012Gestion des dépendances dans un projet PHP - Forum PHP 2012
Gestion des dépendances dans un projet PHP - Forum PHP 2012
Jean-Marc Fontaine
 
Open Wide : les licences libres.
Open Wide : les licences libres. Open Wide : les licences libres.
Open Wide : les licences libres.
Alexandre LAHAYE
 
Logiciel Libre - Hedi Magroun - AUF - 2008
Logiciel Libre - Hedi Magroun - AUF - 2008Logiciel Libre - Hedi Magroun - AUF - 2008
Logiciel Libre - Hedi Magroun - AUF - 2008
Hedi Magroun
 
Linux - Hedi Magroun - AUF - 2008
Linux -  Hedi Magroun - AUF - 2008Linux -  Hedi Magroun - AUF - 2008
Linux - Hedi Magroun - AUF - 2008
Hedi Magroun
 
NetBSD operating system: Clean Code, Ports, Anykernel, pkgsrc and Desktop pro...
NetBSD operating system: Clean Code, Ports, Anykernel, pkgsrc and Desktop pro...NetBSD operating system: Clean Code, Ports, Anykernel, pkgsrc and Desktop pro...
NetBSD operating system: Clean Code, Ports, Anykernel, pkgsrc and Desktop pro...
jihbed
 
HOWTO Gestion porte-feuilles crypto-monnaies en environnement virtualisé
HOWTO Gestion porte-feuilles crypto-monnaies en environnement virtualiséHOWTO Gestion porte-feuilles crypto-monnaies en environnement virtualisé
HOWTO Gestion porte-feuilles crypto-monnaies en environnement virtualisé
Anthony Le Goff
 
Programmation de systèmes embarqués : BeagleBone Black et Linux embarqué
Programmation de systèmes embarqués : BeagleBone Black et Linux embarquéProgrammation de systèmes embarqués : BeagleBone Black et Linux embarqué
Programmation de systèmes embarqués : BeagleBone Black et Linux embarqué
ECAM Brussels Engineering School
 

Tendances (20)

Yocto une solution robuste pour construire des applications à fort contenu ap...
Yocto une solution robuste pour construire des applications à fort contenu ap...Yocto une solution robuste pour construire des applications à fort contenu ap...
Yocto une solution robuste pour construire des applications à fort contenu ap...
 
Barre pour développeur Firefox et Eclipse
Barre pour développeur Firefox et EclipseBarre pour développeur Firefox et Eclipse
Barre pour développeur Firefox et Eclipse
 
Open Wide : Les outils pour le développement des systemes embarques
Open Wide : Les outils pour le développement des systemes embarquesOpen Wide : Les outils pour le développement des systemes embarques
Open Wide : Les outils pour le développement des systemes embarques
 
Open Embedded un framework libre pour assurer la cohérence de son projet
Open Embedded un framework libre pour assurer la cohérence de son projetOpen Embedded un framework libre pour assurer la cohérence de son projet
Open Embedded un framework libre pour assurer la cohérence de son projet
 
Créer sa distribution Linux embarqué avec Yocto ou Angström
Créer sa distribution Linux embarqué avec Yocto ou AngströmCréer sa distribution Linux embarqué avec Yocto ou Angström
Créer sa distribution Linux embarqué avec Yocto ou Angström
 
Distro Recipes 2013 : Yocto / OpenEmbedded
Distro Recipes 2013 : Yocto / OpenEmbeddedDistro Recipes 2013 : Yocto / OpenEmbedded
Distro Recipes 2013 : Yocto / OpenEmbedded
 
Conférence Shinken à SophiaConf2012 (Jean Gabès)
Conférence Shinken à SophiaConf2012 (Jean Gabès)Conférence Shinken à SophiaConf2012 (Jean Gabès)
Conférence Shinken à SophiaConf2012 (Jean Gabès)
 
Meetup Systemd vs sysvinit
Meetup Systemd vs sysvinitMeetup Systemd vs sysvinit
Meetup Systemd vs sysvinit
 
Embarquer Linux et des systèmes libres, méthodes et apports
Embarquer Linux et des systèmes libres, méthodes et apportsEmbarquer Linux et des systèmes libres, méthodes et apports
Embarquer Linux et des systèmes libres, méthodes et apports
 
Licences libres et embarqué
Licences libres et embarquéLicences libres et embarqué
Licences libres et embarqué
 
Autotools
AutotoolsAutotools
Autotools
 
Open Wide : Les interfaces graphiques dans l'embarque
Open Wide : Les interfaces graphiques dans l'embarqueOpen Wide : Les interfaces graphiques dans l'embarque
Open Wide : Les interfaces graphiques dans l'embarque
 
Gestion des dépendances dans un projet PHP - Forum PHP 2012
Gestion des dépendances dans un projet PHP - Forum PHP 2012Gestion des dépendances dans un projet PHP - Forum PHP 2012
Gestion des dépendances dans un projet PHP - Forum PHP 2012
 
Historique
HistoriqueHistorique
Historique
 
Open Wide : les licences libres.
Open Wide : les licences libres. Open Wide : les licences libres.
Open Wide : les licences libres.
 
Logiciel Libre - Hedi Magroun - AUF - 2008
Logiciel Libre - Hedi Magroun - AUF - 2008Logiciel Libre - Hedi Magroun - AUF - 2008
Logiciel Libre - Hedi Magroun - AUF - 2008
 
Linux - Hedi Magroun - AUF - 2008
Linux -  Hedi Magroun - AUF - 2008Linux -  Hedi Magroun - AUF - 2008
Linux - Hedi Magroun - AUF - 2008
 
NetBSD operating system: Clean Code, Ports, Anykernel, pkgsrc and Desktop pro...
NetBSD operating system: Clean Code, Ports, Anykernel, pkgsrc and Desktop pro...NetBSD operating system: Clean Code, Ports, Anykernel, pkgsrc and Desktop pro...
NetBSD operating system: Clean Code, Ports, Anykernel, pkgsrc and Desktop pro...
 
HOWTO Gestion porte-feuilles crypto-monnaies en environnement virtualisé
HOWTO Gestion porte-feuilles crypto-monnaies en environnement virtualiséHOWTO Gestion porte-feuilles crypto-monnaies en environnement virtualisé
HOWTO Gestion porte-feuilles crypto-monnaies en environnement virtualisé
 
Programmation de systèmes embarqués : BeagleBone Black et Linux embarqué
Programmation de systèmes embarqués : BeagleBone Black et Linux embarquéProgrammation de systèmes embarqués : BeagleBone Black et Linux embarqué
Programmation de systèmes embarqués : BeagleBone Black et Linux embarqué
 

Similaire à Yocto oe

Prototypage IoT avec logiciel/matériel libre
Prototypage IoT avec logiciel/matériel librePrototypage IoT avec logiciel/matériel libre
Prototypage IoT avec logiciel/matériel libre
Pôle Systematic Paris-Region
 
Exposé open embedded
Exposé open embeddedExposé open embedded
Exposé open embedded
Ayoub Rouzi
 
De la chaîne de production au SI géré par des logiciels
De la chaîne de production au SI géré par des logicielsDe la chaîne de production au SI géré par des logiciels
De la chaîne de production au SI géré par des logiciels
Johan Moreau
 
Docker@linuq
Docker@linuqDocker@linuq
Docker@linuq
Sylvain Boily
 
Rapport openembedded
Rapport openembeddedRapport openembedded
Rapport openembedded
Ayoub Rouzi
 
Plateformes embarquées
Plateformes embarquéesPlateformes embarquées
Plateformes embarquées
Alexandre LAHAYE
 
PHP Composer : Pourquoi ? Comment ? Et plus ...
PHP Composer : Pourquoi ? Comment ? Et plus ...PHP Composer : Pourquoi ? Comment ? Et plus ...
PHP Composer : Pourquoi ? Comment ? Et plus ...
Romain Cambien
 
découverte du langage python dans tous ses aspects
découverte du langage python dans tous ses aspectsdécouverte du langage python dans tous ses aspects
découverte du langage python dans tous ses aspects
Thierry Gayet
 
Formation GIT gratuite par ippon 2014
Formation GIT gratuite par ippon 2014Formation GIT gratuite par ippon 2014
Formation GIT gratuite par ippon 2014
Ippon
 
AlterWay SolutionsLinux Outils Industrialisation PHP
AlterWay SolutionsLinux Outils Industrialisation PHPAlterWay SolutionsLinux Outils Industrialisation PHP
AlterWay SolutionsLinux Outils Industrialisation PHP
julien pauli
 
Outils de construction pour la recherche
Outils de construction pour la rechercheOutils de construction pour la recherche
Outils de construction pour la recherche
Johan Moreau
 
Audit openERP 7.0: Mise en place &Optimisation de Performances
Audit openERP 7.0: Mise en place &Optimisation de Performances Audit openERP 7.0: Mise en place &Optimisation de Performances
Audit openERP 7.0: Mise en place &Optimisation de Performances
Firas Kouẞàa
 
Android pour l'industrie
Android pour l'industrieAndroid pour l'industrie
Android pour l'industrie
Alexandre LAHAYE
 
Rapport d'installation de Linux Engine X MariaDB PHP5
Rapport d'installation de Linux Engine X MariaDB PHP5Rapport d'installation de Linux Engine X MariaDB PHP5
Rapport d'installation de Linux Engine X MariaDB PHP5
Mame Cheikh Ibra Niang
 
Oxalide Workshop #4 - Docker, des tours dans le petit bassin
Oxalide Workshop #4 - Docker, des tours dans le petit bassinOxalide Workshop #4 - Docker, des tours dans le petit bassin
Oxalide Workshop #4 - Docker, des tours dans le petit bassin
Ludovic Piot
 
Oxalide Workshop #4 - Docker, des tours dans le petit bassin
Oxalide Workshop #4 - Docker, des tours dans le petit bassinOxalide Workshop #4 - Docker, des tours dans le petit bassin
Oxalide Workshop #4 - Docker, des tours dans le petit bassin
Oxalide
 
Maintenance du système Linux
Maintenance du système LinuxMaintenance du système Linux
Maintenance du système Linux
EL AMRI El Hassan
 
08 jus 20101123_cae_linux_presentation
08 jus 20101123_cae_linux_presentation08 jus 20101123_cae_linux_presentation
08 jus 20101123_cae_linux_presentation
OpenCascade
 
Rapport systéme embarqué busybox
Rapport systéme embarqué busyboxRapport systéme embarqué busybox
Rapport systéme embarqué busybox
Ayoub Rouzi
 
Présentation devops&puppet 04112014
Présentation devops&puppet 04112014 Présentation devops&puppet 04112014
Présentation devops&puppet 04112014
Roberto Barros De Sousa
 

Similaire à Yocto oe (20)

Prototypage IoT avec logiciel/matériel libre
Prototypage IoT avec logiciel/matériel librePrototypage IoT avec logiciel/matériel libre
Prototypage IoT avec logiciel/matériel libre
 
Exposé open embedded
Exposé open embeddedExposé open embedded
Exposé open embedded
 
De la chaîne de production au SI géré par des logiciels
De la chaîne de production au SI géré par des logicielsDe la chaîne de production au SI géré par des logiciels
De la chaîne de production au SI géré par des logiciels
 
Docker@linuq
Docker@linuqDocker@linuq
Docker@linuq
 
Rapport openembedded
Rapport openembeddedRapport openembedded
Rapport openembedded
 
Plateformes embarquées
Plateformes embarquéesPlateformes embarquées
Plateformes embarquées
 
PHP Composer : Pourquoi ? Comment ? Et plus ...
PHP Composer : Pourquoi ? Comment ? Et plus ...PHP Composer : Pourquoi ? Comment ? Et plus ...
PHP Composer : Pourquoi ? Comment ? Et plus ...
 
découverte du langage python dans tous ses aspects
découverte du langage python dans tous ses aspectsdécouverte du langage python dans tous ses aspects
découverte du langage python dans tous ses aspects
 
Formation GIT gratuite par ippon 2014
Formation GIT gratuite par ippon 2014Formation GIT gratuite par ippon 2014
Formation GIT gratuite par ippon 2014
 
AlterWay SolutionsLinux Outils Industrialisation PHP
AlterWay SolutionsLinux Outils Industrialisation PHPAlterWay SolutionsLinux Outils Industrialisation PHP
AlterWay SolutionsLinux Outils Industrialisation PHP
 
Outils de construction pour la recherche
Outils de construction pour la rechercheOutils de construction pour la recherche
Outils de construction pour la recherche
 
Audit openERP 7.0: Mise en place &Optimisation de Performances
Audit openERP 7.0: Mise en place &Optimisation de Performances Audit openERP 7.0: Mise en place &Optimisation de Performances
Audit openERP 7.0: Mise en place &Optimisation de Performances
 
Android pour l'industrie
Android pour l'industrieAndroid pour l'industrie
Android pour l'industrie
 
Rapport d'installation de Linux Engine X MariaDB PHP5
Rapport d'installation de Linux Engine X MariaDB PHP5Rapport d'installation de Linux Engine X MariaDB PHP5
Rapport d'installation de Linux Engine X MariaDB PHP5
 
Oxalide Workshop #4 - Docker, des tours dans le petit bassin
Oxalide Workshop #4 - Docker, des tours dans le petit bassinOxalide Workshop #4 - Docker, des tours dans le petit bassin
Oxalide Workshop #4 - Docker, des tours dans le petit bassin
 
Oxalide Workshop #4 - Docker, des tours dans le petit bassin
Oxalide Workshop #4 - Docker, des tours dans le petit bassinOxalide Workshop #4 - Docker, des tours dans le petit bassin
Oxalide Workshop #4 - Docker, des tours dans le petit bassin
 
Maintenance du système Linux
Maintenance du système LinuxMaintenance du système Linux
Maintenance du système Linux
 
08 jus 20101123_cae_linux_presentation
08 jus 20101123_cae_linux_presentation08 jus 20101123_cae_linux_presentation
08 jus 20101123_cae_linux_presentation
 
Rapport systéme embarqué busybox
Rapport systéme embarqué busyboxRapport systéme embarqué busybox
Rapport systéme embarqué busybox
 
Présentation devops&puppet 04112014
Présentation devops&puppet 04112014 Présentation devops&puppet 04112014
Présentation devops&puppet 04112014
 

Plus de Alexandre LAHAYE

Building RT image with Yocto
Building RT image with YoctoBuilding RT image with Yocto
Building RT image with Yocto
Alexandre LAHAYE
 
openPOWERLINK over Xenomai
openPOWERLINK over XenomaiopenPOWERLINK over Xenomai
openPOWERLINK over Xenomai
Alexandre LAHAYE
 
Présentation Bluetooth Low Energy - SMILE ECS
Présentation Bluetooth Low Energy - SMILE ECSPrésentation Bluetooth Low Energy - SMILE ECS
Présentation Bluetooth Low Energy - SMILE ECS
Alexandre LAHAYE
 
Les solutions libres pour les systèmes embarqués
Les solutions libres pour les systèmes embarquésLes solutions libres pour les systèmes embarqués
Les solutions libres pour les systèmes embarqués
Alexandre LAHAYE
 
Les technologies Open Source pour les objets connectés
Les technologies Open Source pour les objets connectésLes technologies Open Source pour les objets connectés
Les technologies Open Source pour les objets connectés
Alexandre LAHAYE
 
Les technologies Open Source pour les objets connectés
Les technologies Open Source pour les objets connectésLes technologies Open Source pour les objets connectés
Les technologies Open Source pour les objets connectés
Alexandre LAHAYE
 
Qt4 et 5 pour Linux embarqué
Qt4 et 5 pour Linux embarquéQt4 et 5 pour Linux embarqué
Qt4 et 5 pour Linux embarqué
Alexandre LAHAYE
 
Les technologies Open Source pour les interfaces graphiques embarquées
Les technologies Open Source pour les interfaces graphiques embarquéesLes technologies Open Source pour les interfaces graphiques embarquées
Les technologies Open Source pour les interfaces graphiques embarquées
Alexandre LAHAYE
 
OPEN WIDE : L’open source pour les systemes embarques Temps reel
OPEN WIDE : L’open source pour les systemes embarques Temps reelOPEN WIDE : L’open source pour les systemes embarques Temps reel
OPEN WIDE : L’open source pour les systemes embarques Temps reel
Alexandre LAHAYE
 

Plus de Alexandre LAHAYE (9)

Building RT image with Yocto
Building RT image with YoctoBuilding RT image with Yocto
Building RT image with Yocto
 
openPOWERLINK over Xenomai
openPOWERLINK over XenomaiopenPOWERLINK over Xenomai
openPOWERLINK over Xenomai
 
Présentation Bluetooth Low Energy - SMILE ECS
Présentation Bluetooth Low Energy - SMILE ECSPrésentation Bluetooth Low Energy - SMILE ECS
Présentation Bluetooth Low Energy - SMILE ECS
 
Les solutions libres pour les systèmes embarqués
Les solutions libres pour les systèmes embarquésLes solutions libres pour les systèmes embarqués
Les solutions libres pour les systèmes embarqués
 
Les technologies Open Source pour les objets connectés
Les technologies Open Source pour les objets connectésLes technologies Open Source pour les objets connectés
Les technologies Open Source pour les objets connectés
 
Les technologies Open Source pour les objets connectés
Les technologies Open Source pour les objets connectésLes technologies Open Source pour les objets connectés
Les technologies Open Source pour les objets connectés
 
Qt4 et 5 pour Linux embarqué
Qt4 et 5 pour Linux embarquéQt4 et 5 pour Linux embarqué
Qt4 et 5 pour Linux embarqué
 
Les technologies Open Source pour les interfaces graphiques embarquées
Les technologies Open Source pour les interfaces graphiques embarquéesLes technologies Open Source pour les interfaces graphiques embarquées
Les technologies Open Source pour les interfaces graphiques embarquées
 
OPEN WIDE : L’open source pour les systemes embarques Temps reel
OPEN WIDE : L’open source pour les systemes embarques Temps reelOPEN WIDE : L’open source pour les systemes embarques Temps reel
OPEN WIDE : L’open source pour les systemes embarques Temps reel
 

Yocto oe

  • 1. Introduction à Yocto / OpenEmbedded Pierre Ficheux (pierre.ficheux@openwide.fr) Avril 2013 Yocto / OpenEmbedded 1
  • 2. Présentation Open Wide ● SSII/SSLL créée en septembre 2001 avec Thales et Schneider ● Indépendante depuis 2009 ● Environ 110 salariés sur Paris, Lyon et Toulouse (depuis janvier 2012) ● Industrialisation de composants open source ● Trois activités : – OW Système d'Information (Java/PHP) – OW Outsourcing: hébergement – OW Ingénierie: informatique industrielle Yocto / OpenEmbedded 2
  • 3. Présentation PF ● Utilisateur de logiciels libres depuis 1989 ● Utilisateur de Linux depuis 1992 ● Auteur des 4 éditions de l'ouvrage « Linux embarqué » (Eyrolles), 4ème édition parue en juin 2012 ● Auteur GNU Linux Magazine et Open Silicium ● CTO Open Wide Ingénierie, enseignant EPITA Yocto / OpenEmbedded 3
  • 4. Programme ● Créer une distribution embarquée ● Introduction à OpenEmbedded ● Yocto Project(s) ● Construction d'une distribution pour Raspberry Pi ● Exemple de recette simple (Hello World) ● Démonstration sur RPi Yocto / OpenEmbedded 4
  • 5. Créer une distribution « embarquée » ● Choisir un outil commercial (Wind River, Montavista) ● Utiliser un outil de génération : Buildroot, OpenEmbedded, OpenWrt, LTIB ● Adapter une distribution Linux classique – Souvent limité au niveau matériel – Empreinte mémoire et flash importante – Temps de démarrage ● Créer la distribution « from scratch » – Approche plutôt « pédagogique » – Difficile/impossible à industrialiser → dépendances, mise à jour Yocto / OpenEmbedded 5
  • 6. Les principaux outils disponibles ● OpenEmbedded – Moteur écrit en Python (bitbake) – Puissant mais lourd – Basé sur des fichiers de configuration (?) ● Buildroot – Basé sur la commande make – Au départ un démonstrateur pour uClibc – Bon outil mais pas de gestion de paquets – Utilisé par Google Fiber project ● OpenWrt – Dérivé de BR + gère les paquets IPK – Orienté vers les IAD (Internet Access Device) ● Autres: LTIB (Freescale), PTXdist (Pengutronix) Yocto / OpenEmbedded 6
  • 7. OpenEmbedded, introduction ● OE est une « généralisation » de l'approche utilisée dans BR → framework de compilation croisée ● Démarrage en 2003 pour OpenZaurus ● Utilise un moteur écrit en Python (bitbake) et un ensemble de règles utilisant un principe d'héritage → recipe (recette = fichier .bb) ● Gère la notion de paquet binaire, contrairement à BR (IPK, RPM, DEB) ● Plusieurs milliers de paquets disponibles ● Par contre : – Peu d'interfaces de configuration (en cours) – Processus de compilation plus lourd qu'avec BR ● Très utilisé dans l'industrie (Yocto Project) Yocto / OpenEmbedded 7
  • 8. Yocto Project(s) ● Le projet « chapeau » le plus important autour de OE (Poky, Eglibc, Hob, Matchbox, infrastructures de test, QA, …) ● Contributions Intel, Wind River, Montavista, Mentor Graphics, … (20 participants officiels) ● Architecte : Richard Purdie → rejoint la Linux Foundation en tant que « fellow » en décembre 2010 ● Organisation similaire à celle de l'équipe du noyau Linux « meritocracy presided over by a benevolent dictator » ● Forte présence d'Intel mais l’engagement de la fondation Linux permet une collaboration fructueuse ;-) Yocto / OpenEmbedded 8
  • 9. Yocto Project(s), suite ● Utilisé par les éditeurs pour leurs produits commerciaux ● Utilisé par les fabricants de matériel pour les BSP (Board Support Package) ● Pas réellement une « distribution » mais fournit des templates et outils pour créer des distributions – Support matériel (meta-intel, meta-raspberrypi) – Portage de composants (meta-mono) – Distributions (meta-yocto, meta-angstrom) – Couches « métier » (meta-ivi) → GENIVI It's not an embedded Linux distribution – it creates a custom one for you ● Poky est le projet « distribution de référence » – Poky 8.0 (danny) succède Poky 7.0 (denzel) Poky 8.0 (Yocto Project 1.3 Reference Distro) Yocto / OpenEmbedded 9
  • 10. Quelques distributions ● Angstrom (meta-angstrom) – Distribution basée sur OE, fait partie du projet Yocto depuis 9/2012 – Approche binaire similaire aux distributions classiques ● Arago (meta-arago-distro) – Fournie par TI (OMAP) ● ELDK (meta-eldk) – Embedded Linux Development Kit, Denx Software ● De plus en plus d'acteurs du domaine se rapprochent de Yocto Project ! http://git.eukrea.fr Yocto / OpenEmbedded 10
  • 11. Métadonnées OE ● Les recettes (.bb) décrivent la manière de compiler un paquet (ou plusieurs) pour la cible : $ bitbake ma_recette ● Un .bb peut décrire UN composant mais également une distribution complète ● Les classes (classes/*.bbclass) décrivent des règles communes aux recettes (autotools, cmake, module, ...) ● Les fichiers de configuration (.conf), définissent les paramètres de la distribution cible (poky.conf, local.conf, ...) ● Extrait de conf/local.conf BB_NUMBER_THREADS = "8" PARALLEL_MAKE = "-j 8" MACHINE ?= "raspberrypi" Yocto / OpenEmbedded 11
  • 12. Métadonnées OE, suite ● OE est rarement utilisé seul ● Il fournit les « métadonnées » principales (OE-Core) permettant de construire des distributions ● Les autres couches (layers) sont disponibles sur : http://layers.openembedded.org/layerindex ● OE fournit cependant des recettes pour des images de test simples (QEMU) $ cd meta/recipes-core/images/ $ ls -1 *.bb build-appliance-image.bb core-image-base.bb core-image-minimal.bb core-image-minimal-dev.bb core-image-minimal-initramfs.bb core-image-minimal-mtdutils.bb Yocto / OpenEmbedded 12
  • 13. Bitbake ● L’outil bitbake permet de créer un composant OE allant du simple paquet à une distribution complète : $ bitbake vim $ bitbake core-image-minimal $ bitbake rpi-basic-image ● Il parcourt les fichiers de configuration afin de déterminer quels sont les composants à construire en fonction des recettes ● L’outil est équivalent à make dans le cas de Buildroot ● Pour chaque paquet: fetch, unpack, patch, configure, compile, stage, install, package, ... Yocto / OpenEmbedded 13
  • 14. Installation Yocto/OE pour RPi ● Installation de Poky (Yocto reference distro) $ git clone git://git.yoctoproject.org/poky ● Installation de la couche RPi (meta-raspberrypi) $ cd poky $ git clone git://git.yoctoproject.org/meta-raspberrypi ● Création du répertoire de travail $ . ./oe-init-build-env rpi-build ● Ajout de la couche RPi à conf/bblayers.conf BBLAYERS ?= " ... <path>/poky/meta-raspberrypi " ● Ajout du type de machine à conf/local.conf MACHINE ?= "raspberrypi" Yocto / OpenEmbedded 14
  • 15. Production d'une image de test ● Les archives des paquets sont stockées dans rpi- build/downloads lors de l'étape fetch ● La couche RPi fournit une image de test dérivée de core-image-minimal $ ls -1 meta-raspberrypi/recipes-core/images/ rpi-basic-image.bb rpi-hwup-image.bb ● On produit l'image par : $ bitbake rpi-basic-image ● Par défaut, Poky utilise le format de paquet RPM (voir conf/local.conf) ● L'image de la SD est produite automatiquement ● Environ 50 mn sur un 16 CPU Xeon mais 12h sur un Core2 Duo... Yocto / OpenEmbedded 15
  • 16. Répertoires produits ● Le répertoire rpi-build/downloads contient les archives téléchargées (à partager !) ● Le répertoire rpi-build/tmp est utilisé comme « sortie » avec les sous-répertoires deploy et work $ ls -1 deploy images noyau et archives (root-fs) produits ipk paquets IPK $ ls -1 linux-raspberrypi licenses COPYING rpm paquets RPM generic_GPLv2 Yocto / OpenEmbedded 16
  • 17. Répertoires produits, suite ● Le répertoire tmp/work fournit d'autres informations : – Contenu du root-filesystem – Liste des paquets installés – Traces de construction $ ls -1 work/raspberrypi-poky-linux-gnueabi/rpi- basic-image/1.0-r0/ image-version-info bin installed_pkgs.txt boot dev ... etc log.do_populate_lic ... log.do_populate_lic.13363 rootfs var log.do_rootfs temp log.do_rootfs.13927 log.do_rootfs.16374 ... Yocto / OpenEmbedded 17
  • 18. Ajustement de la configuration ● La configuration peut être ajustée à plusieurs niveaux : – Configuration locale conf/local.conf – Recettes (.bb) ● Modification local.conf pour utiliser IPK PACKAGE_CLASSES ?= "package_ipk" ● Ajout de « features » → x11, tools-debug, nfs-server, ... IMAGE_FEATURES (dans la recette) EXTRA_IMAGE_FEATURES (dans local.conf) IMAGE_FEATURES += "ssh-server-dropbear splash" ● Suppression des répertoires de construction (work) !! INHERIT += "rm_work" Yocto / OpenEmbedded 18
  • 19. Ajustement de la configuration, suite ● Par défaut la base RPM/IPK/DEB n'est pas disponible sur l'image, voir core-image-minimal.bb # remove not needed ipkg informations ROOTFS_POSTPROCESS_COMMAND += "remove_packaging_data_files ; " ● On ne peut donc pas ajouter/supprimer des paquets – Commenter la ligne précédente – Ajouter à la configuration de la cible la ligne : {EXTRA_}IMAGE_FEATURES += "package-management" ● La distribution RPM est deux fois plus volumineuse que la version IPK ! Filesystem Size Used Available Use% Mounted on /dev/root 290.5M 125.3M 150.2M 45% / /dev/root 290.5M 53.5M 222.0M 19% / Yocto / OpenEmbedded 19
  • 20. Création du SDK ● On peut créer la chaîne croisée et produire un script d'installation automatique $ bitbake meta-toolchain ● On installe le SDK par : $ ./tmp/deploy/sdk/poky-eglibc-x86_64-arm-toolchain-1.3+snapshot- 20130212.sh ... Extracting SDK...done Setting it up...done SDK has been successfully set up and is ready to be used. ● Accès au SDK par : $ source <path>/environment-setup-armv6-vfp-poky-linux-gnueabi $ arm-poky-linux-gnueabi-gcc -v ... Thread model: posix gcc version 4.7.2 (GCC) Yocto / OpenEmbedded 20
  • 21. Exemple de recette (simple) ● L'exemple est un paquet « Hello World » basé sur un Makefile générique (ni Autotools, ni CMake) ● Le fichier recette hello_1.0.bb est installé sur le répertoire meta-raspberry/recipes-core/hello ● Les variables à définir sont : – DESCRIPTION – LICENSE – LIC_FILES_CHKSUM – PR Package Release – SRC_URI – SRC_URI[md5sum] – SRC_URI[sha256sum] Yocto / OpenEmbedded 21
  • 22. Exemple de recette, suite DESCRIPTION = "Helloworld software" LICENSE = "GPLv2" LIC_FILES_CHKSUM = "file://COPYING;md5=8ca43cbc842c2336e835926c2166c28b" PR = "r0" SRC_URI = "http://pficheux.free.fr/tmp/hello-1.0.tar.gz" do_install() { oe_runmake install DESTDIR=${D} } SRC_URI[md5sum] = "b8fd6dac37f15cd475368ed7e23beb3b" SRC_URI[sha256sum] = "1fb572c6e6958856b491e4b478732e66268dc957562f4d80368d60c247 aeabef" Yocto / OpenEmbedded 22
  • 23. Exemple de recette, suite ● L'archive des sources contient les fichiers suivants : COPYING hello_oe.c Makefile ● Le Makefile doit contenir un but install utilisant la variable DESTDIR : install: mkdir -p $(DESTDIR)/usr/bin cp hello_oe $(DESTDIR)/usr/bin ● Construction du paquet par : $ bitbake hello Yocto / OpenEmbedded 23
  • 24. Cas du paquet RPM ● L'archive .tar.gz est chargée sur le répertoire downloads lors du fetch ● La compilation s'effectue sur : tmp/work/armv6-vfp-poky-linux-gnueabi/hello ● Affichage du contenu du paquet $ rpm -qpl tmp/deploy/rpm/armv6_vfp/hello-1.0- r0.armv6_vfp.rpm /usr /usr/bin /usr/bin/hello_oe ● On peut installer le paquet par la commande : # rpm -ivh <path>/hello_1.0-r0_armv6-vfp.rpm Yocto / OpenEmbedded 24
  • 25. Cas du paquet IPK ● Affichage du contenu du paquet $ dpkg -c tmp/deploy/ipk/armv6-vfp/hello_1.0-r0_armv6-vfp.ipk drwxr-xr-x 0/0 0 2013-02-11 16:56 ./ drwxr-xr-x 0/0 0 2013-02-11 16:56 ./usr/ drwxr-xr-x 0/0 0 2013-02-11 16:56 ./usr/bin/ -rwxr-xr-x 0/0 2952 2013-02-11 16:56 ./usr/bin/hello_oe ● On installe le paquet par la commande : # opkg install <path>/hello_1.0-r0_armv6-vfp.ipk Yocto / OpenEmbedded 25
  • 26. Options utiles ● Pour exécuter uniquement une étape (clean, fetch, ...) $ bitbake -c <étape> <recette> ● Exemples : Téléchargement archive $ bitbake -c fetch hello Idem + dépendances $ bitbake -c fetchall core-image-minimal $ bitbake -c listtasks hello Tâches à exécuter ● Reconstruction d'un paquet $ bitbake -c cleansstate hello $ bitbake hello Effacement du cache Yocto / OpenEmbedded 26
  • 27. Conclusions ● Yocto/OpenEmbedded est un outil puissant mais complexe ● La distribution produite est plus lourde que dans le cas de Buildroot ● Niveau de complexité (taille) sur la RPi – Raspian (Go) – Poky (100 Mo si RPM, 50 Mo si IPK) – Buildroot (20 Mo) ● On utilise Poky lorsque l'on veut une distribution évoluée et non un firmware ! ● Voir les démos sur la RPi Yocto / OpenEmbedded 27
  • 28. Bibliographie ● http://www.openembedded.org ● https://www.yoctoproject.org ● http://www.yoctoproject.org/docs/1.3/poky-ref-manual/poky-ref- manual.html ● http://git.yoctoproject.org/cgit/cgit.cgi/poky/tree/meta/classes/core- image.bbclass ● http://www.linuxfoundation.org/news- media/announcements/2010/12/linux-foundation-appoints-new-fellow ● Chapitres 11 et 15 de l'ouvrage Linux embarqué, 4ème édition sur http://www.editions-eyrolles.com/Livre/9782212134827/linux-embarque ● Démonstration OE sur carte Eukréa sur http://www.youtube.com/watch? v=5VPB8LeCloM ● http://www.linuxembedded.fr/2011/08/ajouter-un-package-dans- openembedded-en-5-minutes Yocto / OpenEmbedded 28