Ga naar inhoud


HOWTO: Zelf Image/Plugins bouwen met OpenEmbedded


Aanbevolen berichten

Geplaatst:

Ik heb even een kleine howto in elkaar gesleutelt voor het zelf bouwen en opzetten van de OpenEmbedded build omgeving. Ook met een voorbeeld hoe je tegen de laatste image een plugin kan bouwen. Ik heb deze HOWTO al richting de moderators gestuurd voor kandidaat in de Database. Als er iemand is die dit kan uitproberen en mij laten weten of alles goed werkt, graag <img src="/forums/images/graemlins/wink.gif" alt="" />

 

-----

Deze volgende procedure beschrijft hoe je zelf images kan maken voor

de dreambox mbv de 'nieuwe' openembedded tool-chain. Er is best veel

te vinden hierover met wat zoekwerk, maar dit is een soort kookboek

voor de mensen die van gemak houden <img src="/forums/images/graemlins/smile.gif" alt="" />

 

Nu is het wel gebleken dat de mensen van PLi en Gemini zelf vaak snelle

updates hebben aangezien zij voor een hoop zaken ofwel zelf het programmeer

werk doen (hulde!) ofwel hun basis direct uit de tuxbox CVS komt.

Maar als je een schoon image wilt hebben, of als je zelf plugins

wilt compileren dan is het beter om zelf een image te bouwen. Ik heb

ook een voorbeeld staan van hoe je zelf plugins zou kunnen compileren.

 

Indien er aanvullingen/opmerkingen zijn dan hou ik mij aanbevolen. Ik

zit regelmatig op het dreambox forum van Sat4All.

 

Succes!

Martijn Schoemaker (Shoenix)

 

-------------

 

Benodigdheden :

===============

- Een user/group : dreambox:dreambox

- Groot filesysteem (8Gb!!) voor de buildomgeving.

- Monotone versie 0.24 in /usr/bin

- 'Een' recente linux dirstibutie (windows kan ook, maar daar heb ik geen

ervaring mee)

- Een (liefst snelle) internet verbinding

- Een HOOP geduld!

 

Stappen:

========

1 - Aanmaken filesysteem van 8Gb + aanmaken gebruiker

2 - Installeren monotone 0.24

3 - Initialisatie OpenEmbedded

4 - Opzetten build omgeving

5 - Bouwen van een image

6 - Het vervolg updaten en bouwen van een image

7 - Zelf plugins bouwen

8 - Referenties

 

1 Filesysteem maken

===================

Dit is helemaal afhankelijk van je configuratie. In mijn geval heb ik een

8Gb filesysteem gemaakt en gemount op /opt/db. Hieronder doe ik verder

alles. Zorg iig dat alles onder het filesysteem toegankelijk is voor de

gebruiker dreambox:dreambox. Met 'useradd -m dreambox' kan je een gebruiker

aanmaken. Ik noem de directory waar dit filesysteem is gemount verder 'oe-fs'.

 

LET OP: Zorg dat het filesysteem NIET onder /usr gemount wordt! Dit geeft namelijk

problemen met het bouwen van het image!

 

2 Monotone

==========

Als eerst heb je monotone versie 0.24 nodig. Deze kan je voor ver-

schillende OS-en downloaden op http://www.venge.net/monotone/downloads .

Staat jouw platform er niet bij, dan kan je hem altijd zelf bouwen (zie

verderop). Ik zelf draai op Fedora core 3 en de monotone binary hiervoor

staat Hier .

Let wel dat het kan dat deze niet werkt. Mocht je een binary downloaden

ga dan naar stap 8.

 

Zelf bouwen op RedHat/Fedora:

1 - Download de source rpm op http://www.venge.net/monotone/downloads/monotone-0.24-1.src.rpm

2 - Installeer de rpm : rpm -i monotone-0.24-1.src.rpm

3 - Ga naar : /usr/src/SOURCES

4 - Pak de monotone..tar.gz uit : tar xvzf monotone.tar.gz

5 - Ga naar : monotone-0.24

6 - Bouw de RPM (en de binary) : rpmbuild -ba monotone.spec

7 - Hierna staat in de directory een file : monotone

8 - Kopieer de file met : cp monotone <oe-fs>/monotone-0.24-x86

9 - Switch (terug) naar root

10 - Ga naar /usr/bin

11 - Maak een symbolic link : ln -s /<oe-fs>/monotone-0.24-x86 monotone

12 - Controleer of monotone werkt, tik : monotone

 

De output is in de trend van :

 

# monotone

Usage: monotone [OPTION...] command [ARGS...]

 

--debug print debug log to stderr while running

--dump=STRING file to dump debugging log to, on failure

--quiet suppress log and progress messages

-h, --help display help message

--version print version number, then exit

<... Enz ...>

 

3 Initialisatie OpenEmbedded

============================

1 - Switch naar de 'dreambox' gebruiker

2 - Ga naar de 'oe-fs' directory

3 - Download de setup makefile met : wget http://tmb.elitedvb.net/Makefile-opendreambox

4 - Open de Makefile en pas je boxtype (MACHINE) aan (Staat standaard op 7025!) : vb. MACHINE=dm7020

5 - Start de initialisatie met : make -f Makefile-opendreambox

6 - Heb geduld! Het kan lang duren voordat alle versie data opgehaald is!

 

4 Opzetten build omgeving

=========================

Ok, nu heb je de source revisie database geupdate op je machine staan. Nu moet

het image nog gebouwd worden. Hiervoor heb je een build omgeving nodig.

 

1 - Switch naar de dreambox user

2 - Ga de 'oe-fs' directory

3 - Ga naar de directory build/conf

4 - Edit de local.conf file en pas het boxtype (MACHINE) aan (staat standaard op

dm7020) vb. : MACHINE = "dm7020"

 

5 Bouwen van een image

======================

1 - Switch naar de dreambox user

2 - Ga naar de 'oe-fs'/build directory

3 - Include de env.source in je huidige environment : . env.source

(Je kan ook deze file in je shell rc file zetten voor de 'dreambox' user)

4 - Start de compilatie : bitbake dreambox-image

5 - Haal wat te drinken, ga uit eten, neem vakantie, dit kan lang duren (minimaal

een uur op snelle hardware!)

6 - Indien alles klaar is staat in 'oe-fs'/build/tmp/deploy/images/ de .nfi file

die je in je dreambox kan flashen.

 

6 Het vervolg updaten en bouwen van een image

=============================================

1 - Switch naar de dreambox user

2 - Ga naar de 'openembedded' directory in het 8Gb filesysteem

3 - Tik : monotone pull monotone.vanille.de org.openembedded.dreambox

4 - Heb wederom geduld

5 - Tik : monotone update

 

Indien er niet staat 'already up-to-date' dan is er nieuwe software. Ga dan

naar de stap 5, 'Bouwen van een image'.

 

7 Zelf plugins bouwen

=====================

Dit is iets wat ik zelf bij elkaar geprusts heb, dus als mensen weten hoe dit

beter kan dan hou ik mij aanbevolen.

 

LET OP: Om dit te gebruiken moet je minimaal een keer een image gebouwd hebben omdat

er gebruik gemaakt wordt van de cross compiler en tools en de dreambox include

files. Deze worden tijdens een build gedownload.

 

1 - Switch naar de dreambox user

2 - Ga naar 'oe-fs'/build

3 - Maak een directory 'plugins' en ga er in staan

4 - Maak een symbolic link naar de 'cross' directories : ln -s ../tmp/cross cross

5 - Maak een symbolic link naar de 'power-pc' directories : ln -s ../tmp/staging/powerpc-linux powerpc-linux

6 - Download de plugin source en pak deze in de 'oe-fs'/build/plugins uit (uiteraard in

zn eigen directory)

7 - Open de Makefile aan en zorg dat de volgende parameters goed staan :

CDK_SRC = ../powerpc-linux

CDKROOT = ../cross

BOXBIN = ../cross/bin

8 - Bouw de plugin, tik : make

 

Vb voor de imdb plugin van Bjorn Hijmans :

 

1 - Switch naar de 'dreambox' user

2 - Ga naar Ga naar 'oe-fs'/build/plugins

3 - Download de source Hier

4 - Maak een directory 'imdb' en ga erin staan

5 - Unzip de zipfile : unzip ../imdb-src.zip

6 - Open de Makefile en pas de 3 parameters aan zoals in stap 7 hierboven

7 - Tik : make

 

8 Referenties

=============

OpenEmbedded wiki : http://oe.handhelds.org/cgi-bin/moin.cgi/

OpenEmbedded tutorial : http://developer.elitedvb.net/listprojects.php?curr_dir=81

IMDB Plugin van Bjorn Hijmans : http://imdb-dreambox.hijmans.nl/

Monotone : http://www.venge.net/monotone/downloads/


Geplaatst:

Werkt dat ook voor de DM 7000 ?

1x Dreambox 7000 met externe harddisk

1x Dreambox 500

1x AZBox Premium HD

Draaibare schotel met Maximum Twin 0,3 db LNB

Gentoo Linux Server en nog andere computer zooi

Geplaatst:
Citaat:
Werkt dat ook voor de DM 7000 ?

JA!!
4 - Open de Makefile en pas je boxtype (MACHINE) aan (Staat standaard op 7025!) : vb. MACHINE=dm7000
Geplaatst:

Leuke HowTo! En ik vind 't ook wel een aanrader voor de database als ik zo kijk naar de inhoud.

Helaas heb ik niet veel verstand van OpenEmbedded, omdat ik me vooral richt op de DM7000 build van PLi die over 't algemeen nog met de CVS-methode gebouwd wordt.

Geplaatst:
Citaat:
Idd, overal waar ik 7020 gebruik kan je 7000 gebruiken.

Dat gaat je niet lukken. Images voor de 7000, 5620 en 500 moeten met de cdk gebouwd worden. Deze types zijn niet gedefinieerd in OpenEmbedded.

Groeten,
Sat-Turner

Dreambox 7025, Dreambox 600, Triax 78 cm, Monoblock Astra-Hotbird

PLi-per de PLi-per de PLi

Geplaatst:

plugins die je op deze manier bouwt zullen vast wel werken op bijv de 7000, maar als je niet in de 7020 of 7025 geinteresseerd bent is de cdk volgens mij veel eenvoudiger om mee te beginnen.

 

En een hele image voor bijv de 7000 op deze manier bouwen heeft inderdaad weinig zin, dat gaat nooit passen.

 

Overigens maak ik graag gebruik van de devshell om dingen met de oe toolchain te bouwen, in plaats van de hierboven beschreven symlinks methode.

 

Geplaatst:

Ik had inderdaad 'als het goed is' moeten tussenvoegen. Ik zelf heb alleen een 7020 en dus alleen daar ervaring mee. ALle configuratie voor de 7000 zit er wel in en volgens mij moet je ook echt 7000 images kunnen bouwen. Een ander probleem is inderdaad ook al genoemd, de OpenEmbedded images zijn waarschijnlijk te groot om in de interne flash van de 7000 te zetten, maar dat moet ook geen probleem zijn om ze in je externe flash/hdd te installeren.

 

Als iemand zijn ervaringen kan delen over het bouwen voor 7000/500 dan hoor ik het graag zodat ik het kan uitsluiten of toevoegen in de howto.

Geplaatst:
Citaat:
Overigens maak ik graag gebruik van de devshell om dingen met de oe toolchain te bouwen, in plaats van de hierboven beschreven symlinks methode.


Ik ken deze methode niet (heb de symlink methode zelf geprutst zoals ik reeds vermeldde). Kan je een korte uitleg geven (of aanwijzen) hoe je dit opzet en gebruikt ? Het liefst met een voorbeeld natuurlijk. Kan ik dit bij de howto zetten.
Geplaatst:

Behalve dat de oe images te groot zullen zijn voor dm7000 e.d, is het image formaat ook nog eens anders. Je zult de gebouwde nfi eerst moeten uitpakken, voordat je hem op een dm7000 aan de praat zou kunnen krijgen.

Je zou dan bijvoorbeeld de secondstage bootloader in de interne flash kunnen zetten, en daarmee een CF / HD rootfs booten.

Maar dat is een heel ander verhaal.

 

Over de devshell;

'bitbake devshell' genereert een dump van de hele omgeving zoals die in oe gebruikt wordt, in een script. Vanuit de directory waar de sources staan die je wilt compileren voor je dreambox, kan je dit script sourcen (bijv '. ../build/tmp/work/devshell-1.0-r1/powerpc-linux-opendreambox-dm7020-devshell', in sommige shells moet je 'source' gebruiken ipv '.')

 

Nu staan al je omgevings variabelen goed om te kunnen crosscompileren met de oe toolchain.

Het script doet nog een poging './configure' te aliasen, maar dit werkt niet met de meeste shells.

Dus als je een autotools projectje wilt compileren, kan je het beste

'oe_runconf && make' gebruiken.

Geplaatst:
Citaat:
Behalve dat de oe images te groot zullen zijn voor dm7000 e.d, is het image formaat ook nog eens anders. Je zult de gebouwde nfi eerst moeten uitpakken, voordat je hem op een dm7000 aan de praat zou kunnen krijgen.
Je zou dan bijvoorbeeld de secondstage bootloader in de interne flash kunnen zetten, en daarmee een CF / HD rootfs booten.
Maar dat is een heel ander verhaal.

Helder. Ik nam aan dat de build afhankelijk van het gekozen boxtype ook een ander image als output zou geven. Helaas is die aanname dus fout <img src="/forums/images/graemlins/frown.gif" alt="" /> Ik zal erbij zetten dat deze methode in principe alleen voor 7020+ is. Plugins compileren voor de 7000/500 zou wel moeten werken lijkt me, toch ?

Citaat:
Over de devshell;
'bitbake devshell' genereert een dump van de hele omgeving zoals die in oe gebruikt wordt, in een script. Vanuit de directory waar de sources staan die je wilt compileren voor je dreambox, kan je dit script sourcen (bijv '. ../build/tmp/work/devshell-1.0-r1/powerpc-linux-opendreambox-dm7020-devshell', in sommige shells moet je 'source' gebruiken ipv '.')

Nu staan al je omgevings variabelen goed om te kunnen crosscompileren met de oe toolchain.
Het script doet nog een poging './configure' te aliasen, maar dit werkt niet met de meeste shells.
Dus als je een autotools projectje wilt compileren, kan je het beste
'oe_runconf && make' gebruiken.


Ok, als ik ff tijd heb ga ik hier mee experimenteren en zal ik het met een voorbeeld in de howto opnemen. Dank voor de info <img src="/forums/images/graemlins/smile.gif" alt="" /> Klinkt in iedergeval een stuk beter dan mijn 'hack'.
Geplaatst:
Citaat:
Ik zal erbij zetten dat deze methode in principe alleen voor 7020+ is. Plugins compileren voor de 7000/500 zou wel moeten werken lijkt me, toch ?

Twee dingen kunnen daar nog roet in het eten gooien:

- Recente cdk images maken meestal gebruik van glibc 2.3.2, terwijl OE standaard 2.3.5 gebruikt. Dit kun je waarschijnlijk wel aanpassen.

- De libraries op de 7000 zijn gestript. Het kan goed voorkomen dat symbols die in de plugin staan weggehaald zijn uit de libs van de 7000.

Moraal van het verhaal: Plugins gemaakt met de cdk doen het meestal wel op de 7020, plugins gemaakt met OE doen het meestal niet op de 7000 <img src="/forums/images/graemlins/crazy.gif" alt="" />

Groeten,
Sat-Turner

Dreambox 7025, Dreambox 600, Triax 78 cm, Monoblock Astra-Hotbird

PLi-per de PLi-per de PLi

Geplaatst:

Gracias voor de uitleg. Ik vermeld wel dat dit voor de 7000 toch wel wat problemen zal gaan opleveren.

Maak een account aan of log in om te reageren

Je moet een lid zijn om een reactie te kunnen achterlaten

Account aanmaken

Registreer voor een nieuwe account in onze community. Het is erg gemakkelijk!

Registreer een nieuwe account

Inloggen

Heb je reeds een account? Log hier in.

Nu inloggen
  • Wie is er online   0 leden

    • Er zijn geen geregistreerde gebruikers deze pagina aan het bekijken
×
×
  • Nieuwe aanmaken...