Votre système

J'ai installé Open Embedded sur Mac OS X 10.4 et sur Ubuntu Gutsy Gibbon. Mais normalement cette description devrait correspondre pour tout environnement basé sur Unix/Linux.

Avant de commencer

Tout le développement de votre environnement de compilation se fera dans un même répertoire. Je vous conseille donc de créer un répertoire dans lequel vous allez développer toute l'installation. Dans notre cas, nous allons appeler ce répertoire dev. Dans mon cas il se trouve à la racine de mon compte utilisateur. En d'autres mots /home/greg/dev/ sous linux et /Users/greg/dev sous mac.

Installation de bitbake

Evitez dans la mesure du possible d'utiliser la version de bitbake qui est mise à votre disposition dans votre distribution. Comme le compilateur bitbake est écrit en python, vous pouvez utiliser facilement la version en développement.

Dès lors, allez dans le répertoire que vous venez de créer : dev/ et allez chercher la dernière version de bitbake via subversion :

$ svn co svn://svn.berlios.de/bitbake/branches/bitbake-1.8/ bitbake

Un nouveau répertoire s'est normalement crée dans votre répertoire dev/ il s'appelle "bitbake"

Installation de Open Embedded

D'abord assurez vous que vous avez le programme monotone installé sur votre ordi. Et regardez quelle version vous avez :

$ mtn --version

Maintenant allez télécharger la dernière version de OE.mtn.bz2 qui correspond à votre version de monotone ici : http://www.openembedded.org/snapsho...

Une fois le fichier téléchargé (attention, ça fait quand même 135 Mo) vous pouvez décompresser le fichier et le mettre dans votre répertoire dev/ :

$ bunzip2 OE.mtn.bz2
$ mv OE.mtn ~/dev/OE.mtn

Passons maintenant à l'installation en tant que telle. D'abord il faut initialiser la base de données monotone (vous êtes toujours dans le répertoire dev/) :

$ mtn db init --db=OE.mtn

Il se peut que cette commande vous renvoie une erreur si une base de donnée du même nom a déjà été crée. Alors vous pouvez migrer la base de données :

$ mtn --db=OE.mtn db migrate

Ensuite, la commande suivante va aller vérifier de quel fichier vous avez besoin. Si vous n'avez encore rien installé vous avez besoin de tout, c'est pas compliqué, et ensuite on va récupérer les fichiers.

$ mtn --db=OE.mtn pull monotone.openembedded.org "org.openembedded.{dev,oz354x,dreambox}
$ mtn -db=OE.mtn co --branch=org.openembedded.dev

A cette étape vous avez maintenant un nouveau répertoire qui vient de se créer : ~/dev/org.openembedded.dev

Configurer Open Embedded

En fonction du système embarqué pour lequel vous voulez utiliser Open Embedded vous devez bien sur sélectionner le mode de compilation adapté. Donc pour ça nous avons besoin d'un fichier de configuration que nous allons configurer.

Toujours dans /dev :

$ mkdir build
$ mkdir build/conf
$ cp org.openembedded.dev/conf/local.conf.sample build/conf/local.conf

Voilà, vous avez votre fichier de configuration, maintenant nous allons devoir le modifier. Eh oui, il est encore brut tel qu'il est maintenant :

$ vim build/conf/local.conf

Ne vous limitez pas à lire en diagonale ce fichier ! Il doit être conforme aux système que vous voulez utiliser. Après avoir configuré le fichier, n'oubliez pas de supprimer la dernière ligne du fichier, sans quoi vous n'arriverez pas à faire fonctionner bitbake tantôt.

Voici le fichier tel qu'il est chez moi (configurer pour une architecture mtx-1 avec une distribution linux nylon (j'ai enlevé toutes les lignes de commentaire pour plus de clarté)

DL_DIR = "${HOME}/dev/sources"

BBFILES := "${HOME}/dev/org.openembedded.dev/packages/*/*.bb"

BBMASK = ""

PREFERRED_PROVIDERS = "virtual/qte:qte virtual/libqpe:libqpe-opie"
PREFERRED_PROVIDERS += " virtual/libsdl:libsdl-x11"
PREFERRED_PROVIDERS += " virtual/${TARGET_PREFIX}gcc-initial:gcc-cross-initial"
PREFERRED_PROVIDERS += " virtual/${TARGET_PREFIX}gcc:gcc-cross"
PREFERRED_PROVIDERS += " virtual/${TARGET_PREFIX}g++:gcc-cross"

MACHINE = "mtx-1"

TARGET_OS = "linux"

DISTRO = "nylon"

INHERIT += "pkg_metainfo"
INHERIT += "src_distribute_local"

IMAGE_FSTYPES = "jffs2 tar"

BBINCLUDELOGS = "yes"

SRC_DIST_LOCAL = "copy"
SRC_DISTRIBUTE_LICENCES += "unknown"

# Cette derniere ligne est ajouter suite a des problemes de compilation 
# avec glibc dans la derniere version de OpenEmbedded. Peut-etre que
# entre-temps le probleme est réglé
PREFERRED_VERSION_binutils-cross = "2.16"

Configurer les variables d'environnement

Sans les variables d'environnement configurée, vous n'arriverez pas à faire fonctionner bitbake. Donc vous devez pour cela modifier votre fichier .bashrc (sous linux) ou .bash_profile (sous Mac OS X)

Ajoutez-y les lignes suivantes (à adapter en fonction de votre système évidement)

# Creation de l'environnement pour OpenEmbedded
# Pour Monotone
alias mtn-add='mtn list unknown | xargs mtn add'
alias mtn-drop='mtn drop --missing'

# Pour OpenEmbedded
export BBPATH=/home/greg/dev/build:/home/greg/dev/org.openembedded.dev

# Pour bitbake
export PATH=/home/greg/dev/bitbake/bin:$PATH

Compilation

Ca y'est, maintenant OpenEmbedded est correctement installé. Il ne vous reste plus qu'à tester pour voir si ça marche

$ bitbake nano

Il se peut cependant que vous n'ayez pas tous les programmes tiers nécessaires à OpenEmbedded. Dans ce cas, vous devez les installer à partir des packages officiels de votre distribution. A ce sujet là je vous conseille d'aller faire un tour sur : OE for your distro.

Mettre à jour bitbake

Comme bitbake est un logiciel qui évolue pas mal, si ça fait longtemps que vous n'avez plus mis à jour votre version, allez dans le répertoire dev/bitbake et exécutez la commande :

$ svn update

Ceci mettra automatiquement votre version à jour

Mettre Open Embedded à jour

Même principe, sauf qu'ici nous n'avons pas SVN, voici comment faire dans le répertoire dev/

$ mtn --db=OE.mtn pull monotone.openembedded.org "org.openembedded.dev"
$ cd org.openembedded.dev && mtn update

Voilà, j'espère que ce tutorial aura pu vous être utile et est assez clair. Si vous avez des questions, n'hésitez pas à les poster en commentaire à ce billet et je ferais de mon mieux pour vous répondre.