Yocto/OE sur Raspberry Pi



Documents pareils
Naissance d'un REPTAR

Présentation des intervenants. Pourquoi cette conférence? Logiciel libre : notions essentielles. Le logiciel libre pour les projets industriels

Mon premier rpm. 7 juin Avant de commencer RPM URPMI RPMBUILD... 2

PRESENTATION RESSOURCES. Christian Dupaty BTS Systèmes Numériques Lycée Fourcade Gardanne Académie d Aix Marseille

Chapitre 10 : Logiciels

Installation software

Compilation croisée sous Linux et Windows

Personnes ressources Tice. Académie de Rouen

Développement d une carte à processeur linux

Segmentation d'images à l'aide d'agents sociaux : applications GPU

Diagrammes de Package, de déploiement et de composants UML

Installation et prise en main

Parallels Transporter Lisez-moi

Développement sur Gumstix

Introduction...3. Objectif...3. Manipulations...3. La Sauvegarde...4. Les différents types...4. Planification...4. Les outils...5

Ateliers Python+Qt : Premiers pas : Comment développez ses propres interfaces graphiques sur le RaspberryPi?

Systèmes Embarqués Libres

Environnements et Outils de Développement Cours 1 Introduction

COLLEGE ADRIEN CERNEAU

NON URGENTE TEMPORAIRE DEFINITIVE. SUBJECT : PROCÉDURE DE MISE EN SERVICE DE LA VERSION F e RELEASE 6.2

TVTools Cloud Edition

La mémoire. Un ordinateur. L'octet. Le bit

Détection de pollution maritime avec GNU/Linux. Eric Bénard - eric@eukrea.com - 08 juillet 2010

Maarch Framework 3 - Maarch. Tests de charge. Professional Services. 11, bd du Sud Est Nanterre

Installation et compilation de gnurbs sous Windows

Créer son premier package.deb. 19 août

VMWare. Vmware: machine virtuelle Un véritable pc avec : VmWare

Robot WIFIBOT Lab V4. Lab V4.

Debian Lenny - Virtualisation avec Libvirt/KVM Debian GNU/Linux

INGÉNIEUR - DÉVELOPPEUR SENIOR EMBEDDED - C/C++ - MICROCONT RÔLEURS. 34 ans - 10 ans d'expérience

À propos de Parallels Desktop 10 pour Mac

Chapitre IX : Virtualisation

Découvrez les Nouveautés Février 2010 du Catalogue PC Pack PRO

Architecture de la plateforme SBC

Environnement Informatique EMSE Linux

Principe. Technologies utilisées. 1. Linux et LVM. Les snapshots (instantannés) sous Linux et FreeBSD. Présentation de LVM. Organisation de LVM

Summary / Sommaire. 1 Install DRIVER SR2 USB01 Windows seven 64 bits / Installation du DRIVER SR2 USB01 Windows seven 64 bits 2

Linux pour l embarqué. 1 Module E4 : Systèmes temps-réel Audrey Marchand

Quoi de neuf en contrôle/commande et systèmes embarqués (RIO, WSN...)?

Caractéristiques principales:

TP développement : portage d applications sur le Cloud IaaS

Construction de logiciel et packaging

Instructions pour mettre à jour un HFFv2 v1.x.yy v2.0.00

PLATE-FORME DE CLOUD COMPUTING SLAPOS. Intégration d applications

Guide pratique de CSPM, l'outil de suivi des performances du système Version française du Complete System Performance Monitor HOWTO

INFO-F-404 : Techniques avancées de systèmes d exploitation

Auteur LARDOUX Guillaume Contact Année 2014 DEVELOPPEMENT MOBILE AVEC CORDOVA

StruxureWare Power Monitoring v7.0. La nouvelle génération en matière de logiciel de gestion complète d énergie

Reproductibilité des expériences de l article "Analyse et réduction du chemin critique dans l exécution d une application"

Session 8: Android File System

27/11/12 Nature. SDK Python et Java pour le développement de services ACCORD Module(s)

Capacité de mémoire Tablettes

Once the installation is complete, you can delete the temporary Zip files..

BOOK STAGES. OWSI Open Wide Systèmes d Information P2 Intégration, Collaboratif, GED, Applications métier

Manuel utilisateur (Manuel_utilisateur_version pdf) Manuel Reprise des données (Manuel_Reprise_donnees_version

Cloner nativement Windows 8.x (mode EFI)

CATALOGUE DES FORMATIONS Octobre 2013

VMware ESX : Installation. Hervé Chaudret RSI - Délégation Centre Poitou-Charentes

Systèmes embarqués D.Rossier

Red Hat Enterprise Virtualization 3.0 Instructions d'installation et informations importantes

Premiers pas en Linux

SUGARCRM Sugar Open Source Guide d Installation de French SugarCRM Open Source Version 4.2

Département de génie électrique. ELE784 - Ordinateurs et programmation système. Laboratoire #1

Base de l'informatique. Généralité et Architecture Le système d'exploitation Les logiciels Le réseau et l'extérieur (WEB)

Tests de performance du matériel

Virtualisation de serveur grâce à Linux-

Guide du nouveau responsable Debian. Guide du nouveau responsable Debian

Utiliser le Notebook GIGABYTE pour la première fois

Tutoriel Création d une source Cydia et compilation des packages sous Linux

EN Télécom & Réseau S Utiliser VMWARE

Règles et paramètres d'exploitation de Caparmor 2 au 11/12/2009. Pôle de Calcul Intensif pour la mer, 11 Decembre 2009

Livre blanc Mesure des performances sous Windows Embedded Standard 7

Construction et sécurisation d'un système Linux embarqué. Frédéric AIME

Exigences système Edition & Imprimeries de labeur

Hands on Openstack : Introduction

2 Formation utilisateur

FICHE TECHNIQUE. Linux Tutoriel. Installer une imprimante multifonction HP PSC 1315 sous Linux. TUTORIEL Starinux Imprimante multifonction HP PSC 1315

NON URGENTE TEMPORAIRE DEFINITIVE OBJET : RÉCUPÉRATION DES DONNÉES CLIENT SUR DISQUE DUR DÉFECTUEUX OU INVALIDÉ

HP 600PD TWR i G 4.0G 39 PC

Oracle Database SQL Developer Guide D'Installation Release 4.0 E

Guide d utilisation de l utilitaire Intel One Boot Flash Update

Optimisation de logiciels de modélisation sur centre de calcul

Tutorial uclinux ARM7 Development Starter Kit. Pragmatec Produits et services dédiés aux systèmes embarqués. uclinux - Mise en oeuvre

sshgate Patrick Guiran Chef de projet support

cc.region.beaujeu@wanadoo.fr Site Internet Actuellement nous trouvons ce schéma réseau :

LA TABLETTE, UN OUTIL POLYVALENT!

Atelier : Virtualisation avec Xen

Alexandre Buge Epitech 5 Promo Soutenance de stage du 01/03/2004 au 31/08/2004

Choix d'un serveur. Choix 1 : HP ProLiant DL380 G7 Base - Xeon E GHz

Exigences système Edition & Imprimeries de labeur

ST50 Projet de fin d études Noyau Linux et multi-processeur pour une plateforme embarquée

La création d un paquet Debian. Aurélien Jarno. Journées du Logiciel Libre. 15 octobre 2005

Sur un ordinateur portable ou un All-in-One tactile, la plupart des éléments mentionnés précédemment sont regroupés. 10) 11)

SERVEUR WEB. Christian Dupaty BTS Systèmes Numériques Lycée Fourcade Gardanne Académie d Aix Marseille

Linux embarqué: une alternative à Windows CE?

Installation UpdatEngine serveur (CentOs apache2 / MySQL)

Robot WIFIBOT Lab V3. 4 roues motrices

Transcription:

Yocto/OE sur Raspberry Pi Pierre Ficheux (pierre.ficheux@openwide.fr) Avril 2013 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 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 3

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 4

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) 5

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) 6

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 ;-) 7

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) Couches «métier» (meta-ivi) GENIVI Distributions (meta-yocto, meta-angstrom) 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) 8

Métadonnées OE Les recettes (.bb) décrivent la manière de compiler un paquet (ou plusieurs) pour la cible : $ bitbake ma_recette $ bitbake vim $ bitbake core-image-minimal 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,...) 9

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 10

Bitbake L outil est équivalent à make dans le cas de Buildroot Il parcourt les fichiers de configuration afin de déterminer quels sont les composants à construire en fonction des recettes Pour chaque paquet: fetch, unpack, patch, configure, compile, stage, install, package,... 11

Carte Raspberry Pi (RPi) 12

Raspberry Pi, suite Un «PC bon marché» (de 22 à 35$) Processeur BCM2708 (Broadcom) à 700 Mhz GPU 256 ou 512 Mo de RAM (GPU+CPU) Carte SD (pas de bootloader standard!) Ethernet, USB GPIO, SPI, I2C, Audio DSI/CSI (Display/Camera Serial Interface) Sorties vidéo composite et HDMI 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" 14

Production d'une image de test Les archives des paquets sont stockées dans rpibuild/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... 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 ipk licenses rpm noyau et archives (root-fs) produits paquets IPK $ ls -1 linux-raspberrypi paquets RPM COPYING generic_gplv2 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/rpibasic-image/1.0-r0/ image-version-info installed_pkgs.txt... rootfs temp bin boot dev etc... var log.do_populate_lic log.do_populate_lic.13363 log.do_rootfs log.do_rootfs.13927 log.do_rootfs.16374... 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» à partir d'une liste x11, toolsdebug, nfs-server,... IMAGE_FEATURES (dans la recette) EXTRA_IMAGE_FEATURES (dans local.conf) IMAGE_FEATURES += "ssh-server-dropbear splash" Ajout d'un paquet quelconque IMAGE_INSTALL (dans la recette) Suppression des répertoires de construction (work)!! INHERIT += "rm_work" 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% / 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) 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 SRC_URI Package Release SRC_URI[md5sum] SRC_URI[sha256sum] 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" 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 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 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 drwxr-xr-x 0/0 -rwxr-xr-x 0/0 0 2013-02-11 16:56./usr/ 0 2013-02-11 16:56./usr/bin/ 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 25

Options utiles Pour exécuter uniquement une étape (clean, fetch,...) $ bitbake -c <étape> <recette> Exemples : $ bitbake -c fetch hello $ bitbake -c fetchall core-image-minimal $ bitbake -c listtasks hello Téléchargement archive Idem + dépendances Tâches à exécuter Reconstruction d'un paquet $ bitbake -c cleansstate hello $ bitbake hello Effacement du cache 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 27

Bibliographie http://www.openembedded.org https://www.yoctoproject.org 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.yoctoproject.org/docs/1.3/poky-ref-manual/poky-refmanual.html http://git.yoctoproject.org/cgit/cgit.cgi/poky/tree/meta/classes/coreimage.bbclass http://www.linuxfoundation.org/newsmedia/announcements/2010/12/linux-foundation-appoints-new-fellow http://www.linuxembedded.fr/2011/08/ajouter-un-package-dansopenembedded-en-5-minutes 28