SlideShare une entreprise Scribd logo
1  sur  42
Réalisé Par:
*AYOUB ROUZI
*ABDELHAKIM SALAMA
*FADILI MUSTAFA
*ELMALKAOUI YASSINE
Encadré Par:
Mr.Abdelhakim Anouar
MINIMISER LE SYSTÈME
D'EXPLOITATION EN UTILISANT
OPENEMBEDDED
 Introduction
 OpenEmbedded en quelques mots
 Historique et rappels
 OpenEmbedded
 OpenEmbedded en détail
 Cas d’utilisation
 OpenEmbedded Meta data
 Bitbake
 OpenEmbedded en pratique
 Comment tester ?
 Conclusion
PLAN:
 OpenEmbedded est un Framework de compilation de composants
logiciels libres destines a être déployés sur des systèmes embarques
 production d’un simple binaire jusqu’à une distribution complété
 support de nombreuses architectures et configurations flexible
 autosuffisant et déterministe
OPENEMBEDDED EN QUELQUES MOTS
HISTORIQUE ET RAPPELS
 Les briques logiciels de base pour construire un système Linux
glibc: GNU C library.
gcc: GNU C compiler.
binutils: outils manipulant les fichiers objet et binaire
Ces éléments constituent une toolchain, avec laquelle peut ensuite
être compile tout autre composant (make, le kernel, X, KDE, ...)
HISTORIQUE ET RAPPELS
 Une toolchain permet de compiler sur une machine hôte (’build’, ’native’)
d’architecture A du code exécutable sur une machine cible (’Target’) d’architecture B.
 si A == B: on parle de toolchain et de compilation
 si A != B: on parle de cross-toolchain et de cross-compilation
HISTORIQUE ET RAPPELS
 Pour compiler du code pour une machine cible, il y a plusieurs
possibilités
 récupérer une standalone/prebuilt toochain/SDK s’exécutant
sur la machine cible. Rarement viable par manque de mémoire
et puissance de la machine embarquée
 compiler une toochain/SDK exécutable sur la machine cible
 récupérer une cross-toochain s’exécutant sur une machine
hôte générant du code spécifique a la machine cible
(ex: ARM)
 compiler une cross-toolchain
HISTORIQUE ET RAPPELS
« COMPILATION POUR L’EMBARQUE»
OPENEMBEDDED
 Les systèmes de build existants ne gèrent pas les dépendances ou montrent vite leurs
limites d’utilisation grande échelle par:
 manque de flexibilité
 lourdeur de maintenance (ex: des makefiles)
 OpenEmbedded a ete crée en 2003 par Chris Larson:
 pour fédérer les efforts de développement des différentes distro embarquées qui sont/étaient
trop souvent spécifiques à une seule architecture cible.
 pour fournir un systéme de build flexible et puissant, utilisant une syntaxe et sémantique plus
adaptée que des makefiles
OPENEMBEDDED
« POURQUOI AVOIR CRÉER OPENEMBEDDED ?»
 compilation de binaires/paquets/distributions complètes exnihilo (from scratch)
 possibilité d’utiliser une toolchain préexistante
 génération d’une même distribution déployable sur différente architecture cible
 plusieurs milliers de paquets disponibles: vim, python, qt4, etc.
 plusieurs images disponibles: console(2Mo), gpe-image, etc.
 customisation: toolchain (glibc/uClibc/eglibc), scripts d’init,découpage des paquets.
 kernel très récents supportes (2.6.24)syntaxe simple et puissante des .bb
 pleins d’autres encore ...
 parce que c’est fun de créer sa propre mini distribution
OPENEMBEDDED
« LES ATOUTS D’OPENEMBEDDED»
 Des laboratoires de recherches
 Des sociétés spécialisées dans l’électronique embarque
 Des sociétés de de télécom (t´téléphonie mobile / PDA)
 Des projets libres de distributions Linux embarquée
(ex: nslu2,OpenMoko)
OPENEMBEDDED
« QUI UTILISE OPENEMBEDDED ?»
OPENEMBEDDED EN DETAIL
Techniquement, le projet OpenEmbedded se compose de
bitbake: la commande utilisée pour construire d’un simple
paquet jusqu’à une distribution complète avec OpenEmbedded
les metadata d’OpenEmbedded: l’ensemble des fichiers que
bitbake exploite pour pouvoir faire cela
OPENEMBEDDED EN DÉTAIL
« OPENEMBEDDED = BITBAKE + METADATA»
Le dépôt des Meta data contient l’ensemble des données
nécessaires et suffisantes pour (cross)-compiler des composants
logiciels open sources
 On distingue trois principaux types de Meta data
 recipe (*.bb): caractérise un composant logiciel (executable, bibliothéques, kernel.)
 class (*.bbclass): contient des taches communes aux recipes,
 conf (*.conf): fichier de configuration,
OPENEMBEDDED EN DÉTAIL
« OPENEMBEDDED METADATA REPOSITORY»
 Un recipe contient l’ensemble des données permettant de compiler
 un composant depuis son code source.
 description et licence
 liens vers les sources et patchs `a appliquer
 dépendances (build dépendances, runtime dépendances)
 options de configuration
 customisation du découpage et contenu des paquets générées
(-dev, -doc, etc.)
OPENEMBEDDED EN DÉTAIL
« OPENEMBEDDED METADATA: RECIPE (*.BB) »
 Les fichiers de configuration
 local.conf: contient votre conf personnelle de build (TARGET ARCH, DISTRO, ...)
 machine configurations: common architectures, routers, PDA,GSM phones, ...
 distribution policies: packaging, naming, preferred version ofsoftware,
OPENEMBEDDED EN DÉTAIL
« OPENEMBEDDED METADATA: CONF (*.CONF) »
 un exécuteur de taches et un gestionnaire de metadata
 un peu le ’make’ d’OpenEmbedded
 inspire de Portage, le gestionnaire de paquet de la distribution Gentoo
 écrit en python
OPENEMBEDDED EN DÉTAIL
« BITBAKE »
 Gérer la cross-compilation
 Gérer les dépendances inter-paquets
 build time on target architectures
 build time on native architectures
 Runtime
 Linux distribution agnostic
 Architecture agnostic
 Gérer les metadata conditionnellement (target, OS, distro,machine)
 Multiple target operating system (Linux, BSDs, etc.)
OPENEMBEDDED EN DÉTAIL
« BUTS DE BITBAKE »
OPENEMBEDDED EN PRATIQUE
 Pour faire c’est premiers pas avec OpenEmbedded et bitbake:
http://www.openembedded.org/wiki/GettingStarted
Un seul fichier à configurer: /build/conf/local.conf
OPENEMBEDDED EN PRATIQUE
« OPENEMBEDDED CONFIGURATION »
OPENEMBEDDED EN PRATIQUE
« UTILISATION DE BITBAKE »
Les paquets et images résultantes sont dans tmp/deploy/
L'ENVIRONNEMENT DE DÉVELOPPEMENT
 Une personnalisation simple
mkdir -p /stuff/build/conf /stuff/tools/
cd /stuff/tools
svn co svn://svn.berlios.de/bitbake/branches/bitbake -1.4 bitbake
cd bitbake
./setup.py build
 Pour plus d’informations sur bitbake :
cd /stuff/tools/bitbake/doc/manual && make
 pour add bitbake a linux PATH :
export PATH=$HOME/oe/bitbake/bin:$PATH
L'ENVIRONNEMENT DE DÉVELOPPEMENT
« INSTALLATION DE L'ENVIRONNEMENT DE DÉVELOPPEMENT »
 aptget install wget curl
L'ENVIRONNEMENT DE DÉVELOPPEMENT
« INSTALLATION DES OUTILLES POUR LE CODE »
L'ENVIRONNEMENT DE DÉVELOPPEMENT
« INSTALLATION DE COMPILATEUR POUR PYTHON »
 aptget install python-psycop2
 Dans cet exemple nous utiliserons la branche
(git.openembedded.org/openembedded)
L'ENVIRONNEMENT DE DÉVELOPPEMENT
« INSTALLATION D'OPENEMBEDDED »
mtn –db=OE.mtn pull monotone.openembedded.org org.openembedded.stable
L'ENVIRONNEMENT DE DÉVELOPPEMENT
« MISE À JOUR DE LA BASE OPENOMBEDDED »
BBFILES = "${HOME}/openombedde/recipes/bb/bb_1.2.bb"
Choisir une machine depuis :
org.openembedded.stable/conf/machine/
L'ENVIRONNEMENT DE DÉVELOPPEMENT
« MODIFIER LE FICHIER BUILD/CONF/LOCAL.CONF »
Org.openembedded.stable/conf/distro/
L'ENVIRONNEMENT DE DÉVELOPPEMENT
« CHOISIR UNE DISTRIBUTION »
 PARALLEL_MAKE = "j 4"
 BB_NUMBER_THREADS = "4“
 Spécifier le système de fichier
 IMAGE_FSTYPES = "ext2 tar"
L'ENVIRONNEMENT DE DÉVELOPPEMENT
« SPÉCIFIER LE NOMBRE DE PROCESSUS À UTILISER »
 Crée un environnement de configuration des scripts
 export PATH=$HOME/openembedded/bitbake/bin:$PATH
 export BBPATH=$HOME/oe/build:$HOME/openembedded
 Configuration de fichier système de Ubuntu
 echo 0 > /proc/sys/vm/mmap_min_addr
L'ENVIRONNEMENT DE DÉVELOPPEMENT
« INSTALLATION DE L'ENVIRONNEMENT DE DÉVELOPPEMENT »
ÉTAPES DE CONFIGURATION
BITBAKE
On a téléchargé bitbake et après on a décompresser le fichier, et ça nous donne les
fichiers suivants :
ÉTAPES DE CONFIGURATION
« SPÉCIFIER LE NOMBRE DE PROCESSUS À UTILISER »
 Il nous est aussi possible d’ajouter un package à une image.
 Imaginons que nous souhaitions que l’éditeur ‘nano’ soit intégré à notre image OPIE.
 Nous ajoutons simplement ce package au fichier à la variable INSTALL_PACKAGES du
fichier
/stuff/org.openembedded.dev/packages/meta/opie-image.bb
ÉTAPES DE CONFIGURATION
« AJOUTER UN PACKAGE À UNE IMAGE »
Puisque nous venons de modifier le fichier meta-bzImage.bb
il nous faut donc purger le package pour permettre sa reconstruction.
 bitbake -c clean meta-bzImage bitbake bzImage-fr-image
Il est possible de construire un patch
 diff -aburN org.openembedded.oz354x.orig/ org.openembedded.oz354x_fr >
org.openemb
ÉTAPES DE CONFIGURATION
« RECONSTRUCTION DE L’IMAGE BZIMAGE »
ÉMULATION AVEC QEMU
Qemu émule diverses architectures dont une qui nous intéresse,
Il nous est donc possible d’émuler notre image
Pour pouvoir réaliser cela plusieurs prérequis sont nécessaires.
ÉMULATION AVEC QEMU
« L’INSTALLATION DE QEMU »
Qemu émule diverses architectures dont une qui nous intéresse,
Il nous est donc possible d’émuler notre image
Pour pouvoir réaliser cela plusieurs prérequis sont nécessaires.
ÉMULATION AVEC QEMU
« OPENEMBEDDED & QEMU »
Au passage il faut noter que nous utiliserons l’émulateur qemu-system-arm fourni pas
le package qemu- native:
« qemu-system-arm -kernel zImage-2.6.17-qemuarm-20061008161924.bin -append "root=/de »
ÉMULATION AVEC QEMU
« OPENEMBEDDED & QEMU »
Des patchs sont ajouter pour
la prise en compte de l’écran
tactile:
ÉMULATION AVEC QEMU
« OPENEMBEDDED & QEMU »
ÉMULATION AVEC QEMU
« OPENEMBEDDED & QEMU »
Durant la réalisation de ce projet on a pu acquérir une petite expérience dans le
domaine des noyaux(Kernels) et on a réalisé une configuration d’un nouveau noyau
conçu complétement pour l’utilisation qui s’adapte avec nos besoins, et comment
l’installer avec openembedded.
CONCLUSION

Contenu connexe

Tendances

Linux Initialization Process (1)
Linux Initialization Process (1)Linux Initialization Process (1)
Linux Initialization Process (1)shimosawa
 
Linux Kernel Development
Linux Kernel DevelopmentLinux Kernel Development
Linux Kernel DevelopmentPriyank Kapadia
 
Shell Scripting in Linux
Shell Scripting in LinuxShell Scripting in Linux
Shell Scripting in LinuxAnu Chaudhry
 
Free radius coovachilli y daloradius
Free radius  coovachilli y daloradiusFree radius  coovachilli y daloradius
Free radius coovachilli y daloradiuslisset neyra
 
Linux Kernel Tour
Linux Kernel TourLinux Kernel Tour
Linux Kernel Toursamrat das
 
Embedded Linux/ Debian with ARM64 Platform
Embedded Linux/ Debian with ARM64 PlatformEmbedded Linux/ Debian with ARM64 Platform
Embedded Linux/ Debian with ARM64 PlatformSZ Lin
 
Arm device tree and linux device drivers
Arm device tree and linux device driversArm device tree and linux device drivers
Arm device tree and linux device driversHoucheng Lin
 
Systemd 간략하게 정리하기
Systemd 간략하게 정리하기Systemd 간략하게 정리하기
Systemd 간략하게 정리하기Seungha Son
 
Linux basics part 1
Linux basics part 1Linux basics part 1
Linux basics part 1Lilesh Pathe
 
Alphorm.com Formation Nouveautés Windows Server 2016
Alphorm.com Formation Nouveautés Windows Server 2016Alphorm.com Formation Nouveautés Windows Server 2016
Alphorm.com Formation Nouveautés Windows Server 2016Alphorm
 
linux device driver
linux device driverlinux device driver
linux device driverRahul Batra
 
Build your own embedded linux distributions by yocto project
Build your own embedded linux distributions by yocto projectBuild your own embedded linux distributions by yocto project
Build your own embedded linux distributions by yocto projectYen-Chin Lee
 
Part 02 Linux Kernel Module Programming
Part 02 Linux Kernel Module ProgrammingPart 02 Linux Kernel Module Programming
Part 02 Linux Kernel Module ProgrammingTushar B Kute
 
Getting Started with Buildroot
Getting Started with BuildrootGetting Started with Buildroot
Getting Started with BuildrootTrevor Woerner
 
Linux Initialization Process (2)
Linux Initialization Process (2)Linux Initialization Process (2)
Linux Initialization Process (2)shimosawa
 

Tendances (20)

Linux Initialization Process (1)
Linux Initialization Process (1)Linux Initialization Process (1)
Linux Initialization Process (1)
 
Linux Kernel Development
Linux Kernel DevelopmentLinux Kernel Development
Linux Kernel Development
 
Basic Linux Internals
Basic Linux InternalsBasic Linux Internals
Basic Linux Internals
 
Shell Scripting in Linux
Shell Scripting in LinuxShell Scripting in Linux
Shell Scripting in Linux
 
Free radius coovachilli y daloradius
Free radius  coovachilli y daloradiusFree radius  coovachilli y daloradius
Free radius coovachilli y daloradius
 
Linux Kernel Tour
Linux Kernel TourLinux Kernel Tour
Linux Kernel Tour
 
lab1
lab1lab1
lab1
 
Embedded Linux/ Debian with ARM64 Platform
Embedded Linux/ Debian with ARM64 PlatformEmbedded Linux/ Debian with ARM64 Platform
Embedded Linux/ Debian with ARM64 Platform
 
Arm device tree and linux device drivers
Arm device tree and linux device driversArm device tree and linux device drivers
Arm device tree and linux device drivers
 
Systemd 간략하게 정리하기
Systemd 간략하게 정리하기Systemd 간략하게 정리하기
Systemd 간략하게 정리하기
 
Linux basics part 1
Linux basics part 1Linux basics part 1
Linux basics part 1
 
Alphorm.com Formation Nouveautés Windows Server 2016
Alphorm.com Formation Nouveautés Windows Server 2016Alphorm.com Formation Nouveautés Windows Server 2016
Alphorm.com Formation Nouveautés Windows Server 2016
 
linux device driver
linux device driverlinux device driver
linux device driver
 
Block Drivers
Block DriversBlock Drivers
Block Drivers
 
Build your own embedded linux distributions by yocto project
Build your own embedded linux distributions by yocto projectBuild your own embedded linux distributions by yocto project
Build your own embedded linux distributions by yocto project
 
Embedded Linux on ARM
Embedded Linux on ARMEmbedded Linux on ARM
Embedded Linux on ARM
 
Linux device drivers
Linux device drivers Linux device drivers
Linux device drivers
 
Part 02 Linux Kernel Module Programming
Part 02 Linux Kernel Module ProgrammingPart 02 Linux Kernel Module Programming
Part 02 Linux Kernel Module Programming
 
Getting Started with Buildroot
Getting Started with BuildrootGetting Started with Buildroot
Getting Started with Buildroot
 
Linux Initialization Process (2)
Linux Initialization Process (2)Linux Initialization Process (2)
Linux Initialization Process (2)
 

Similaire à Exposé open embedded

Rapport openembedded
Rapport openembeddedRapport openembedded
Rapport openembeddedAyoub Rouzi
 
Rapport systéme embarqué busybox
Rapport systéme embarqué busyboxRapport systéme embarqué busybox
Rapport systéme embarqué busyboxAyoub Rouzi
 
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 PHP5Mame Cheikh Ibra Niang
 
Docker en Production (Docker Paris)
Docker en Production (Docker Paris)Docker en Production (Docker Paris)
Docker en Production (Docker Paris)Jérôme Petazzoni
 
Maintenance du système Linux
Maintenance du système LinuxMaintenance du système Linux
Maintenance du système LinuxEL AMRI El Hassan
 
Distro Recipes 2013 : Yocto / OpenEmbedded
Distro Recipes 2013 : Yocto / OpenEmbeddedDistro Recipes 2013 : Yocto / OpenEmbedded
Distro Recipes 2013 : Yocto / OpenEmbeddedAnne Nicolas
 
Mysql Apche PHP sous linux
Mysql Apche PHP sous linuxMysql Apche PHP sous linux
Mysql Apche PHP sous linuxKhalid ALLILI
 
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
 
Atelier Symfony2- Introduction
Atelier Symfony2- IntroductionAtelier Symfony2- Introduction
Atelier Symfony2- IntroductionMarwa OUNALLI
 
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 2012Jean-Marc Fontaine
 
Alphorm.com Formation Nagios et Cacti : Installation et Administration
Alphorm.com Formation Nagios et Cacti : Installation et AdministrationAlphorm.com Formation Nagios et Cacti : Installation et Administration
Alphorm.com Formation Nagios et Cacti : Installation et AdministrationAlphorm
 
05 - creation-playbook-ansible-stack-lamp.pdf
05 - creation-playbook-ansible-stack-lamp.pdf05 - creation-playbook-ansible-stack-lamp.pdf
05 - creation-playbook-ansible-stack-lamp.pdfbibouechristian
 
05 - creation-playbook-ansible-stack-lamp.pdf
05 - creation-playbook-ansible-stack-lamp.pdf05 - creation-playbook-ansible-stack-lamp.pdf
05 - creation-playbook-ansible-stack-lamp.pdfbibouechristian
 
Gestion des dépendances dans un projet PHP - RMLL 2012
Gestion des dépendances dans un projet PHP - RMLL 2012Gestion des dépendances dans un projet PHP - RMLL 2012
Gestion des dépendances dans un projet PHP - RMLL 2012Jean-Marc Fontaine
 
Installation et configuration d'openbravo
Installation et configuration d'openbravoInstallation et configuration d'openbravo
Installation et configuration d'openbravoSoumia Brabije
 

Similaire à Exposé open embedded (20)

Rapport openembedded
Rapport openembeddedRapport openembedded
Rapport openembedded
 
Rapport systéme embarqué busybox
Rapport systéme embarqué busyboxRapport systéme embarqué busybox
Rapport systéme embarqué busybox
 
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
 
Noyau
NoyauNoyau
Noyau
 
Docker en Production (Docker Paris)
Docker en Production (Docker Paris)Docker en Production (Docker Paris)
Docker en Production (Docker Paris)
 
Yocto oe
Yocto oeYocto oe
Yocto oe
 
Maintenance du système Linux
Maintenance du système LinuxMaintenance du système Linux
Maintenance du système Linux
 
Distro Recipes 2013 : Yocto / OpenEmbedded
Distro Recipes 2013 : Yocto / OpenEmbeddedDistro Recipes 2013 : Yocto / OpenEmbedded
Distro Recipes 2013 : Yocto / OpenEmbedded
 
Mysql Apche PHP sous linux
Mysql Apche PHP sous linuxMysql Apche PHP sous linux
Mysql Apche PHP sous linux
 
Présentation1
Présentation1Présentation1
Présentation1
 
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...
 
Atelier Symfony2- Introduction
Atelier Symfony2- IntroductionAtelier Symfony2- Introduction
Atelier Symfony2- Introduction
 
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
 
Alphorm.com Formation Nagios et Cacti : Installation et Administration
Alphorm.com Formation Nagios et Cacti : Installation et AdministrationAlphorm.com Formation Nagios et Cacti : Installation et Administration
Alphorm.com Formation Nagios et Cacti : Installation et Administration
 
05 - creation-playbook-ansible-stack-lamp.pdf
05 - creation-playbook-ansible-stack-lamp.pdf05 - creation-playbook-ansible-stack-lamp.pdf
05 - creation-playbook-ansible-stack-lamp.pdf
 
05 - creation-playbook-ansible-stack-lamp.pdf
05 - creation-playbook-ansible-stack-lamp.pdf05 - creation-playbook-ansible-stack-lamp.pdf
05 - creation-playbook-ansible-stack-lamp.pdf
 
Gestion des dépendances dans un projet PHP - RMLL 2012
Gestion des dépendances dans un projet PHP - RMLL 2012Gestion des dépendances dans un projet PHP - RMLL 2012
Gestion des dépendances dans un projet PHP - RMLL 2012
 
Snort implementation
Snort implementationSnort implementation
Snort implementation
 
Débuter avec mdt
Débuter avec mdtDébuter avec mdt
Débuter avec mdt
 
Installation et configuration d'openbravo
Installation et configuration d'openbravoInstallation et configuration d'openbravo
Installation et configuration d'openbravo
 

Plus de Ayoub Rouzi

Khdemti.com: We revolutionize the way project owners and freelancers work tog...
Khdemti.com: We revolutionize the way project owners and freelancers work tog...Khdemti.com: We revolutionize the way project owners and freelancers work tog...
Khdemti.com: We revolutionize the way project owners and freelancers work tog...Ayoub Rouzi
 
NFS, MPI, Programmation Sérial & Parallèle avec Condor Scénarios et Simulatio...
NFS, MPI, Programmation Sérial & Parallèle avec Condor Scénarios et Simulatio...NFS, MPI, Programmation Sérial & Parallèle avec Condor Scénarios et Simulatio...
NFS, MPI, Programmation Sérial & Parallèle avec Condor Scénarios et Simulatio...Ayoub Rouzi
 
Reseaux mobiles: Rapport Projet : « Lien radio »
Reseaux mobiles: Rapport Projet : « Lien radio »Reseaux mobiles: Rapport Projet : « Lien radio »
Reseaux mobiles: Rapport Projet : « Lien radio »Ayoub Rouzi
 
Cahier des charges: Traiteur industriel des produits agro-Alimentaires culina...
Cahier des charges: Traiteur industriel des produits agro-Alimentaires culina...Cahier des charges: Traiteur industriel des produits agro-Alimentaires culina...
Cahier des charges: Traiteur industriel des produits agro-Alimentaires culina...Ayoub Rouzi
 
Application Android: Projet assurance
Application Android: Projet assuranceApplication Android: Projet assurance
Application Android: Projet assuranceAyoub Rouzi
 
Rapport DVWA: File Upload
Rapport DVWA: File UploadRapport DVWA: File Upload
Rapport DVWA: File UploadAyoub Rouzi
 
Rapport DVWA: CSRF
Rapport DVWA: CSRFRapport DVWA: CSRF
Rapport DVWA: CSRFAyoub Rouzi
 
Ateliers d’une application Web vulnérable
Ateliers d’une application Web vulnérable Ateliers d’une application Web vulnérable
Ateliers d’une application Web vulnérable Ayoub Rouzi
 
Rapport j2ee: Gestion d’un compte bancaire En utilisant les EJB 3.0
Rapport j2ee: Gestion d’un compte bancaire En utilisant les EJB 3.0Rapport j2ee: Gestion d’un compte bancaire En utilisant les EJB 3.0
Rapport j2ee: Gestion d’un compte bancaire En utilisant les EJB 3.0Ayoub Rouzi
 
WannaCry / Wannacrypt Ransomware
WannaCry / Wannacrypt RansomwareWannaCry / Wannacrypt Ransomware
WannaCry / Wannacrypt RansomwareAyoub Rouzi
 
Mobile ip - IT entités fonctionnelles de Mobile IP
Mobile ip - IT entités fonctionnelles de Mobile IPMobile ip - IT entités fonctionnelles de Mobile IP
Mobile ip - IT entités fonctionnelles de Mobile IPAyoub Rouzi
 
Résumé projet Smart Traffic Managment System Real Time (STMSRT)
Résumé projet Smart Traffic Managment System Real Time (STMSRT)Résumé projet Smart Traffic Managment System Real Time (STMSRT)
Résumé projet Smart Traffic Managment System Real Time (STMSRT)Ayoub Rouzi
 
Smart Parking: Stationnement intelligent État de l’art, Étude d’un exemple De...
Smart Parking: Stationnement intelligent État de l’art, Étude d’un exemple De...Smart Parking: Stationnement intelligent État de l’art, Étude d’un exemple De...
Smart Parking: Stationnement intelligent État de l’art, Étude d’un exemple De...Ayoub Rouzi
 
Smart traffic managment system real time (stmsrt)
Smart traffic managment system real time (stmsrt)Smart traffic managment system real time (stmsrt)
Smart traffic managment system real time (stmsrt)Ayoub Rouzi
 
Freelance,Travail traditionnel, Entrepreneuriat...Quel choix a suivre ?
Freelance,Travail traditionnel, Entrepreneuriat...Quel choix a suivre ?Freelance,Travail traditionnel, Entrepreneuriat...Quel choix a suivre ?
Freelance,Travail traditionnel, Entrepreneuriat...Quel choix a suivre ?Ayoub Rouzi
 
Programmation des cartes Arduino - Se familiariser avec la programmation Simple
Programmation des cartes Arduino - Se familiariser avec la programmation SimpleProgrammation des cartes Arduino - Se familiariser avec la programmation Simple
Programmation des cartes Arduino - Se familiariser avec la programmation SimpleAyoub Rouzi
 
Projet Radare de Recule - MANIPULATION AVEC L’ARDUINO
Projet Radare de Recule - MANIPULATION AVEC L’ARDUINOProjet Radare de Recule - MANIPULATION AVEC L’ARDUINO
Projet Radare de Recule - MANIPULATION AVEC L’ARDUINOAyoub Rouzi
 
Presentation kernel - Kernel Linux - Configuration – Compilation & installation
Presentation kernel - Kernel Linux - Configuration –  Compilation & installationPresentation kernel - Kernel Linux - Configuration –  Compilation & installation
Presentation kernel - Kernel Linux - Configuration – Compilation & installationAyoub Rouzi
 

Plus de Ayoub Rouzi (20)

Khdemti.com: We revolutionize the way project owners and freelancers work tog...
Khdemti.com: We revolutionize the way project owners and freelancers work tog...Khdemti.com: We revolutionize the way project owners and freelancers work tog...
Khdemti.com: We revolutionize the way project owners and freelancers work tog...
 
NFS, MPI, Programmation Sérial & Parallèle avec Condor Scénarios et Simulatio...
NFS, MPI, Programmation Sérial & Parallèle avec Condor Scénarios et Simulatio...NFS, MPI, Programmation Sérial & Parallèle avec Condor Scénarios et Simulatio...
NFS, MPI, Programmation Sérial & Parallèle avec Condor Scénarios et Simulatio...
 
Reseaux mobiles: Rapport Projet : « Lien radio »
Reseaux mobiles: Rapport Projet : « Lien radio »Reseaux mobiles: Rapport Projet : « Lien radio »
Reseaux mobiles: Rapport Projet : « Lien radio »
 
Cahier des charges: Traiteur industriel des produits agro-Alimentaires culina...
Cahier des charges: Traiteur industriel des produits agro-Alimentaires culina...Cahier des charges: Traiteur industriel des produits agro-Alimentaires culina...
Cahier des charges: Traiteur industriel des produits agro-Alimentaires culina...
 
Application Android: Projet assurance
Application Android: Projet assuranceApplication Android: Projet assurance
Application Android: Projet assurance
 
Scheduler & SLA
Scheduler & SLAScheduler & SLA
Scheduler & SLA
 
Rapport DVWA: File Upload
Rapport DVWA: File UploadRapport DVWA: File Upload
Rapport DVWA: File Upload
 
Rapport DVWA: CSRF
Rapport DVWA: CSRFRapport DVWA: CSRF
Rapport DVWA: CSRF
 
Ateliers d’une application Web vulnérable
Ateliers d’une application Web vulnérable Ateliers d’une application Web vulnérable
Ateliers d’une application Web vulnérable
 
Rapport j2ee: Gestion d’un compte bancaire En utilisant les EJB 3.0
Rapport j2ee: Gestion d’un compte bancaire En utilisant les EJB 3.0Rapport j2ee: Gestion d’un compte bancaire En utilisant les EJB 3.0
Rapport j2ee: Gestion d’un compte bancaire En utilisant les EJB 3.0
 
L'estime de soi
L'estime de soiL'estime de soi
L'estime de soi
 
WannaCry / Wannacrypt Ransomware
WannaCry / Wannacrypt RansomwareWannaCry / Wannacrypt Ransomware
WannaCry / Wannacrypt Ransomware
 
Mobile ip - IT entités fonctionnelles de Mobile IP
Mobile ip - IT entités fonctionnelles de Mobile IPMobile ip - IT entités fonctionnelles de Mobile IP
Mobile ip - IT entités fonctionnelles de Mobile IP
 
Résumé projet Smart Traffic Managment System Real Time (STMSRT)
Résumé projet Smart Traffic Managment System Real Time (STMSRT)Résumé projet Smart Traffic Managment System Real Time (STMSRT)
Résumé projet Smart Traffic Managment System Real Time (STMSRT)
 
Smart Parking: Stationnement intelligent État de l’art, Étude d’un exemple De...
Smart Parking: Stationnement intelligent État de l’art, Étude d’un exemple De...Smart Parking: Stationnement intelligent État de l’art, Étude d’un exemple De...
Smart Parking: Stationnement intelligent État de l’art, Étude d’un exemple De...
 
Smart traffic managment system real time (stmsrt)
Smart traffic managment system real time (stmsrt)Smart traffic managment system real time (stmsrt)
Smart traffic managment system real time (stmsrt)
 
Freelance,Travail traditionnel, Entrepreneuriat...Quel choix a suivre ?
Freelance,Travail traditionnel, Entrepreneuriat...Quel choix a suivre ?Freelance,Travail traditionnel, Entrepreneuriat...Quel choix a suivre ?
Freelance,Travail traditionnel, Entrepreneuriat...Quel choix a suivre ?
 
Programmation des cartes Arduino - Se familiariser avec la programmation Simple
Programmation des cartes Arduino - Se familiariser avec la programmation SimpleProgrammation des cartes Arduino - Se familiariser avec la programmation Simple
Programmation des cartes Arduino - Se familiariser avec la programmation Simple
 
Projet Radare de Recule - MANIPULATION AVEC L’ARDUINO
Projet Radare de Recule - MANIPULATION AVEC L’ARDUINOProjet Radare de Recule - MANIPULATION AVEC L’ARDUINO
Projet Radare de Recule - MANIPULATION AVEC L’ARDUINO
 
Presentation kernel - Kernel Linux - Configuration – Compilation & installation
Presentation kernel - Kernel Linux - Configuration –  Compilation & installationPresentation kernel - Kernel Linux - Configuration –  Compilation & installation
Presentation kernel - Kernel Linux - Configuration – Compilation & installation
 

Exposé open embedded

  • 1. Réalisé Par: *AYOUB ROUZI *ABDELHAKIM SALAMA *FADILI MUSTAFA *ELMALKAOUI YASSINE Encadré Par: Mr.Abdelhakim Anouar MINIMISER LE SYSTÈME D'EXPLOITATION EN UTILISANT OPENEMBEDDED
  • 2.  Introduction  OpenEmbedded en quelques mots  Historique et rappels  OpenEmbedded  OpenEmbedded en détail  Cas d’utilisation  OpenEmbedded Meta data  Bitbake  OpenEmbedded en pratique  Comment tester ?  Conclusion PLAN:
  • 3.  OpenEmbedded est un Framework de compilation de composants logiciels libres destines a être déployés sur des systèmes embarques  production d’un simple binaire jusqu’à une distribution complété  support de nombreuses architectures et configurations flexible  autosuffisant et déterministe OPENEMBEDDED EN QUELQUES MOTS
  • 5.  Les briques logiciels de base pour construire un système Linux glibc: GNU C library. gcc: GNU C compiler. binutils: outils manipulant les fichiers objet et binaire Ces éléments constituent une toolchain, avec laquelle peut ensuite être compile tout autre composant (make, le kernel, X, KDE, ...) HISTORIQUE ET RAPPELS
  • 6.  Une toolchain permet de compiler sur une machine hôte (’build’, ’native’) d’architecture A du code exécutable sur une machine cible (’Target’) d’architecture B.  si A == B: on parle de toolchain et de compilation  si A != B: on parle de cross-toolchain et de cross-compilation HISTORIQUE ET RAPPELS
  • 7.  Pour compiler du code pour une machine cible, il y a plusieurs possibilités  récupérer une standalone/prebuilt toochain/SDK s’exécutant sur la machine cible. Rarement viable par manque de mémoire et puissance de la machine embarquée  compiler une toochain/SDK exécutable sur la machine cible  récupérer une cross-toochain s’exécutant sur une machine hôte générant du code spécifique a la machine cible (ex: ARM)  compiler une cross-toolchain HISTORIQUE ET RAPPELS « COMPILATION POUR L’EMBARQUE»
  • 9.  Les systèmes de build existants ne gèrent pas les dépendances ou montrent vite leurs limites d’utilisation grande échelle par:  manque de flexibilité  lourdeur de maintenance (ex: des makefiles)  OpenEmbedded a ete crée en 2003 par Chris Larson:  pour fédérer les efforts de développement des différentes distro embarquées qui sont/étaient trop souvent spécifiques à une seule architecture cible.  pour fournir un systéme de build flexible et puissant, utilisant une syntaxe et sémantique plus adaptée que des makefiles OPENEMBEDDED « POURQUOI AVOIR CRÉER OPENEMBEDDED ?»
  • 10.  compilation de binaires/paquets/distributions complètes exnihilo (from scratch)  possibilité d’utiliser une toolchain préexistante  génération d’une même distribution déployable sur différente architecture cible  plusieurs milliers de paquets disponibles: vim, python, qt4, etc.  plusieurs images disponibles: console(2Mo), gpe-image, etc.  customisation: toolchain (glibc/uClibc/eglibc), scripts d’init,découpage des paquets.  kernel très récents supportes (2.6.24)syntaxe simple et puissante des .bb  pleins d’autres encore ...  parce que c’est fun de créer sa propre mini distribution OPENEMBEDDED « LES ATOUTS D’OPENEMBEDDED»
  • 11.  Des laboratoires de recherches  Des sociétés spécialisées dans l’électronique embarque  Des sociétés de de télécom (t´téléphonie mobile / PDA)  Des projets libres de distributions Linux embarquée (ex: nslu2,OpenMoko) OPENEMBEDDED « QUI UTILISE OPENEMBEDDED ?»
  • 13. Techniquement, le projet OpenEmbedded se compose de bitbake: la commande utilisée pour construire d’un simple paquet jusqu’à une distribution complète avec OpenEmbedded les metadata d’OpenEmbedded: l’ensemble des fichiers que bitbake exploite pour pouvoir faire cela OPENEMBEDDED EN DÉTAIL « OPENEMBEDDED = BITBAKE + METADATA»
  • 14. Le dépôt des Meta data contient l’ensemble des données nécessaires et suffisantes pour (cross)-compiler des composants logiciels open sources  On distingue trois principaux types de Meta data  recipe (*.bb): caractérise un composant logiciel (executable, bibliothéques, kernel.)  class (*.bbclass): contient des taches communes aux recipes,  conf (*.conf): fichier de configuration, OPENEMBEDDED EN DÉTAIL « OPENEMBEDDED METADATA REPOSITORY»
  • 15.  Un recipe contient l’ensemble des données permettant de compiler  un composant depuis son code source.  description et licence  liens vers les sources et patchs `a appliquer  dépendances (build dépendances, runtime dépendances)  options de configuration  customisation du découpage et contenu des paquets générées (-dev, -doc, etc.) OPENEMBEDDED EN DÉTAIL « OPENEMBEDDED METADATA: RECIPE (*.BB) »
  • 16.  Les fichiers de configuration  local.conf: contient votre conf personnelle de build (TARGET ARCH, DISTRO, ...)  machine configurations: common architectures, routers, PDA,GSM phones, ...  distribution policies: packaging, naming, preferred version ofsoftware, OPENEMBEDDED EN DÉTAIL « OPENEMBEDDED METADATA: CONF (*.CONF) »
  • 17.  un exécuteur de taches et un gestionnaire de metadata  un peu le ’make’ d’OpenEmbedded  inspire de Portage, le gestionnaire de paquet de la distribution Gentoo  écrit en python OPENEMBEDDED EN DÉTAIL « BITBAKE »
  • 18.  Gérer la cross-compilation  Gérer les dépendances inter-paquets  build time on target architectures  build time on native architectures  Runtime  Linux distribution agnostic  Architecture agnostic  Gérer les metadata conditionnellement (target, OS, distro,machine)  Multiple target operating system (Linux, BSDs, etc.) OPENEMBEDDED EN DÉTAIL « BUTS DE BITBAKE »
  • 20.  Pour faire c’est premiers pas avec OpenEmbedded et bitbake: http://www.openembedded.org/wiki/GettingStarted Un seul fichier à configurer: /build/conf/local.conf OPENEMBEDDED EN PRATIQUE « OPENEMBEDDED CONFIGURATION »
  • 21. OPENEMBEDDED EN PRATIQUE « UTILISATION DE BITBAKE » Les paquets et images résultantes sont dans tmp/deploy/
  • 23.  Une personnalisation simple mkdir -p /stuff/build/conf /stuff/tools/ cd /stuff/tools svn co svn://svn.berlios.de/bitbake/branches/bitbake -1.4 bitbake cd bitbake ./setup.py build  Pour plus d’informations sur bitbake : cd /stuff/tools/bitbake/doc/manual && make  pour add bitbake a linux PATH : export PATH=$HOME/oe/bitbake/bin:$PATH L'ENVIRONNEMENT DE DÉVELOPPEMENT « INSTALLATION DE L'ENVIRONNEMENT DE DÉVELOPPEMENT »
  • 24.  aptget install wget curl L'ENVIRONNEMENT DE DÉVELOPPEMENT « INSTALLATION DES OUTILLES POUR LE CODE »
  • 25. L'ENVIRONNEMENT DE DÉVELOPPEMENT « INSTALLATION DE COMPILATEUR POUR PYTHON »  aptget install python-psycop2
  • 26.  Dans cet exemple nous utiliserons la branche (git.openembedded.org/openembedded) L'ENVIRONNEMENT DE DÉVELOPPEMENT « INSTALLATION D'OPENEMBEDDED »
  • 27. mtn –db=OE.mtn pull monotone.openembedded.org org.openembedded.stable L'ENVIRONNEMENT DE DÉVELOPPEMENT « MISE À JOUR DE LA BASE OPENOMBEDDED »
  • 28. BBFILES = "${HOME}/openombedde/recipes/bb/bb_1.2.bb" Choisir une machine depuis : org.openembedded.stable/conf/machine/ L'ENVIRONNEMENT DE DÉVELOPPEMENT « MODIFIER LE FICHIER BUILD/CONF/LOCAL.CONF »
  • 30.  PARALLEL_MAKE = "j 4"  BB_NUMBER_THREADS = "4“  Spécifier le système de fichier  IMAGE_FSTYPES = "ext2 tar" L'ENVIRONNEMENT DE DÉVELOPPEMENT « SPÉCIFIER LE NOMBRE DE PROCESSUS À UTILISER »
  • 31.  Crée un environnement de configuration des scripts  export PATH=$HOME/openembedded/bitbake/bin:$PATH  export BBPATH=$HOME/oe/build:$HOME/openembedded  Configuration de fichier système de Ubuntu  echo 0 > /proc/sys/vm/mmap_min_addr L'ENVIRONNEMENT DE DÉVELOPPEMENT « INSTALLATION DE L'ENVIRONNEMENT DE DÉVELOPPEMENT »
  • 33. On a téléchargé bitbake et après on a décompresser le fichier, et ça nous donne les fichiers suivants : ÉTAPES DE CONFIGURATION « SPÉCIFIER LE NOMBRE DE PROCESSUS À UTILISER »
  • 34.  Il nous est aussi possible d’ajouter un package à une image.  Imaginons que nous souhaitions que l’éditeur ‘nano’ soit intégré à notre image OPIE.  Nous ajoutons simplement ce package au fichier à la variable INSTALL_PACKAGES du fichier /stuff/org.openembedded.dev/packages/meta/opie-image.bb ÉTAPES DE CONFIGURATION « AJOUTER UN PACKAGE À UNE IMAGE »
  • 35. Puisque nous venons de modifier le fichier meta-bzImage.bb il nous faut donc purger le package pour permettre sa reconstruction.  bitbake -c clean meta-bzImage bitbake bzImage-fr-image Il est possible de construire un patch  diff -aburN org.openembedded.oz354x.orig/ org.openembedded.oz354x_fr > org.openemb ÉTAPES DE CONFIGURATION « RECONSTRUCTION DE L’IMAGE BZIMAGE »
  • 37. Qemu émule diverses architectures dont une qui nous intéresse, Il nous est donc possible d’émuler notre image Pour pouvoir réaliser cela plusieurs prérequis sont nécessaires. ÉMULATION AVEC QEMU « L’INSTALLATION DE QEMU »
  • 38. Qemu émule diverses architectures dont une qui nous intéresse, Il nous est donc possible d’émuler notre image Pour pouvoir réaliser cela plusieurs prérequis sont nécessaires. ÉMULATION AVEC QEMU « OPENEMBEDDED & QEMU »
  • 39. Au passage il faut noter que nous utiliserons l’émulateur qemu-system-arm fourni pas le package qemu- native: « qemu-system-arm -kernel zImage-2.6.17-qemuarm-20061008161924.bin -append "root=/de » ÉMULATION AVEC QEMU « OPENEMBEDDED & QEMU »
  • 40. Des patchs sont ajouter pour la prise en compte de l’écran tactile: ÉMULATION AVEC QEMU « OPENEMBEDDED & QEMU »
  • 41. ÉMULATION AVEC QEMU « OPENEMBEDDED & QEMU »
  • 42. Durant la réalisation de ce projet on a pu acquérir une petite expérience dans le domaine des noyaux(Kernels) et on a réalisé une configuration d’un nouveau noyau conçu complétement pour l’utilisation qui s’adapte avec nos besoins, et comment l’installer avec openembedded. CONCLUSION

Notes de l'éditeur

  1. HA: Commençant d’abord par la présentation et le contexte de notre mini projet dans lequel on va jeter un coup d’œil dans la partie théorique du projet. Après cela on va détailler un petit peut notre sujet : Arduino & radar de recul notamment: le cahier de charge les outils utilisés ainsi que les composantes et leurs utilisation. Ensuite on va présenter notre plaquette d’essai. Après cela on passera a la présentations du code source utilisé. Et avant de conclure on va montrer la manip / test d’utilisation du mini projet.