Environnement de développements OpenEmbedded pour DREAMBOX 7020

Home Page

Objectifs :                                                                    Télécharger ce document format PDF

Pour satisfaire votre curiosité, vous pouvez souhaiter, comme moi, mettre en place sur l'une de vos machines un environnement de développement pour Dreambox 7020.

Cet environnement a pour finalité :

     - De mettre en place sur votre machine l'ensemble des outils et sources nécessaires à la production d'une 'image' de type .nfi exploitable en flash ou sur stick USB, pour une Dreambox 7020.

     - Il est basé sur le projet 'OpenEmbedded', qui met à disposition sur le Web l'ensemble des composants nécessaires

     - Les images .nfi produites sont installables sur votre Dreambox

     - Il est possible alors de personnaliser l'image, apporter sa touche personnelle, et disposer des mises à jour publiées sur le Net.

 

Pré-requis :

Il est probablement possible de mettre en place cet environnement sur de nombreux types de systèmes hôtes.

Toutefois, je l'ai pour ma part implanté sur un Linux RedHat FEDORA Core 3 (disponible gratuitement chez RedHat)

Rappelez-vous que la Dreambox utilise un système Linux, il semble donc plus naturel de développer sur un système Linux !

Cet OS Linux FEDORA Core 3 présente l'avantage d'inclure la grande majorité des outils nécessaires au développement, dans le cadre du projet OpenEmbedded, dans la mesure ou l'on installe la version "Workstation".

Vous aurez toutefois a installer en plus, à partir des CDs d'installation FEDORA, le produit optionnel "Subversion", appelé aussi 'svn'

Il est fortement recommandé de disposer sur la machine hôte de, au minimum :

     - 512 Mo de mémoire RAM ( 640 Mo recommandé, pour éviter tout 'swap')

     - 30 Gb de disque disponible, après installation du système.

Le téléchargement des sources OpenEmbedded depuis le Web nécessite la mise en place du produit libre 'Bitkeeper', ou de sa version libre 'Bitmover'. Vous pouvez télécharger la version installable ici. (testée OK sur FEDORA Core 3)

      Pour installer Bitkeeper :  Rendez executable le fichier téléchargé et executez-le en étant root :

        chmod 755 ./bk-3.2.4-x86-glibc23-linux.bin

        su -

        ./bk-3.2.4-x86-glibc23-linux.bin

        exit                    (ne restez pas loggé root : ce serait dangereux pour la suite des opérations !)

Enfin, pour la mise en œuvre Openembedded, il est recommandé d'installer l'addon 'Compilateur Python Just-in-Time Psyco', ce qui améliore grandement les performances de la phase de parsing des fichiers de type .oe (cette phase est appelée à chaque invocation d'une commande 'oemake'). Vous pouvez télécharger la version installable ici.(testée OK sur FEDORA Core 3)

Pour installer psyco : Décompressez l'archive dans un répertoire de votre choix puis allez dans ce répertoire :

         cd ./psyco-1.3

         su -                               ( la mise en place doit se faire avec les droits de root)

        python setup.py install    (python doit bien sûr avoir été préalablement installé, et être accessible !)

         exit                                (ne restez pas loggé root : ce serait dangereux pour la suite des opérations !)

 

Mise en place de l'environnement OpenEmbedded :

La mise en place est relativement simple, à condition de respecter certaines règles :

En effet, grâce à l'ensemble des manipulations, il va être créé dans cet environnement un 'Cross Compilateur' capable de générer des binaires executables à destination de la Dreambox.

Or, certaines ressources, telles que le compilateur GNU C (gcc) ne doivent pas être ambigües, faute de quoi cela pourrait avoir pour conséquence de détruire l'environnement technique de la machine hôte (FEDORA Core 3 sur Intel x86).

N'étant pas identifié 'root', une erreur de configuration ou setting ne risque pas de mettre en danger vos répertoires 'système hôte' !

 


Dans le répertoire Home de cet utilisateur, vous devrez installer les scripts suivants :

1- env.sh        (setting des variables d'environnement requises)

Normalement, ce script ne requiert aucune modification (tout y est relatif à $HOME de l'utilisateur)

    # Script to set environment for OpenEmbedded

    # env.sh source script

     

    # Added by DD

    CVS_RSH=ssh;    export CVS_RSH

     

    OEDIR=$HOME/oe

    OEPATH=${OEDIR}/../packages:${OEDIR}/../oe:${OEDIR}/../build-ppc

    DL_DIR=~/source

     

    echo Setting up dm7020 dev

     

    if [ -z ${ORG_PATH} ]

    then

     ORG_PATH=${PATH}

     export ORG_PATH

    fi

     

    if [ -z ${ORG_LD_LIBRARY_PATH} ]

    then

     ORG_LD_LIBRARY_PATH=${LD_LIBRARY_PATH}

     export ORG_LD_LIBRARY_PATH

    fi

     

    # Add the oe stuff to the path

    PATH=${OEDIR}/../oe/bin:${OEDIR}/../build-ppc/tmp/cross/bin:${ORG_PATH}

     

    # Blank this so we don't link non-arm libraries

    LD_LIBRARY_PATH=

     

    # Don't export TARGET_ARCH - it *will* cause build failures

    export PATH LD_LIBRARY_PATH OEPATH

     

    #Stop multi byte characters breaking the patcher stuff - This is for Redhat / Fedora people really

    export LANG=C

Executer alors, dans le shell courant, la commande :

     .  ./env.sh

Ceci positionne et exporte les variables nécessaires, dans le shell courant ( raison du 1er . )

Elles seront conservées pendant tout le temps de session de ce shell !

Ensuite, lancer le script install.sh :

     ./install.sh

Ce script va créer les sous-répertoires nécessaires, et utiliser Bitkeeper pour télécharger les sources et snapshots nécessaires à la création du contexte de développement. Selon les performances de votre accès Internet, cela peut nécessiter plusieurs minutes.

Ce script install.sh n'a normalement pas à être lancé plusieurs fois : Il assure la mise en place initiale. D'ailleurs , des lancements successifs provoquent des erreurs d'execution, car la création des répertoires rencontre des problèmes (ils sont déjà créées !)

 

Génération d'une image Dreambox 7020 :

Pour faciliter le lancement de cette opération, j'ai mis à votre disposition un script /bin/go

Il suffit donc maintenant de taper go

Il va executer les settings nécessaires, puis aller dans le sous-répertoire 'build', et lancer 'oemake' (Openembedded make)

Les différentes phases de cette génération :

     1- Installation et compilation d'un environnement de développement relatif au système hôte ( Linux FEDORA Core 3 sur Intel x86)

             Eh oui : il recrée son PROPRE environnement de compilation, et n'altère donc en rien celui de la machine hôte !

             Ceci évite les problèmes de compatibilité de versions d'outils entr'eux ( Kernel version X, GLIBC version Y, etc....)

     2- Grâce aux outils installés durant l'étape 1, mise en place d'un 'cross compilateur' pour processeur PowerPC Dreambox

             avec son PROPRE environnement de compilation, il crée l'environnement de compilation pour PowerPC !

             Ceci évite au maximum les problèmes de compatibilité

     3- Compilation des composantes spécifiques à la gestion d'une Dreambox ( enigma, jeux, plugins, etc...)

     4- Génération de l'arborescence de répertoires nécessaire à une Dreambox en mémoire flash

     5- Création d'une 'image' (type .nfi) installable sur une Dreambox

 

NOTE :

    Les étapes 1 et 2 peuvent nécessiter, suivant la puissance du processeur hôte, les performances de votre disque et surtout la RAM disponible, entre au moins 2 heures et jusqu'à 5 ou 6 heures !

    L'étape 3, de la même manière, peut nécessiter 1 ou 2 heures

    Les étapes 4 et 5 ne réclament en général que quelques minutes.

    Si vous modifiez des sources , développez un plugin, ou apportez toute modification, seules certaines étapes seront nécessaires à nouveau :

         - Quelques étapes de 3 (sauf si vous modifiez le noyau Linux lui-même !), ainsi que 4 et 5

         Les phases 1 et 2 ne seront plus requises, sauf si vous créez un nouvel environnement, dans un répertoire différent .

 

Alors, patience et longueur de temps font plus que force ni que rage !

 

 

Problèmes rencontrés durant la mise en œuvre :

Les fichiers composant Openembedded contiennent quelques données 'périmées', pointant sur des sites n'existant plus, ou ne proposant plus les versions requises par l'environnement Dreambox.

Ainsi, le problème essentiel à résoudre, lors de mes premières tentatives de mise en place, a été de "mettre la main" sur les packages en question, à la bonne version !

J'en profite pour dire que si j'ai pu aboutir, c'est grâce à l'aide précieuse que m'a apportée l'équipe des développeurs 'Power of Dream' (image P.O.D.) , en me sortant de chaque impasse au prix de beaucoup de patience et de dévouement !

Pour éviter qu'ils n'aient à réitérer la même opération avec de nombreux candidats , j'ai décidé de proposer en téléchargement sur mon site L'ENSEMBLE DES ARCHIVES nécessaires à cette mise en place :

Recommandation : Merci de ne pas télécharger de manière systématique tous les packages, mais seulement ceux qui s'avèrent inaccessibles lors de votre compilation. En effet, la bande passante n'est pas infinie, et les serveurs Openembedded sont mieux équipés que moi, à ce sujet !

Mais au moins, vous n'aurez pas à chercher longuement ceux qui vous manquent : Tous ceux qui ont contribué au succès sur ma machine y sont !

URL de téléchargement des snapshots :

Le snapshot que je proposais datait de Mai 2005, donc près de 2 ans : Ce qui signifie une éternité, dans ce monde du développement.

J'ai donc décidé d'interrompre cette offre obsolète : Vous trouverez bien sur le Web les archives requises par Openembedded récent...

Chaque package ( fichier .tar.gz ou .tar.bz2) doit être installé dans le répertoire $HOME/sources

En relançant la commande 'go', il va re-tenter le téléchargement depuis OE ou CVS, mais ayant les mêmes paramètres qu'auparavant, cela va bien sûr échouer... Par contre, il va détecter qu'une version adéquate du package est déjà en place, et va finalement en extraire les fichiers, pour continuer le 'oemake' !

 

Forcer la recompilation d'un package :

Le système de make proposé par Openembedded tient à jour une liste des opérations effectuées, dans un répertoire :

Pour forcer la recompilation individuelle d'un composant, d'un package ou d'un plugin, il suffit d'effacer le stamp correspondant, et relancer oemake (script 'go' )

A titre d'exemple, je vous propose le script $HOME/bin/comp_enigma (téléchargé avec le fichier 'scripts.tar' ci-dessus)

Plutôt que de faire les opérations nécessaires manuellement, en activant ce script comp_enigma, il va :

     - supprimer les fichiers 'stamp' nécessaires

     - effectuer un 'touch' sur les sources de enigma

     - et lancer le script 'go'   -> compilations, packaging, et ré-génération de l'image .nfi

Modifier la liste des composants à compiler lors d'une commande 'oemake' (personnalisation )

Modifier la liste des composants et plugins à inclure dans une image .nfi

Ajouter son propre plugin aux packages et à l'image générée :