Dreambox:Howto:Image:Erstellung:Openembedded

Aus TuxBoxWIKI
Version vom 13. Februar 2009, 15:58 Uhr von Dbt (Diskussion | Beiträge) (54 Versionen: DD-Development)
(Unterschied) ← Nächstältere Version | Aktuelle Version (Unterschied) | Nächstjüngere Version → (Unterschied)
Wechseln zu: Navigation, Suche


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