SlideShare une entreprise Scribd logo
1  sur  24
Télécharger pour lire hors ligne
Minimiser Le système d’exploitation avec Openembedded
Rapport de Projet
« Systèmes embarqués »
Minimiser le système d’exploitation
avec OpenEmbedded
Minimiser Le système d’exploitation avec Openembedded
SOMMAIRE
 Introduction…...........................................................................................
 Installation de l'environnement de développement :
 Installation de bitbake :
…………………......................................................................
 Installation des utiles pour le code :
…………………………………………………………..
 Installation des utiles pour le compilateur :
.......................................................
 Installation de compilateur pour python :
...........................................................
 Installation des utiles de compilateur pour python: ................................
 Installation d'Openembedded : ..................................................................
 Initialisation de l’environnement :
 Création de packages et/ou d’images : ............................................................
 Quelques commandes ‘bitbake’ : ....................................................................
 Débug : ................................................................................................................
 Ajouter un package à une image : ...................................................................
 Pourquoi recompiler notre noyau ? : ..............................................................
 Compilation du noyau :
 Noyau : ………....................................................................................................
 Audio/Video : .....................................................................................................
 Bureautique : ......................................................................................................
 Réseau : ...............................................................................................................
 Localisation : ......................................................................................................
 Divers : ................................................................................................................
 Reconstruction de l’image BZIMAGE :
 OpenEmbedded & qemu: ………………...................................................
 Conclusion
Minimiser Le système d’exploitation avec Openembedded
INTRDUCTION
Pourquoi vouloir compiler un nouveau noyau ? Ce n'est en général pas nécessaire, car le
noyau par défaut reconnaît la plupart des configurations. En outre différents noyaux sont
disponibles. Vous devriez chercher s'il n'existe pas de paquet contenant un noyau qui
corresponde à votre matériel.
Dans Ce projet présente le processus permettant la compilation d’images et minimiser le
système d’exploitation avec openembedded
Avec openembedded
OpenEmbedded est un Framework de compilation de composants logiciels libres destinés à
être déployées sur des systèmes embarqués.
Parmi les caractéristiques d’openEmbedded :
 Production d’un simple binaire jusqu’à une distribution complète
 Support de nombreuses architectures et configurations
 Flexible
 Autosuffisant et déterministe
Minimiser Le système d’exploitation avec Openembedded
Installation de l'environnement de développement
Installation de bitbake :
Bitbake est un outil de gestion de packages qui permet :
• la cross-compilation
• Les dépendances inter packages
• la construction de packages et ensemble de packages (téléchargement des sources,
configuration, compilation et packaging)
• 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 bitbacke a linux PATH :
 export PATH=$HOME/oe/bitbake/bin:$PATH
Minimiser Le système d’exploitation avec Openembedded
Installation des utiles pour le code :
 aptget install wget curl
 aptget install cvs subversion monotone git
Minimiser Le système d’exploitation avec Openembedded
Installation des utiles pour le compilateur :
Installation de compilateur pour python :
Minimiser Le système d’exploitation avec Openembedded
Installation des utiles compilateur pour python :
Installation d'Openembedded
Dans cet exemple nous utiliserons la branche (git.openembedded.org/openembedded)
 git colone git ://git.openembedded.org/openembedded
Minimiser Le système d’exploitation avec Openembedded
Mise à jour de la base Openombedded :
 mtn –db=OE.mtn pull monotone.openembedded.org org.openembedded.stable
Faire la mise a jours automatiquement
 cd $HOME/oe/org.openembedded.stable mtn update
Configuration locale :
 cd $HOME/Oe
 cp org.openembedded.oz354x/conf/local.conf.openzaurus-3.5.4
 vi build/conf/local.conf
Modifier le fichier build/conf/local.conf de manière à avoir :
Définir ou les fichiers .bb existe
 BBFILES = "${HOME}/openombedde/recipes/bb/bb_1.2.bb"
Choisir une machine depuis :
 org.openembedded.stable/conf/machine/
Minimiser Le système d’exploitation avec Openembedded
Après on accède ou fichier de configuration :
Choisir une distribution depuis :
 org.openembedded.stable/conf/distro/
Spécifier le nombre de processus à utiliser
 PARALLEL_MAKE = "-j 4"
 BB_NUMBER_THREADS = "4"
Minimiser Le système d’exploitation avec Openembedded
Spécifier le système de fichier à utiliser pour le créer :
 IMAGE_FSTYPES = "ext2 tar"
Initialisation de l’environnement :
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
Création de packages et/ou d’images
Créer un simple package :
bitbake nano
...
Packaged contents of nano into /stuff/tmp/deploy/ipk/nano_1.3.9-r0_armv5te.ipk
Packaged contents of nano-doc into /stuff/tmp/deploy/ipk/nano-doc_1.3.9-r0_armv5te
...
Packaged contents of nano-locale-fr into /stuff/tmp/deploy/ipk/nano-locale-fr_1.3.
Bitbake lors de sa première utilisation créera un cache dans
/stuff/tmp/cache/bb_cache.dat.
Par la suite ce sera ce cache qui sera utilisé.
Minimiser Le système d’exploitation avec Openembedded
Donc in peut installer bitbake soit par la méthode nano ou en télécharger l’archive
et après le décompresser et l’installer :
On a téléchargé bitbake et après on a décompresser le fichier, et ça nous donne les
fichiers suivants :
Quelques commandes ‘bitbake’ :
La commande suivante permet de lister toutes les taches lors de la création d’un
package :
 bitbake -b <path to bb file>
Pour consulter toutes les variables utilisées lors de la compilation (ex : nano) :
 bitbake -e /stuff/org.openembedded.oz354x/packages/nano/nano_1.3.9.bb |more
Pour voir la valeur d’une variable OE d’un package :
 bitbake -b ../openembedded/packages/meta/bootstrap-image.bb -c showdata
Important
Créer un groupe de packages :
 bitbake bzImage-image
Pour la compilation prévoir au moins 300Mo disponibles pour le téléchargement des
sources (DL_DIR) et 4.5Go pour l’espace de travail (/stuff). Après quelques heures
de compilation … (et divers petits problèmes avec la version de développement) …
De la même manière il est possible de créer une image Opie
 bitbake opie-image
ls /stuff/tmp/deploy/images/3.5.4.1-rc4/akita/opie*
Minimiser Le système d’exploitation avec Openembedded
opie-image-akita-20060518143804.rootfs.img
opie-image-akita-20060518143804.rootfs.tar.bz2
Créer la totalité des packages (déconseillé)
 bitbake world
Pour nettoyer/supprimer un package :
 bitbake -c clean {Le Package}
Débug
Lorsqu'un package refuse obstinément de compiler il est souvent intéressant de
reprendre les étapes de la compilation une à une.
Pour mémoire, on peut connaitre la série d'actions exécuté sur le package avec la
commande :
bitbake -b <path to bb file> -c listtasks
Et les variables positionnées :
bitbake -e <path to bb file>
On peut ainsi réxécuter les actions
...
bitbake -b <path to bb file> -c configure
bitbake -b <path to bb file> -c compile
...
Ce peut ne pas être suffisant, les options de configuration et de compilation étant
fixées dans le fichier .bb peuvent surement être affinées.
Openembedded lorsqu'il exécute une actions (fetch, configure, compile, ...) créée en
premier lieu le script Shell qui représente cette action et l'exécute tout en loguant le
résultat. Intéressant ... Il est donc possible de réxécuter un script ayant échoué.
Minimiser Le système d’exploitation avec Openembedded
Tout d’abord on se rend à l'emplacement des sources du package. Imaginons que le
package 'openssl' ce soit planté lors de l'exécution du do_compile. (Ou tout autre
actions).
cd /stuff/dev/tmp/work/armv5te-linux/openssl-0.9.7g-r2 ls temp
run.do_configure.3581 log.do_configure.3581 run.do_compile.3581
log.do_compile.3581
Copions le fichier run.do_compile.3581 en debug.sh. Dans ce dernier recherchons la
fonction 'do_compile' (ou do_confiure, ou ...) et remplacons oe_make par bash.
Lors de l'exécution de ce script nous récupérons un Shell avec l'environnement de
cross compilation correctement paramétré.
Et donc maintenant un simple make reproduit l'erreur constatée. Il ne reste plus qu'à
en connaitre la cause .
Ajouter un package à une image
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
Et on relance
 bitbake opie-image
Cette méthode nous permet de personnaliser très facilement une image (par
exemple : Openzaurus.)
Note : Les fichiers BB permettent la construction des packages, on y trouve diverse
dépendance :
DEPENDS : sont les packages dont nous auront besoin pour la compilation
RDEPENDS : sont ceux dont nous auront besoin pour l’exécution.
Minimiser Le système d’exploitation avec Openembedded
Montage et modification de l’image
Pour modifier manuellement notre image (bzImage) il nous faut la ‘monter’ : Pré
requis : mtd-tools
 apt-get install mtd-tools
On peut maintenant personnaliser notre image. Et enfin construire une nouvelle
image y incluant nos modifications.
 mkfs.jffs2 --root=/tmp/bzImage/ --faketime --little-endian --eraseblock=0x4000/ cat
/stuff/tmp/staging/arm-linux/lib/sharp-flash-header/header-c700.bin /tmp/my-gp
flashage de /tmp/my-bzImage.img (en initrd.bin) Et pour finir un peu de nettoyage :
 umount /tmp/bzImage && rmdir /tmp/openzaurus rmmod jffs2 mtdram mtdblock
 rm -f /dev/bzImage
Pourquoi recompiler notre noyau ?
Le noyau de base installé sur notre Ubuntu supporte diverses fonctionnalités qui sont
directement intégrées dans le noyau ou sous forme de module. Dans la majorité des
cas ce noyau est suffisant pour une exploitation normale de l’appareil et à la
reconnaissance de la plupart des matériels.
Mais imaginons que nous ayons reçu un nouveau matériel qui ne serait pas reconnu
ou que nous souhaitions intégrer une fonction qui ne serait pas implémentée.
C’est alors qui nous faudrait recompiler le noyau pour cette prise en charge.
Minimiser Le système d’exploitation avec Openembedded
Compilation du noyau
Pour permettre la compilation d’un noyau, nous allons maintenant tester notre
environnement. Commençons simplement par la compilation notre image
bzImge.bin et initrd.bin (bootstrap). Nous commençons par charger le module jffs2
pour la création de l’image initrd.bin
 (modprobe jffs2) bitbake task-bootstrap bitbake bootstrap-image
Configuration d’un nouveau noyau
Pour éviter de modifier manuellement le fichier de configuration nous utiliserons le
script make des sources du noyau. Tout d’abord sauvegarde de la config de base
 cp /stuff/org.openembedded.oz354x/packages/linux/linux-openzaurus-2.6.16/defconfig/
/stuff/org.openembedded.oz354x/packages/linux/linux-openzaurus-2.6.16/defconfig
Les divers menus nous permettent de customiser notre noyau.
J’ajoute la gestion iptables pour la prise en charge du firewalling Pour améliore la
configuration il est aussi possible d’ajouter la gestion de la QoS.
Ensuite je sauvegarde et sors de l’utilitaire de configuration.
Le fichier .config est présent avec toutes nos modifications, c’est donc celui-ci qui
sera utilisé lors de la compilation du noyau. Pour cela on remplace la config du
package linux-openzaurus.
 cp .config /stuff/org.openembedded.oz354x/packages/linux/linux-
openzaurus-2.6.16/d
La config de notre noyau étant terminée.
Voyons voir le fichier qui permet cette compilation de l’image minimal. Et comme
les choses sont bien faites, il se nomme bootstrap-image.bb
 vi /stuff/org.openembedded.oz354x/packages/meta/bootstrap-image.b
Minimiser Le système d’exploitation avec Openembedded
Pour la Création de notre image bootstrap :
bitbake -c clean linux-openzaurus bitbake -c clean zaurus-updater bitbake bootstrap-image
Nous pouvons maintenant de tester notre noyau en bootant directement sur l’image
bootstrap que nous venons de créer.
Et un modprobe ip_tables nous confirme l’installation des nouveaux modules. Et
maintenant notre image BZIMAGE avec un kernel minimiser
Noyau
Nous aurions pu pour le tester créer une image bootstrap.
 bitbake bootstrap-image
Passons maintenant à la personnalisation de BZIMAGE.
Une copie du fichier bzImage-image.bb nous permettra de personnaliser le contenu
de notre image.
 cp /stuff/org.openembedded /packages/meta/bzImage-image.bb/stuff/org.openembedde
Audio/Video
Ajout de mplayer
 bitbake mplayer
 bitbake mplayer-common
Bureautique
 bitbake abiword bitbake vim
on a aussi ajouté le fichier packages/base-files/base-files/share/dot.vimrc et
modifié packages/base-files_3.0.14.bb pour avoir la colorisation sous Vim.
Réseau
 bitbake tcpdump bitbake kismet bitbake nmap
Minimiser Le système d’exploitation avec Openembedded
Localisation
Le fichier glibc_2.3.5+cvs20050627.bb sera modifié de manière à appliquer un patch qui
modifiera libc/localedata/SUPPORTED.
Inutile de compiler les langues qui ne nous intéresse pas. J’ai simplement ajouté la
ligne suivante au fichier .bb :
file://SUPPORTED_fr.patch;patch=1".
Le patch SUPPORTED_fr.patch sera à copier dans packages/glibc/glibc-cvs-2.3.5/
Pour l’instant j’ajoute simplement les paquets localisés.
BZIMAGE_EXTRA_INSTALL += bzImage-aerial-locale-fr bzImage-beam-locale-fr bzImage-
calendar-locale-f.
Divers
 bitbake Firefox
 bitbake bzImage-filemanager
 BZIMAGE_EXTRA_INSTALL += mplayer abiword vim bzImage-filemanager bzImage-
aerial-locale-fr bzImage-
bzImage-fr-image.bb
Au final notre fichier bzImage-fr-image.bb ressemblera à :
...
DEPENDS = "task-bootstrap 
meta-fr-bzImage 
${BZIMAGE_EXTRA_DEPENDS}"
# Audio/Video
BZIMAGE_EXTRA_INSTALL += mplayer xmms
# Texte
BZIMAGE_EXTRA_INSTALL += abiword gnumeric vim gpdf
# Reseau
BZIMAGE_EXTRA_INSTALL += tcpdump kismet nmap
Minimiser Le système d’exploitation avec Openembedded
# Localisation francaise
BZIMAGE_EXTRA_INSTALL += bzImage-aerial-locale-fr bzImage-beam-locale-fr bzImage-calendar-
locale-f
# Divers
BZIMAGE_EXTRA_INSTALL += firefox bzImage-filemanager
export IPKG_INSTALL = "task-bootstrap bzImage-task-base 
...
Reconstruction de l’image bzIMAGE
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
C'est ce qu’on a réalisés (voir le chapitre suivant :)
Minimiser Le système d’exploitation avec Openembedded
OpenEmbedded & 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.
Disposer de la branche ‘Poky’ : se chrooter dans l’environnement ubuntuOE et construire la
branche poky
 chroot /mnt/DebianOE /root/oechroot oz build poky
A l’issue de la compilation une image et un noyau sont créés.
 ls /mnt/DebianOE/stuff/poky/build/tmp/deploy/images/
Nous avons maintenant tous les ingrédients pour admirer le résultat
Au passage il faut noter que nous utiliserons l’émulateur qemu-system-arm fourni pas le
package qemu- native. (Des patchs sont ajoutés pour la prise en compte de l’écran tactile)
 qemu-system-arm -kernel zImage-2.6.17-qemuarm-20061008161924.bin -append "root=/de
Minimiser Le système d’exploitation avec Openembedded
20
Minimiser Le système d’exploitation avec Openembedded
21
Il nous manque tout de même l’essentiel : le réseau Qemu accédé à la couche réseau
par un tunnel créé entre la machine réelle et celle émulée.
Tout d’abord nous allons créer l’interface ‘tun0’ sur la machine physique.
Chargerons pour cela le module adéquat.
 modprobe tun
La configuration de l’interface tun0 se fait simplement # ifconfig tun0 10.1.1.1
Jusque-là tout va bien on va faire la même manip sur la machine virtuelle. (En
changeant simplement d’adresse IP)
 modprobe tun
Minimiser Le système d’exploitation avec Openembedded
22
Les problèmes rencontrés :
 La plupart des liens de téléchargements de sources ont été expiré c'est
pour cela qu'on a trouvé des difficultés car les packages à rechercher sont
rare sur internet.
 Un autre problème c'est la taille des fichiers.
 La compatibilité d’émulateur Qemu avec la version qu'on a utilisée.
Minimiser Le système d’exploitation avec Openembedded
23
Conclusion
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.
Minimiser Le système d’exploitation avec Openembedded
24
Références
https://launchpad.net/ubuntu/+source/bitbake/1.12.0-1
https://sourceforge.net/projects/bitbake.berlios/files/
https://www.youtube.com/watch?v=NeL2euG9jck&t=242s
http://dab.free.fr/files/dbk/zaurus/Openembedded/develoe.xml.html#id2479756
https://pixhawk.ethz.ch/tutorials/omap/openembedded_bitbake_installation
http://www.openembedded.org/wiki/RequiredSoftware
https://en.wikipedia.org/wiki/OpenEmbedded
https://github.com/openembedded
https://github.com/openembedded/openembedded
https://launchpad.net/ubuntu/+source/bitbake/1.12.0-1
http://dab.free.fr/files/dbk/zaurus/Openembedded/develoe.xml.html#id2479756
https://doc.ubuntu-fr.org/apt-get

Contenu connexe

Tendances

Kernel Linux - Configuration de Wyse - TP wyse x30
Kernel Linux - Configuration de Wyse - TP wyse x30Kernel Linux - Configuration de Wyse - TP wyse x30
Kernel Linux - Configuration de Wyse - TP wyse x30Ayoub Rouzi
 
PostgreSQL sous linux
PostgreSQL sous linuxPostgreSQL sous linux
PostgreSQL sous linuxKhalid ALLILI
 
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
 
PostgreSQL sous linux
PostgreSQL sous linuxPostgreSQL sous linux
PostgreSQL sous linuxKhalid ALLILI
 
Mysql Apche PHP sous linux
Mysql Apche PHP sous linuxMysql Apche PHP sous linux
Mysql Apche PHP sous linuxKhalid ALLILI
 
Installation et configuration d'apache tomcat
Installation et configuration d'apache tomcatInstallation et configuration d'apache tomcat
Installation et configuration d'apache tomcatManassé Achim kpaya
 
JBoss clustering et tuning (lab 1/3)
JBoss clustering et tuning (lab 1/3)JBoss clustering et tuning (lab 1/3)
JBoss clustering et tuning (lab 1/3)Fourat Zouari
 
Mis en place d'un herbergement multiple sous centos 6.
Mis en place d'un herbergement multiple sous centos 6.Mis en place d'un herbergement multiple sous centos 6.
Mis en place d'un herbergement multiple sous centos 6.Manassé Achim kpaya
 
JBoss clustering et tuning (lab 3/3)
JBoss clustering et tuning (lab 3/3)JBoss clustering et tuning (lab 3/3)
JBoss clustering et tuning (lab 3/3)Fourat Zouari
 
JBoss clustering et tuning (lab 2/3)
JBoss clustering et tuning (lab 2/3)JBoss clustering et tuning (lab 2/3)
JBoss clustering et tuning (lab 2/3)Fourat Zouari
 
Rapport installation round cube centos 7
Rapport installation round cube centos 7Rapport installation round cube centos 7
Rapport installation round cube centos 7Mame Cheikh Ibra Niang
 
Important Vm Ware Infrastrucutre Slides
Important Vm Ware Infrastrucutre SlidesImportant Vm Ware Infrastrucutre Slides
Important Vm Ware Infrastrucutre Slidesnouari
 
DEBUTER SOUS LINUX : GUIDE COMPLET
DEBUTER SOUS LINUX : GUIDE COMPLETDEBUTER SOUS LINUX : GUIDE COMPLET
DEBUTER SOUS LINUX : GUIDE COMPLETTaoufik AIT HSAIN
 
Alphorm.com Formation Ansible : Le Guide Complet du Débutant
Alphorm.com Formation Ansible : Le Guide Complet du DébutantAlphorm.com Formation Ansible : Le Guide Complet du Débutant
Alphorm.com Formation Ansible : Le Guide Complet du DébutantAlphorm
 
Install oracle 11g sous RedHat
Install oracle 11g sous RedHatInstall oracle 11g sous RedHat
Install oracle 11g sous RedHatTaoufik AIT HSAIN
 
Installation Et Configuration De Nutch
Installation Et Configuration De NutchInstallation Et Configuration De Nutch
Installation Et Configuration De NutchMohamed Ben Bouzid
 
Mise en place de Nagios3 pas à pas
Mise en place de Nagios3 pas à pas Mise en place de Nagios3 pas à pas
Mise en place de Nagios3 pas à pas yassine87
 

Tendances (20)

Kernel Linux - Configuration de Wyse - TP wyse x30
Kernel Linux - Configuration de Wyse - TP wyse x30Kernel Linux - Configuration de Wyse - TP wyse x30
Kernel Linux - Configuration de Wyse - TP wyse x30
 
PostgreSQL sous linux
PostgreSQL sous linuxPostgreSQL sous linux
PostgreSQL sous linux
 
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...
 
PostgreSQL sous linux
PostgreSQL sous linuxPostgreSQL sous linux
PostgreSQL sous linux
 
Mysql Apche PHP sous linux
Mysql Apche PHP sous linuxMysql Apche PHP sous linux
Mysql Apche PHP sous linux
 
Installation et configuration d'apache tomcat
Installation et configuration d'apache tomcatInstallation et configuration d'apache tomcat
Installation et configuration d'apache tomcat
 
Atelier 5
Atelier 5Atelier 5
Atelier 5
 
Démo puppet et état du projet
Démo puppet et état du projetDémo puppet et état du projet
Démo puppet et état du projet
 
JBoss clustering et tuning (lab 1/3)
JBoss clustering et tuning (lab 1/3)JBoss clustering et tuning (lab 1/3)
JBoss clustering et tuning (lab 1/3)
 
Mis en place d'un herbergement multiple sous centos 6.
Mis en place d'un herbergement multiple sous centos 6.Mis en place d'un herbergement multiple sous centos 6.
Mis en place d'un herbergement multiple sous centos 6.
 
JBoss clustering et tuning (lab 3/3)
JBoss clustering et tuning (lab 3/3)JBoss clustering et tuning (lab 3/3)
JBoss clustering et tuning (lab 3/3)
 
JBoss clustering et tuning (lab 2/3)
JBoss clustering et tuning (lab 2/3)JBoss clustering et tuning (lab 2/3)
JBoss clustering et tuning (lab 2/3)
 
Rapport installation round cube centos 7
Rapport installation round cube centos 7Rapport installation round cube centos 7
Rapport installation round cube centos 7
 
Serveur Zabbix
Serveur ZabbixServeur Zabbix
Serveur Zabbix
 
Important Vm Ware Infrastrucutre Slides
Important Vm Ware Infrastrucutre SlidesImportant Vm Ware Infrastrucutre Slides
Important Vm Ware Infrastrucutre Slides
 
DEBUTER SOUS LINUX : GUIDE COMPLET
DEBUTER SOUS LINUX : GUIDE COMPLETDEBUTER SOUS LINUX : GUIDE COMPLET
DEBUTER SOUS LINUX : GUIDE COMPLET
 
Alphorm.com Formation Ansible : Le Guide Complet du Débutant
Alphorm.com Formation Ansible : Le Guide Complet du DébutantAlphorm.com Formation Ansible : Le Guide Complet du Débutant
Alphorm.com Formation Ansible : Le Guide Complet du Débutant
 
Install oracle 11g sous RedHat
Install oracle 11g sous RedHatInstall oracle 11g sous RedHat
Install oracle 11g sous RedHat
 
Installation Et Configuration De Nutch
Installation Et Configuration De NutchInstallation Et Configuration De Nutch
Installation Et Configuration De Nutch
 
Mise en place de Nagios3 pas à pas
Mise en place de Nagios3 pas à pas Mise en place de Nagios3 pas à pas
Mise en place de Nagios3 pas à pas
 

Similaire à Rapport openembedded

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
 
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
 
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 aspectsThierry Gayet
 
Installation de snort avec pulled pork
Installation de snort avec pulled porkInstallation de snort avec pulled pork
Installation de snort avec pulled porkSamiMessaoudi4
 
Maintenance du système Linux
Maintenance du système LinuxMaintenance du système Linux
Maintenance du système LinuxEL AMRI El Hassan
 
5390997 Support formation : Construire et administrer vos conteneurs avec Doc...
5390997 Support formation : Construire et administrer vos conteneurs avec Doc...5390997 Support formation : Construire et administrer vos conteneurs avec Doc...
5390997 Support formation : Construire et administrer vos conteneurs avec Doc...AbdellahELMAMOUN
 
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 bassinLudovic 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 bassinOxalide
 
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
 
Menu projet s2 ubuntu
Menu projet s2 ubuntuMenu projet s2 ubuntu
Menu projet s2 ubuntusamiaderwich
 
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
 
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
 
Introduction à SBT
Introduction à SBTIntroduction à SBT
Introduction à SBTJean Detoeuf
 
Docker, ça mange quoi au printemps
Docker, ça mange quoi au printempsDocker, ça mange quoi au printemps
Docker, ça mange quoi au printempsJulien Maitrehenry
 
Julien Maitrehenry - Docker, ça mange quoi au printemps
Julien Maitrehenry - Docker, ça mange quoi au printempsJulien Maitrehenry - Docker, ça mange quoi au printemps
Julien Maitrehenry - Docker, ça mange quoi au printempsWeb à Québec
 
Distro Recipes 2013 : Yocto / OpenEmbedded
Distro Recipes 2013 : Yocto / OpenEmbeddedDistro Recipes 2013 : Yocto / OpenEmbedded
Distro Recipes 2013 : Yocto / OpenEmbeddedAnne Nicolas
 
Formation Play! framework
Formation Play! frameworkFormation Play! framework
Formation Play! frameworkBenoît Simard
 

Similaire à Rapport openembedded (20)

PHP Composer : Pourquoi ? Comment ? Et plus ...
PHP Composer : Pourquoi ? Comment ? Et plus ...PHP Composer : Pourquoi ? Comment ? Et plus ...
PHP Composer : Pourquoi ? Comment ? Et plus ...
 
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
 
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
 
Snort implementation
Snort implementationSnort implementation
Snort implementation
 
Installation de snort avec pulled pork
Installation de snort avec pulled porkInstallation de snort avec pulled pork
Installation de snort avec pulled pork
 
Maintenance du système Linux
Maintenance du système LinuxMaintenance du système Linux
Maintenance du système Linux
 
Boot
BootBoot
Boot
 
5390997 Support formation : Construire et administrer vos conteneurs avec Doc...
5390997 Support formation : Construire et administrer vos conteneurs avec Doc...5390997 Support formation : Construire et administrer vos conteneurs avec Doc...
5390997 Support formation : Construire et administrer vos conteneurs avec Doc...
 
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
 
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...
 
Menu projet s2 ubuntu
Menu projet s2 ubuntuMenu projet s2 ubuntu
Menu projet s2 ubuntu
 
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
 
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
 
Introduction à SBT
Introduction à SBTIntroduction à SBT
Introduction à SBT
 
Yocto oe
Yocto oeYocto oe
Yocto oe
 
Docker, ça mange quoi au printemps
Docker, ça mange quoi au printempsDocker, ça mange quoi au printemps
Docker, ça mange quoi au printemps
 
Julien Maitrehenry - Docker, ça mange quoi au printemps
Julien Maitrehenry - Docker, ça mange quoi au printempsJulien Maitrehenry - Docker, ça mange quoi au printemps
Julien Maitrehenry - Docker, ça mange quoi au printemps
 
Distro Recipes 2013 : Yocto / OpenEmbedded
Distro Recipes 2013 : Yocto / OpenEmbeddedDistro Recipes 2013 : Yocto / OpenEmbedded
Distro Recipes 2013 : Yocto / OpenEmbedded
 
Formation Play! framework
Formation Play! frameworkFormation Play! framework
Formation Play! framework
 

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
 
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
 
Rapport Windows Serveur 2008 "Active Directory Management"
Rapport Windows Serveur 2008 "Active Directory Management"Rapport Windows Serveur 2008 "Active Directory Management"
Rapport Windows Serveur 2008 "Active Directory Management"Ayoub Rouzi
 
Rapport nagios miniprojet
Rapport nagios miniprojetRapport nagios miniprojet
Rapport nagios miniprojetAyoub 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...
 
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
 
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
 
NEST WEAVE
NEST WEAVENEST WEAVE
NEST WEAVE
 
Rapport Windows Serveur 2008 "Active Directory Management"
Rapport Windows Serveur 2008 "Active Directory Management"Rapport Windows Serveur 2008 "Active Directory Management"
Rapport Windows Serveur 2008 "Active Directory Management"
 
Rapport nagios miniprojet
Rapport nagios miniprojetRapport nagios miniprojet
Rapport nagios miniprojet
 

Rapport openembedded

  • 1. Minimiser Le système d’exploitation avec Openembedded Rapport de Projet « Systèmes embarqués » Minimiser le système d’exploitation avec OpenEmbedded
  • 2. Minimiser Le système d’exploitation avec Openembedded SOMMAIRE  Introduction…...........................................................................................  Installation de l'environnement de développement :  Installation de bitbake : …………………......................................................................  Installation des utiles pour le code : …………………………………………………………..  Installation des utiles pour le compilateur : .......................................................  Installation de compilateur pour python : ...........................................................  Installation des utiles de compilateur pour python: ................................  Installation d'Openembedded : ..................................................................  Initialisation de l’environnement :  Création de packages et/ou d’images : ............................................................  Quelques commandes ‘bitbake’ : ....................................................................  Débug : ................................................................................................................  Ajouter un package à une image : ...................................................................  Pourquoi recompiler notre noyau ? : ..............................................................  Compilation du noyau :  Noyau : ………....................................................................................................  Audio/Video : .....................................................................................................  Bureautique : ......................................................................................................  Réseau : ...............................................................................................................  Localisation : ......................................................................................................  Divers : ................................................................................................................  Reconstruction de l’image BZIMAGE :  OpenEmbedded & qemu: ………………...................................................  Conclusion
  • 3. Minimiser Le système d’exploitation avec Openembedded INTRDUCTION Pourquoi vouloir compiler un nouveau noyau ? Ce n'est en général pas nécessaire, car le noyau par défaut reconnaît la plupart des configurations. En outre différents noyaux sont disponibles. Vous devriez chercher s'il n'existe pas de paquet contenant un noyau qui corresponde à votre matériel. Dans Ce projet présente le processus permettant la compilation d’images et minimiser le système d’exploitation avec openembedded Avec openembedded OpenEmbedded est un Framework de compilation de composants logiciels libres destinés à être déployées sur des systèmes embarqués. Parmi les caractéristiques d’openEmbedded :  Production d’un simple binaire jusqu’à une distribution complète  Support de nombreuses architectures et configurations  Flexible  Autosuffisant et déterministe
  • 4. Minimiser Le système d’exploitation avec Openembedded Installation de l'environnement de développement Installation de bitbake : Bitbake est un outil de gestion de packages qui permet : • la cross-compilation • Les dépendances inter packages • la construction de packages et ensemble de packages (téléchargement des sources, configuration, compilation et packaging) • 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 bitbacke a linux PATH :  export PATH=$HOME/oe/bitbake/bin:$PATH
  • 5. Minimiser Le système d’exploitation avec Openembedded Installation des utiles pour le code :  aptget install wget curl  aptget install cvs subversion monotone git
  • 6. Minimiser Le système d’exploitation avec Openembedded Installation des utiles pour le compilateur : Installation de compilateur pour python :
  • 7. Minimiser Le système d’exploitation avec Openembedded Installation des utiles compilateur pour python : Installation d'Openembedded Dans cet exemple nous utiliserons la branche (git.openembedded.org/openembedded)  git colone git ://git.openembedded.org/openembedded
  • 8. Minimiser Le système d’exploitation avec Openembedded Mise à jour de la base Openombedded :  mtn –db=OE.mtn pull monotone.openembedded.org org.openembedded.stable Faire la mise a jours automatiquement  cd $HOME/oe/org.openembedded.stable mtn update Configuration locale :  cd $HOME/Oe  cp org.openembedded.oz354x/conf/local.conf.openzaurus-3.5.4  vi build/conf/local.conf Modifier le fichier build/conf/local.conf de manière à avoir : Définir ou les fichiers .bb existe  BBFILES = "${HOME}/openombedde/recipes/bb/bb_1.2.bb" Choisir une machine depuis :  org.openembedded.stable/conf/machine/
  • 9. Minimiser Le système d’exploitation avec Openembedded Après on accède ou fichier de configuration : Choisir une distribution depuis :  org.openembedded.stable/conf/distro/ Spécifier le nombre de processus à utiliser  PARALLEL_MAKE = "-j 4"  BB_NUMBER_THREADS = "4"
  • 10. Minimiser Le système d’exploitation avec Openembedded Spécifier le système de fichier à utiliser pour le créer :  IMAGE_FSTYPES = "ext2 tar" Initialisation de l’environnement : 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 Création de packages et/ou d’images Créer un simple package : bitbake nano ... Packaged contents of nano into /stuff/tmp/deploy/ipk/nano_1.3.9-r0_armv5te.ipk Packaged contents of nano-doc into /stuff/tmp/deploy/ipk/nano-doc_1.3.9-r0_armv5te ... Packaged contents of nano-locale-fr into /stuff/tmp/deploy/ipk/nano-locale-fr_1.3. Bitbake lors de sa première utilisation créera un cache dans /stuff/tmp/cache/bb_cache.dat. Par la suite ce sera ce cache qui sera utilisé.
  • 11. Minimiser Le système d’exploitation avec Openembedded Donc in peut installer bitbake soit par la méthode nano ou en télécharger l’archive et après le décompresser et l’installer : On a téléchargé bitbake et après on a décompresser le fichier, et ça nous donne les fichiers suivants : Quelques commandes ‘bitbake’ : La commande suivante permet de lister toutes les taches lors de la création d’un package :  bitbake -b <path to bb file> Pour consulter toutes les variables utilisées lors de la compilation (ex : nano) :  bitbake -e /stuff/org.openembedded.oz354x/packages/nano/nano_1.3.9.bb |more Pour voir la valeur d’une variable OE d’un package :  bitbake -b ../openembedded/packages/meta/bootstrap-image.bb -c showdata Important Créer un groupe de packages :  bitbake bzImage-image Pour la compilation prévoir au moins 300Mo disponibles pour le téléchargement des sources (DL_DIR) et 4.5Go pour l’espace de travail (/stuff). Après quelques heures de compilation … (et divers petits problèmes avec la version de développement) … De la même manière il est possible de créer une image Opie  bitbake opie-image ls /stuff/tmp/deploy/images/3.5.4.1-rc4/akita/opie*
  • 12. Minimiser Le système d’exploitation avec Openembedded opie-image-akita-20060518143804.rootfs.img opie-image-akita-20060518143804.rootfs.tar.bz2 Créer la totalité des packages (déconseillé)  bitbake world Pour nettoyer/supprimer un package :  bitbake -c clean {Le Package} Débug Lorsqu'un package refuse obstinément de compiler il est souvent intéressant de reprendre les étapes de la compilation une à une. Pour mémoire, on peut connaitre la série d'actions exécuté sur le package avec la commande : bitbake -b <path to bb file> -c listtasks Et les variables positionnées : bitbake -e <path to bb file> On peut ainsi réxécuter les actions ... bitbake -b <path to bb file> -c configure bitbake -b <path to bb file> -c compile ... Ce peut ne pas être suffisant, les options de configuration et de compilation étant fixées dans le fichier .bb peuvent surement être affinées. Openembedded lorsqu'il exécute une actions (fetch, configure, compile, ...) créée en premier lieu le script Shell qui représente cette action et l'exécute tout en loguant le résultat. Intéressant ... Il est donc possible de réxécuter un script ayant échoué.
  • 13. Minimiser Le système d’exploitation avec Openembedded Tout d’abord on se rend à l'emplacement des sources du package. Imaginons que le package 'openssl' ce soit planté lors de l'exécution du do_compile. (Ou tout autre actions). cd /stuff/dev/tmp/work/armv5te-linux/openssl-0.9.7g-r2 ls temp run.do_configure.3581 log.do_configure.3581 run.do_compile.3581 log.do_compile.3581 Copions le fichier run.do_compile.3581 en debug.sh. Dans ce dernier recherchons la fonction 'do_compile' (ou do_confiure, ou ...) et remplacons oe_make par bash. Lors de l'exécution de ce script nous récupérons un Shell avec l'environnement de cross compilation correctement paramétré. Et donc maintenant un simple make reproduit l'erreur constatée. Il ne reste plus qu'à en connaitre la cause . Ajouter un package à une image 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 Et on relance  bitbake opie-image Cette méthode nous permet de personnaliser très facilement une image (par exemple : Openzaurus.) Note : Les fichiers BB permettent la construction des packages, on y trouve diverse dépendance : DEPENDS : sont les packages dont nous auront besoin pour la compilation RDEPENDS : sont ceux dont nous auront besoin pour l’exécution.
  • 14. Minimiser Le système d’exploitation avec Openembedded Montage et modification de l’image Pour modifier manuellement notre image (bzImage) il nous faut la ‘monter’ : Pré requis : mtd-tools  apt-get install mtd-tools On peut maintenant personnaliser notre image. Et enfin construire une nouvelle image y incluant nos modifications.  mkfs.jffs2 --root=/tmp/bzImage/ --faketime --little-endian --eraseblock=0x4000/ cat /stuff/tmp/staging/arm-linux/lib/sharp-flash-header/header-c700.bin /tmp/my-gp flashage de /tmp/my-bzImage.img (en initrd.bin) Et pour finir un peu de nettoyage :  umount /tmp/bzImage && rmdir /tmp/openzaurus rmmod jffs2 mtdram mtdblock  rm -f /dev/bzImage Pourquoi recompiler notre noyau ? Le noyau de base installé sur notre Ubuntu supporte diverses fonctionnalités qui sont directement intégrées dans le noyau ou sous forme de module. Dans la majorité des cas ce noyau est suffisant pour une exploitation normale de l’appareil et à la reconnaissance de la plupart des matériels. Mais imaginons que nous ayons reçu un nouveau matériel qui ne serait pas reconnu ou que nous souhaitions intégrer une fonction qui ne serait pas implémentée. C’est alors qui nous faudrait recompiler le noyau pour cette prise en charge.
  • 15. Minimiser Le système d’exploitation avec Openembedded Compilation du noyau Pour permettre la compilation d’un noyau, nous allons maintenant tester notre environnement. Commençons simplement par la compilation notre image bzImge.bin et initrd.bin (bootstrap). Nous commençons par charger le module jffs2 pour la création de l’image initrd.bin  (modprobe jffs2) bitbake task-bootstrap bitbake bootstrap-image Configuration d’un nouveau noyau Pour éviter de modifier manuellement le fichier de configuration nous utiliserons le script make des sources du noyau. Tout d’abord sauvegarde de la config de base  cp /stuff/org.openembedded.oz354x/packages/linux/linux-openzaurus-2.6.16/defconfig/ /stuff/org.openembedded.oz354x/packages/linux/linux-openzaurus-2.6.16/defconfig Les divers menus nous permettent de customiser notre noyau. J’ajoute la gestion iptables pour la prise en charge du firewalling Pour améliore la configuration il est aussi possible d’ajouter la gestion de la QoS. Ensuite je sauvegarde et sors de l’utilitaire de configuration. Le fichier .config est présent avec toutes nos modifications, c’est donc celui-ci qui sera utilisé lors de la compilation du noyau. Pour cela on remplace la config du package linux-openzaurus.  cp .config /stuff/org.openembedded.oz354x/packages/linux/linux- openzaurus-2.6.16/d La config de notre noyau étant terminée. Voyons voir le fichier qui permet cette compilation de l’image minimal. Et comme les choses sont bien faites, il se nomme bootstrap-image.bb  vi /stuff/org.openembedded.oz354x/packages/meta/bootstrap-image.b
  • 16. Minimiser Le système d’exploitation avec Openembedded Pour la Création de notre image bootstrap : bitbake -c clean linux-openzaurus bitbake -c clean zaurus-updater bitbake bootstrap-image Nous pouvons maintenant de tester notre noyau en bootant directement sur l’image bootstrap que nous venons de créer. Et un modprobe ip_tables nous confirme l’installation des nouveaux modules. Et maintenant notre image BZIMAGE avec un kernel minimiser Noyau Nous aurions pu pour le tester créer une image bootstrap.  bitbake bootstrap-image Passons maintenant à la personnalisation de BZIMAGE. Une copie du fichier bzImage-image.bb nous permettra de personnaliser le contenu de notre image.  cp /stuff/org.openembedded /packages/meta/bzImage-image.bb/stuff/org.openembedde Audio/Video Ajout de mplayer  bitbake mplayer  bitbake mplayer-common Bureautique  bitbake abiword bitbake vim on a aussi ajouté le fichier packages/base-files/base-files/share/dot.vimrc et modifié packages/base-files_3.0.14.bb pour avoir la colorisation sous Vim. Réseau  bitbake tcpdump bitbake kismet bitbake nmap
  • 17. Minimiser Le système d’exploitation avec Openembedded Localisation Le fichier glibc_2.3.5+cvs20050627.bb sera modifié de manière à appliquer un patch qui modifiera libc/localedata/SUPPORTED. Inutile de compiler les langues qui ne nous intéresse pas. J’ai simplement ajouté la ligne suivante au fichier .bb : file://SUPPORTED_fr.patch;patch=1". Le patch SUPPORTED_fr.patch sera à copier dans packages/glibc/glibc-cvs-2.3.5/ Pour l’instant j’ajoute simplement les paquets localisés. BZIMAGE_EXTRA_INSTALL += bzImage-aerial-locale-fr bzImage-beam-locale-fr bzImage- calendar-locale-f. Divers  bitbake Firefox  bitbake bzImage-filemanager  BZIMAGE_EXTRA_INSTALL += mplayer abiword vim bzImage-filemanager bzImage- aerial-locale-fr bzImage- bzImage-fr-image.bb Au final notre fichier bzImage-fr-image.bb ressemblera à : ... DEPENDS = "task-bootstrap meta-fr-bzImage ${BZIMAGE_EXTRA_DEPENDS}" # Audio/Video BZIMAGE_EXTRA_INSTALL += mplayer xmms # Texte BZIMAGE_EXTRA_INSTALL += abiword gnumeric vim gpdf # Reseau BZIMAGE_EXTRA_INSTALL += tcpdump kismet nmap
  • 18. Minimiser Le système d’exploitation avec Openembedded # Localisation francaise BZIMAGE_EXTRA_INSTALL += bzImage-aerial-locale-fr bzImage-beam-locale-fr bzImage-calendar- locale-f # Divers BZIMAGE_EXTRA_INSTALL += firefox bzImage-filemanager export IPKG_INSTALL = "task-bootstrap bzImage-task-base ... Reconstruction de l’image bzIMAGE 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 C'est ce qu’on a réalisés (voir le chapitre suivant :)
  • 19. Minimiser Le système d’exploitation avec Openembedded OpenEmbedded & 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. Disposer de la branche ‘Poky’ : se chrooter dans l’environnement ubuntuOE et construire la branche poky  chroot /mnt/DebianOE /root/oechroot oz build poky A l’issue de la compilation une image et un noyau sont créés.  ls /mnt/DebianOE/stuff/poky/build/tmp/deploy/images/ Nous avons maintenant tous les ingrédients pour admirer le résultat Au passage il faut noter que nous utiliserons l’émulateur qemu-system-arm fourni pas le package qemu- native. (Des patchs sont ajoutés pour la prise en compte de l’écran tactile)  qemu-system-arm -kernel zImage-2.6.17-qemuarm-20061008161924.bin -append "root=/de
  • 20. Minimiser Le système d’exploitation avec Openembedded 20
  • 21. Minimiser Le système d’exploitation avec Openembedded 21 Il nous manque tout de même l’essentiel : le réseau Qemu accédé à la couche réseau par un tunnel créé entre la machine réelle et celle émulée. Tout d’abord nous allons créer l’interface ‘tun0’ sur la machine physique. Chargerons pour cela le module adéquat.  modprobe tun La configuration de l’interface tun0 se fait simplement # ifconfig tun0 10.1.1.1 Jusque-là tout va bien on va faire la même manip sur la machine virtuelle. (En changeant simplement d’adresse IP)  modprobe tun
  • 22. Minimiser Le système d’exploitation avec Openembedded 22 Les problèmes rencontrés :  La plupart des liens de téléchargements de sources ont été expiré c'est pour cela qu'on a trouvé des difficultés car les packages à rechercher sont rare sur internet.  Un autre problème c'est la taille des fichiers.  La compatibilité d’émulateur Qemu avec la version qu'on a utilisée.
  • 23. Minimiser Le système d’exploitation avec Openembedded 23 Conclusion 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.
  • 24. Minimiser Le système d’exploitation avec Openembedded 24 Références https://launchpad.net/ubuntu/+source/bitbake/1.12.0-1 https://sourceforge.net/projects/bitbake.berlios/files/ https://www.youtube.com/watch?v=NeL2euG9jck&t=242s http://dab.free.fr/files/dbk/zaurus/Openembedded/develoe.xml.html#id2479756 https://pixhawk.ethz.ch/tutorials/omap/openembedded_bitbake_installation http://www.openembedded.org/wiki/RequiredSoftware https://en.wikipedia.org/wiki/OpenEmbedded https://github.com/openembedded https://github.com/openembedded/openembedded https://launchpad.net/ubuntu/+source/bitbake/1.12.0-1 http://dab.free.fr/files/dbk/zaurus/Openembedded/develoe.xml.html#id2479756 https://doc.ubuntu-fr.org/apt-get