Howto:Image:Erstellung:Openembedded: Unterschied zwischen den Versionen

Aus DreamboxWIKI
Wechseln zu: Navigation, Suche
K
 
(25 dazwischenliegende Versionen von 3 Benutzern werden nicht angezeigt)
Zeile 1: Zeile 1:
 
[[Category:Register]]
 
[[Category:Register]]
[[Category:Software]]
 
 
[[Category:Entwicklung]]
 
[[Category:Entwicklung]]
 +
[[Category:Howto]]
  
Dieser Artikel basiert auf den Informationen der Seite [http://developer.elitedvb.net/listprojects.php?curr_dir=80 developer.elitedvb.net]
+
Dieser Artikel basiert auf Informationen der Seite [http://developer.elitedvb.net/listprojects.php?curr_dir=80 developer.elitedvb.net]
  
 
__TOC__
 
__TOC__
  
 
=Allgemeines=
 
=Allgemeines=
Ab den Modellen [[DM702x]] bzw [[DM708x]] wird nicht mehr das tuxbox-cdk sondern Openembedded für die Dreambox eingesetzt werden.
+
Seit dem Modell [[DM7020]] wird nicht mehr das tuxbox-cdk, sondern Openembedded für die Dreambox eingesetzt.
  
 
Dadurch ergeben sich einige sehr praktische Vorteile.<br><br>
 
Dadurch ergeben sich einige sehr praktische Vorteile.<br><br>
 
* Schneller und einfacher Bau von eigenen Images für die Dreambox
 
* Schneller und einfacher Bau von eigenen Images für die Dreambox
* Eine Paketverwaltung, man kann so jederzeit Pakete nachinstallieren (z.B: ipkg install mc for example)
+
* Eine Paketverwaltung, man kann so jederzeit Pakete nachinstallieren (z.B: ''ipkg install mc'')
 
* wesentlich größere Benutzerbasis (nicht nur dbox2/dreambox)
 
* wesentlich größere Benutzerbasis (nicht nur dbox2/dreambox)
 
* partielle Updates (z.B. reicht es hier aus enigma upzudaten, man muss nicht ein komplettes Image flashen).<br><br>
 
* partielle Updates (z.B. reicht es hier aus enigma upzudaten, man muss nicht ein komplettes Image flashen).<br><br>
 
Das ganze bringt jedoch auch einen Nachteil mit sich:<br>
 
Das ganze bringt jedoch auch einen Nachteil mit sich:<br>
Um einfach Pakete nachinstallieren zu können werden die Libraries nicht mehr gestriped daher ist ein Image statt den bisherigen 6 MB jetzt ca. 10 MB groß.<br><br>
+
Um einfach Pakete nachinstallieren zu können, werden die Bibliotheken nicht mehr gestripped (Entfernung von nicht benötigten Funktionen(?)), daher ist ein Image statt den bisherigen 6 MB jetzt ca. 10 MB groß.<br><br>
Die Dreambox Openembedded-Distribution wird nur über [[Bitkeeper]] angeboten (bk://sources.dreamboxupdate.com/packages-stable bzw für die Entwicklungsversion: bk://sources.dreamboxupdate.com/packages).<br>
+
 
Es ist also nicht ohne Weiteres möglich mit openembedded erstellte Images auf den bisherigen Receivern wie der [[DM7000]] oder der [[DM56x0]] einzusetzen.<br>
+
Es ist also nicht ohne Weiteres möglich, mit openembedded erstellte Images auf den bisherigen Receivern wie der [[DM7000]] oder der [[DM56x0]] einzusetzen.<br>
 
Ggf. kann [[Plugins:Dreamflash|Dreamflash]] als Lösung für dieses Problems eingesetzt werden.
 
Ggf. kann [[Plugins:Dreamflash|Dreamflash]] als Lösung für dieses Problems eingesetzt werden.
  
 
=Begriffsklärung=
 
=Begriffsklärung=
* OE = Openembedded - Die Build Umgebung
+
* OE = Openembedded &ndash; Die Build-Umgebung
 
* $OEROOT = Das Verzeichnis in dem ihr das Makefile bzw. die install-12.sh ausgeführt habt
 
* $OEROOT = Das Verzeichnis in dem ihr das Makefile bzw. die install-12.sh ausgeführt habt
  
 
=Erstellen des ersten Images (Linux)=
 
=Erstellen des ersten Images (Linux)=
==Prerequisiten==
+
==Voraussetzungen==
# Bevor man nun Anfängt eine OE-Umgebung aufzubauen muss u.U. noch einiges an Software installiert werden.<br>Näheres dazu gibt es im [http://oe.handhelds.org/cgi-bin/moin.cgi/RequiredSoftware Openembedded Wiki].
+
# Generell wird zum Erstellen eines eigenen Images eine vollwertige Linux-Distribution benötigt. Bitte habt Verständnis, dass hier weder ein "Linux-Grundkurs" angeboten noch auf die Besonderheiten einzelner Distributionen direkt eingegangen werden kann, dies würde einfach den Umfang des Wikis sprengen.
# Weiterhin benötigt das aktuelle OE Monotone 0.25.<br>Die aktuelle Version von Montone findet man immer unter: http://venge.net/monotone/
+
# Bevor man nun anfängt eine OE-Umgebung aufzubauen, muss u.U. noch einiges an Software installiert werden.<br>Näheres dazu gibt es im [http://www.openembedded.org/wiki/RequiredSoftware Openembedded-Wiki].
 +
# Weiterhin benötigt das aktuelle OE Monotone >=0.26.<br>Die aktuelle Version von Montone findet Ihr unter: http://venge.net/monotone/
  
 
==OE aufsetzen und das erste Image erstellen==
 
==OE aufsetzen und das erste Image erstellen==
'''Achtung, seit 19.01.2006 wird nicht mehr die install-12.sh verwendet sondern ein extra Makfile''' (es ist NICHT notwendig sein OE deshalb neu aufzusetzen).
 
  
* Die Datei "Makefile-opendreambox" von [http://developer.elitedvb.net/listprojects.php?curr_dir=81 developer.elitedvb.net] herunterladen und in ein möglichst leeres Verzeichnis kopieren.
+
* Die Datei "Makefile-opendreambox" von [http://schwerkraft.elitedvb.net/plugins/scmcvs/cvsweb.php/~checkout~/Makefile-opendreambox?content-type=text%2Fplain;cvsroot=opendreambox schwerkraft.elitedvb.net] herunterladen und in ein leeres Verzeichnis kopieren.
* Je nachdem für welche Box die OE-Umgebung gebaut werden soll muss in der Datei der Wert MACHINE="dm7025" entsprechend abgeändert werden (aktuell funktionieren die Werte "dm7020" und "dm7025").
+
*Folgenden Befehl ausführen
* In dem Verzeichnis in welches die Datei geladen wurde folgenden Befehl eingeben: ''make -f Makefile-opendreambox image''
+
make -f Makefile-opendreambox update-self
* Das Klonen des BK-Tree dauert einige Zeit wenn man nicht vorher.
+
* Je nachdem für welche Box die OE-Umgebung gebaut werden soll, muss in dieser Datei der Wert MACHINE="dm7025" entsprechend abgeändert werden (aktuell funktionieren die Werte "dm7020" und "dm7025").
** '''Anmerkung:''' Der komplette Vorgang kann enorm beschleunigt werden indem man vorher die aktuelle OE.db herunterlädt
+
* Im Verzeichnis, in welches die Datei geladen wurde, folgenden Befehl starten:
** Dazu einfach von http://ewi546.ewi.utwente.nl/OE die aktuelle OE.db.bz2 herunterladen und entpackt als 'openembedded.db' (kleingeschrieben!) in das selbe Verzeichnis legen in dem das Makefile liegt.
+
make -f Makefile-opendreambox image
* Wenn alles funktioniert hat findet ihr nun in ''$OEROOT/build/tmp/deploy/images'' ein "backfrisches" Image für eure Dreambox :)
+
* Jetzt sollte man etwas Geduld haben (ca. 2-3 Kannen Kaffee lang)
 +
* Wenn alles funktioniert hat, findet Ihr nun in ''$OEROOT/build/tmp/deploy/images'' ein "backfrisches" Image für eure Dreambox
  
 
=Ein bestehendes OE updaten=
 
=Ein bestehendes OE updaten=
  
Um ein bereits erstelltes OE auf den aktuellen offiziellen stand zu bringen geht man wie folgt vor.
+
Um ein bereits erstelltes OE auf den aktuellen offiziellen Stand zu bringen, geht man wie folgt vor.
# Im Verzeichnis ''$OEROOT/openembedded'' führt folgende Befehle aus (ohne die ""):
+
 
## "monotone pull montone.vanille.de org.openembedded.dreambox" (falls monotone.vanille.de nicht verfügbar ist
+
* Im Verzeichnis ''$OEROOT/build'':
## Sollte monotone.vanille.de nicht funktionieren: "monotone pull ewi546.ewi.utwente.nl org.openembedded.dreambox"
+
source ./env.source
## "monotone update"
+
bitbake -cclean world
# Im Verzeichnis ''$OEROOT/build''
+
* Im Verzeichnis ''$OEROOT/openembedded'' folgende Befehle ausführen (ohne die ""):
## "source ./env.source"
+
git pull
## "bitbake -cclean world"
+
* Wieder in ''$OEROOT/build'':
## "bitbake dreambox-image"
+
** "bitbake dreambox-image"
  
 
Ihr findet das neue Image dann wie immer in $OEROOT/build/tmp/deploy/images.
 
Ihr findet das neue Image dann wie immer in $OEROOT/build/tmp/deploy/images.
Zeile 57: Zeile 58:
 
=Ein Image mit neuestem enigma(2) erstellen=
 
=Ein Image mit neuestem enigma(2) erstellen=
  
Im OE ist eine (meist etwas ältere) Version von enigma(2) die von den Entwicklern als stabil und gut funktionierend angesehen wird.
+
Im OE ist eine (meist etwas ältere) Version von enigma(2), die von den Entwicklern als stabil angesehen wird.
Im folgenden wir der Vorgang für enigma2 beschrieben, er kann aber genauso auf enigma1 angewendet werden (einfach ''enigma2'' durch ''enigma'' ersetzen bei sämtlichen Datei und Verzeichnisnamen).
+
Im Folgenden wird der Vorgang für enigma2 beschrieben, er kann aber genauso auf enigma1 angewendet werden (einfach ''enigma2'' durch ''enigma'' bei sämtlichen Datei- und Verzeichnisnamen ersetzen).
 +
 
 +
Um die aktuellste CVS-Version zu bekommen, sind nur wenige Schritte notwendig.
 +
* In ''$OEROOT/build''
 +
bitbake -cclean enigma2 enigma2-plugins enigma2-streamproxy enigma2-skins
 +
* In in folgenden Dateien in ''$OEROOT/openembedded/packages/enigma2/'' den Wert von CVSDATE auf das gewünschte Datum ändern.
 +
enigma2-plugins.bb
 +
enigma2-streamproxy.bb
 +
enigma2-skins.bb
 +
enigma2.bb
 +
*** Um hier auf eine aktuelle CVS Version zu kommen muss eine Zeile abgeändert werden<br>
 +
method=pserver;tag=${TAG};date=${SRCDATE}
 +
wird zu
 +
method=pserver;date=${SRCDATE}
 +
* Wieder in ''$OEROOT/build''
 +
source ./env.source
 +
bitbake dreambox-image
 +
 
 +
'''Anmerkung: Oftmals sind manuelle Eingriffe notwendig, um ein Image mit aktuellem enigma(2) mit dem OE (welches ja für die ältere Version der [[GUI]] konfiguriert ist) erstellen zu können. Entsprechende Lösungen sind oft/meistens im [http://www.dream-multimedia-tv.de/board/board.php?boardid=51 Dreambox-Forum in der Sektion "Openembedded" zu finden]
 +
 
 +
=Dateien während des Erstellen des Image patchen=
 +
 
 +
Man kann während der Erstellung eines Image einzelne Dateien automatisch patchen. Dazu ist es erforderlich zu wissen, welches Paket diese Datei bereit stellt.
 +
Beispielhaft wollen wir Einträge in dem Enigma2 Hauptmenü ändern. Diese Einträge werden in der Datei /usr/share/enigma2/menu.xml definiert. Um heraus zu finden, welches Paket diese Datei ausliefert, suchen wir das entsprechnde Paket mit IPKG:
 +
 
 +
root@dm7025:~# ipkg search /usr/share/enigma2/menu.xml
 +
enigma2 - 2.2cvs20070528-r0 - /usr/share/enigma2/menu.xml
 +
 
 +
Somit wissen wir, das das Paket Enigma2 diese Datei bereit stellt. In diesem Fall können wir also die Datei im Enigma2-CVS finden und unsere Änderungen daran vornehmen. Anschließen erstellen wir einen Patch (entweder per Commandline mit dem CVS-Tool diff direkt oder beispielsweise mit Eclipse). Als Resultat haben wir eine Datei Namens menu.xml.patch .
 +
 
 +
Damit dieser Patch nun beim Bau des Image (genauer des Paketes enigma2) automatisch mit verarbeitet wird, müssen wird das OE anpassen. Dazu wird ein Ordner innerhalb des Enigma2-Ordner erstellt, der den gleichen Namen wie das Bitbake-File trägt und kopieren unseren Patch dort hinein. In unserem Beispiel:
 +
 
 +
oeuser@pc:$ mkdir $OEROOT/openembedded/packages/enigma2/enigma2
 +
oeuser@pc:$ cp menu.xml.patch $OEROOT/openembedded/packages/enigma2/enigma2/
 +
 
 +
Nun müssen wir noch das entsprechende Bitbake-File des Paketes ändern. In unserem Fall eben das enigma2.bb . Die Änderung betrifft die Variable SRC_URI. Diese ändern wir wie folgend:
 +
 
 +
SRC_URI = "cvs://anonymous@dreamboxupdate.com/cvs;module=enigma2;method=pserver;date=${SRCDATE} \
 +
          file://enigma2.sh \
 +
          file://menu.xml.patch;patch=1"
  
Um die aktuellste CVS-Version zu bekommen sind nur wenige schritte notwendig.
+
Wenn wir nun das Paket neu erstellen, sollte der Patch automatisch mit eingebaut werden. Entsprechende Ausgaben bei Bau sollten dies bestätigen.
# In der Datei ''$OEROOT/openembedded/packages/enigma2/enigma2.bb'' den Wert von CVSDATE auf das gewünschte Datum ändern.
 
# In ''$OEROOT/build''
 
## "source ./env.source"
 
## "bitbake -cclean enigma2"
 
## "bitbake dreambox-image"
 
  
'''Anmerkung: Oftmals sind manuelle Eingriffe notwendig um ein Image mit aktuellem enigma(2) mit dem OE (welches ja für die ältere Version konfiguriert ist) erstellen zu können. Entsprechende Lösungen sind oft/meistens im [http://www.dream-multimedia-tv.de/board/board.php?boardid=51 Dreambox-Forum in der Sektion "Openembedded" zu finden]
+
NOTE: package enigma2-2.2cvs20070528-r0: task do_patch: started
 +
NOTE: Applying patch 'menu.xml.patch'
 +
NOTE: package enigma2-2.2cvs20070528-r0: task do_patch: completed
  
  
 
{{body}}
 
{{body}}

Aktuelle Version vom 27. Januar 2009, 18:55 Uhr


Dieser Artikel basiert auf Informationen der Seite developer.elitedvb.net

Allgemeines

Seit dem Modell DM7020 wird nicht mehr das tuxbox-cdk, sondern Openembedded für die Dreambox eingesetzt.

Dadurch ergeben sich einige sehr praktische Vorteile.

  • Schneller und einfacher Bau von eigenen Images für die Dreambox
  • Eine Paketverwaltung, man kann so jederzeit Pakete nachinstallieren (z.B: ipkg install mc)
  • wesentlich größere Benutzerbasis (nicht nur dbox2/dreambox)
  • partielle Updates (z.B. reicht es hier aus enigma upzudaten, man muss nicht ein komplettes Image flashen).

Das ganze bringt jedoch auch einen Nachteil mit sich:
Um einfach Pakete nachinstallieren zu können, werden die Bibliotheken nicht mehr gestripped (Entfernung von nicht benötigten Funktionen(?)), daher ist ein Image statt den bisherigen 6 MB jetzt ca. 10 MB groß.

Es ist also nicht ohne Weiteres möglich, mit openembedded erstellte Images auf den bisherigen Receivern wie der DM7000 oder der DM56x0 einzusetzen.
Ggf. kann Dreamflash als Lösung für dieses Problems eingesetzt werden.

Begriffsklärung

  • OE = Openembedded – Die Build-Umgebung
  • $OEROOT = Das Verzeichnis in dem ihr das Makefile bzw. die install-12.sh ausgeführt habt

Erstellen des ersten Images (Linux)

Voraussetzungen

  1. Generell wird zum Erstellen eines eigenen Images eine vollwertige Linux-Distribution benötigt. Bitte habt Verständnis, dass hier weder ein "Linux-Grundkurs" angeboten noch auf die Besonderheiten einzelner Distributionen direkt eingegangen werden kann, dies würde einfach den Umfang des Wikis sprengen.
  2. Bevor man nun anfängt eine OE-Umgebung aufzubauen, muss u.U. noch einiges an Software installiert werden.
    Näheres dazu gibt es im Openembedded-Wiki.
  3. Weiterhin benötigt das aktuelle OE Monotone >=0.26.
    Die aktuelle Version von Montone findet Ihr unter: http://venge.net/monotone/

OE aufsetzen und das erste Image erstellen

  • Die Datei "Makefile-opendreambox" von schwerkraft.elitedvb.net herunterladen und in ein leeres Verzeichnis kopieren.
  • Folgenden Befehl ausführen
make -f Makefile-opendreambox update-self
  • Je nachdem für welche Box die OE-Umgebung gebaut werden soll, muss in dieser Datei der Wert MACHINE="dm7025" entsprechend abgeändert werden (aktuell funktionieren die Werte "dm7020" und "dm7025").
  • Im Verzeichnis, in welches die Datei geladen wurde, folgenden Befehl starten:
make -f Makefile-opendreambox image
  • Jetzt sollte man etwas Geduld haben (ca. 2-3 Kannen Kaffee lang)
  • Wenn alles funktioniert hat, findet Ihr nun in $OEROOT/build/tmp/deploy/images ein "backfrisches" Image für eure Dreambox

Ein bestehendes OE updaten

Um ein bereits erstelltes OE auf den aktuellen offiziellen Stand zu bringen, geht man wie folgt vor.

  • Im Verzeichnis $OEROOT/build:
source ./env.source
bitbake -cclean world
  • Im Verzeichnis $OEROOT/openembedded folgende Befehle ausführen (ohne die ""):
git pull
  • Wieder in $OEROOT/build:
    • "bitbake dreambox-image"

Ihr findet das neue Image dann wie immer in $OEROOT/build/tmp/deploy/images.

Ein Image mit neuestem enigma(2) erstellen

Im OE ist eine (meist etwas ältere) Version von enigma(2), die von den Entwicklern als stabil angesehen wird. Im Folgenden wird der Vorgang für enigma2 beschrieben, er kann aber genauso auf enigma1 angewendet werden (einfach enigma2 durch enigma bei sämtlichen Datei- und Verzeichnisnamen ersetzen).

Um die aktuellste CVS-Version zu bekommen, sind nur wenige Schritte notwendig.

  • In $OEROOT/build
bitbake -cclean enigma2 enigma2-plugins enigma2-streamproxy enigma2-skins
  • In in folgenden Dateien in $OEROOT/openembedded/packages/enigma2/ den Wert von CVSDATE auf das gewünschte Datum ändern.
enigma2-plugins.bb
enigma2-streamproxy.bb 
enigma2-skins.bb
enigma2.bb
      • Um hier auf eine aktuelle CVS Version zu kommen muss eine Zeile abgeändert werden
method=pserver;tag=${TAG};date=${SRCDATE}

wird zu

method=pserver;date=${SRCDATE}
  • Wieder in $OEROOT/build
source ./env.source
bitbake dreambox-image

Anmerkung: Oftmals sind manuelle Eingriffe notwendig, um ein Image mit aktuellem enigma(2) mit dem OE (welches ja für die ältere Version der GUI konfiguriert ist) erstellen zu können. Entsprechende Lösungen sind oft/meistens im Dreambox-Forum in der Sektion "Openembedded" zu finden

Dateien während des Erstellen des Image patchen

Man kann während der Erstellung eines Image einzelne Dateien automatisch patchen. Dazu ist es erforderlich zu wissen, welches Paket diese Datei bereit stellt. Beispielhaft wollen wir Einträge in dem Enigma2 Hauptmenü ändern. Diese Einträge werden in der Datei /usr/share/enigma2/menu.xml definiert. Um heraus zu finden, welches Paket diese Datei ausliefert, suchen wir das entsprechnde Paket mit IPKG:

root@dm7025:~# ipkg search /usr/share/enigma2/menu.xml
enigma2 - 2.2cvs20070528-r0 - /usr/share/enigma2/menu.xml

Somit wissen wir, das das Paket Enigma2 diese Datei bereit stellt. In diesem Fall können wir also die Datei im Enigma2-CVS finden und unsere Änderungen daran vornehmen. Anschließen erstellen wir einen Patch (entweder per Commandline mit dem CVS-Tool diff direkt oder beispielsweise mit Eclipse). Als Resultat haben wir eine Datei Namens menu.xml.patch .

Damit dieser Patch nun beim Bau des Image (genauer des Paketes enigma2) automatisch mit verarbeitet wird, müssen wird das OE anpassen. Dazu wird ein Ordner innerhalb des Enigma2-Ordner erstellt, der den gleichen Namen wie das Bitbake-File trägt und kopieren unseren Patch dort hinein. In unserem Beispiel:

oeuser@pc:$ mkdir $OEROOT/openembedded/packages/enigma2/enigma2
oeuser@pc:$ cp menu.xml.patch $OEROOT/openembedded/packages/enigma2/enigma2/

Nun müssen wir noch das entsprechende Bitbake-File des Paketes ändern. In unserem Fall eben das enigma2.bb . Die Änderung betrifft die Variable SRC_URI. Diese ändern wir wie folgend:

SRC_URI = "cvs://anonymous@dreamboxupdate.com/cvs;module=enigma2;method=pserver;date=${SRCDATE} \
          file://enigma2.sh \
          file://menu.xml.patch;patch=1"

Wenn wir nun das Paket neu erstellen, sollte der Patch automatisch mit eingebaut werden. Entsprechende Ausgaben bei Bau sollten dies bestätigen.

NOTE: package enigma2-2.2cvs20070528-r0: task do_patch: started
NOTE: Applying patch 'menu.xml.patch'
NOTE: package enigma2-2.2cvs20070528-r0: task do_patch: completed




Grundlagen - Installation - Hardware - Entwicklung - Portal

Enigma - Enigma2 - Plugins - Spiele - Software - Tools - Howto - FAQ - Images

Hauptseite - News - Alle Artikel - Bewertungen - Gewünschte Seiten - Index - Neue Artikel - Impressum - Meilensteine - Team

Hilfeportal - Seite bearbeiten - Bilder - Links - Tabellen - Textgestaltung