Images erstellen und Programme kompilieren unter OE 1.6: Unterschied zwischen den Versionen

Aus Gemini-Wiki
Zur Navigation springen Zur Suche springen
 
(12 dazwischenliegende Versionen von 4 Benutzern werden nicht angezeigt)
Zeile 1: Zeile 1:
[[Kategorie:Index]]
+
Hier will ich mal versuchen auf zu zeigen wie man aus dem [[CVS / OE - Image|CVS / OE]] ein Image unter OE 1.6 erstellen kann. Und anschließend ein "Programm für die Dreambox selber erstellen bzw. kompilieren kann...
[[Kategorie:FAQ und Anleitungen]]
 
<div style="background-color: #eeeeee; padding: .4em; border-bottom:0px solid #cccccc;">[[Bild:input_info.png|right|20px|Information]] '''Die Informationsseite zum Dreambox- Images und Programme kompilieren'''</div>
 
== Allgemein ==
 
 
 
hier will ich mal versuchen auf zu zeigen wie man aus dem CVS/OE ein Image erstellen kann.
 
Und anschließend ein "Programm für die Dreambox selber erstellen bzw. kompilieren kann...
 
  
 
Hier schreibe ich mal das neu auf so das es evlt. Jeder versteht
 
Hier schreibe ich mal das neu auf so das es evlt. Jeder versteht
 
 
Zurück zum [[#top | Inhaltsverzeichnis:]]
 
 
  
 
== Erstellen eines eigenen CVS/OE images ==
 
== Erstellen eines eigenen CVS/OE images ==
 
 
'''1.''' ein Linuxsystem installieren bzw. einrichten (z.B.(K)Ubuntu)
 
'''1.''' ein Linuxsystem installieren bzw. einrichten (z.B.(K)Ubuntu)
  
'''2.''' adenin "install.sh" Script verwenden, ist hier zu finden:
+
'''2.''' adenin "install.sh" Script verwenden, ist hier zu finden: [http://www.i-have-a-dreambox.com/wbb2/thread.php?threadid=101254 CVS- sowie OE-Installation und Imagebau für Anfänger (und EgLe ;) )]
 
 
[http://www.i-have-a-dreambox.com/wbb2/thread.php?threadid=101254 CVS- sowie OE-Installation und Imagebau für Anfänger (und EgLe ;) )]
 
 
 
  
 
'''3.''' Images erstellen hier gibt es ja mehrere Möglichkeiten.
 
'''3.''' Images erstellen hier gibt es ja mehrere Möglichkeiten.
Zeile 34: Zeile 20:
 
* dm7020
 
* dm7020
 
* dm7025
 
* dm7025
 +
* dm500HD
 
* dm800
 
* dm800
 
* dm8000
 
* dm8000
  
'''Wichtig: Hiermit Weise explizit darauf hin, dass OpenDreambox 1.6 z.Zt. NICHT für Endnutzer und Unerfahrene Imagebauer geeignet ist - sonst kommt noch jemand auf die Idee, dass 1.5 < 1.6 => 1.6 ist besser => 1.6 Image bauen; im unveränderten Zustand bootet das 1.6 Image auch weiterhin nicht durch..'''
+
{{Hinweis|'''Hiermit weise ich explizit darauf hin, dass OpenDreambox 1.6 z.Zt. NICHT für Endnutzer und Unerfahrene Imagebauer geeignet ist - sonst kommt noch jemand auf die Idee, weil OE 1.5 von der Version kleiner als OE 1.6 ist, es wohl besser wäre, OE 1.6 Image zu bauen. Im unveränderten Zustand bootet das 1.6 Image auch weiterhin nicht durch.'''}}
  
 
Wer beim Kompilieren eines Images auf Probleme stößt, der sollte sich im Bereich
 
Wer beim Kompilieren eines Images auf Probleme stößt, der sollte sich im Bereich
Zeile 43: Zeile 30:
 
[http://www.i-have-a-dreambox.com/wbb2/board.php?boardid=260 Developer Bereich CVS/Openembedded]
 
[http://www.i-have-a-dreambox.com/wbb2/board.php?boardid=260 Developer Bereich CVS/Openembedded]
  
etwas genauer umsehen je nachdem was für ein Image er eben ausprobiert.
+
etwas genauer umsehen, je nachdem was für ein Image er eben ausprobiert.
  
Ist es ein Enigma1 oder Enigma2 Image?
+
* Ist es ein Enigma oder Enigma2 Image?
  
Ist es ein OE 1.5 oder ein OE 1.6 Image?
+
* Ist es ein OE 1.5 oder ein OE 1.6 Image?
  
Wer z.B. Probleme haben sollte mit einem OE 1.5 Image der DB7025 kann sich mal
+
Wer z.B. Probleme haben sollte mit einem OE 1.5 Image der DB7025, kann sich mal
 
die Fehler ansehen im Thread "[http://www.i-have-a-dreambox.com/wbb2/thread.php?threadid=101738 OE-git 1.5 DM7025]" gleiches  gibt es auch für "[http://www.i-have-a-dreambox.com/wbb2/thread.php?threadid=100335 OE-git 1.6 DM7025]".
 
die Fehler ansehen im Thread "[http://www.i-have-a-dreambox.com/wbb2/thread.php?threadid=101738 OE-git 1.5 DM7025]" gleiches  gibt es auch für "[http://www.i-have-a-dreambox.com/wbb2/thread.php?threadid=100335 OE-git 1.6 DM7025]".
  
Oder wenn er in den Threads keine Lösung für sein Problem findet eben ein neuen Thema eröffnen.
+
Oder wenn er in den Threads keine Lösung für sein Problem findet, eben ein neuen Thema eröffnen.
Um aber die Übersicht zu wahren wäre es nett wenn man die Betreffzeile genauso "Treffend" formulieren würde.
+
Um aber die Übersicht zu wahren, wäre es nett, wenn man die Betreffzeile genauso "treffend" formulieren würde.
  
Weiterhin sollte man ggff auch die Board-Suche verwenden.
+
Weiterhin sollte man ggfs auch die Board-Suche verwenden.
  
 
Bricht z.B. das Kompilieren mit folgender Meldung ab:
 
Bricht z.B. das Kompilieren mit folgender Meldung ab:
NOTE: package dreambox-image-1.0-r0: task do_rootfs: started
+
<syntaxhighlight>
ERROR: function do_rootfs failed
+
NOTE: package dreambox-image-1.0-r0: task do_rootfs: started
ERROR: see log in /media/sda8/Dreambox-Build/openembedded/1.5/dm7025/build/tmp/work/dreambox-image-1.0-r0/temp/log.do_rootfs.6697
+
ERROR: function do_rootfs failed
NOTE: Task failed: /media/sda8/Dreambox-Build/openembedded/1.5/dm7025/build/tmp/work/dreambox-image-1.0-r0/temp/log.do_rootfs.6697
+
ERROR: see log in /media/sda8/Dreambox-Build/openembedded/1.5/dm7025/build/tmp/work/dreambox-image-1.0-r0/temp/log.do_rootfs.6697
NOTE: package dreambox-image-1.0-r0: task do_rootfs: failed
+
NOTE: Task failed: /media/sda8/Dreambox-Build/openembedded/1.5/dm7025/build/tmp/work/dreambox-image-1.0-r0/temp/log.do_rootfs.6697
ERROR: TaskFailed event exception, aborting
+
NOTE: package dreambox-image-1.0-r0: task do_rootfs: failed
NOTE: package dreambox-image-1.0: failed
+
ERROR: TaskFailed event exception, aborting
ERROR: Build of dreambox-image failed
+
NOTE: package dreambox-image-1.0: failed
make: *** [image] Fehler 1  
+
ERROR: Build of dreambox-image failed
 +
make: *** [image] Fehler 1  
 +
</syntaxhighlight>
  
 
Kann man in der Bordsuche z.B. recht schön nach '''ERROR: function do_rootfs failed''' suchen lassen.
 
Kann man in der Bordsuche z.B. recht schön nach '''ERROR: function do_rootfs failed''' suchen lassen.
  
 
+
Wenn es also nun zu Abbrüchen kommt, sollte man versuchen die Fehlermeldung
Wenn es also nun zu abbrüchen kommt, sollte man versuchen die Fehlermeldung
+
zu entschlüsseln und ggfs ein fehlendes Paket nachinstallieren, was man noch
zu entschlüsseln und ggf. ein fehlendes Paket nachinstallieren was man noch
 
 
benötigt oder im CVS Bereich dann ein Posting eröffnen ;)
 
benötigt oder im CVS Bereich dann ein Posting eröffnen ;)
 
  
 
Naja, einige Fehler möchte ich dokumentieren ;)
 
Naja, einige Fehler möchte ich dokumentieren ;)
 +
<syntaxhighlight>
 +
ERROR: gstreamer-0.10.21: http://gstreamer.freedesktop.org/src/gstreamer/gstreamer-0.10.21.tar.bz2 has no entry in conf/checksums.ini, not checking URI
 +
ERROR: Error in executing:
 +
ERROR: Exception:<type 'exceptions.SystemExit'> Message:1
 +
ERROR: Printing the environment of the function
 +
ERROR: Error in executing:
 +
ERROR: Exception:<type 'exceptions.SystemExit'> Message:1
 +
ERROR: Printing the environment of the function
 +
ERROR: Build of /home/egle/db8000-image/dm8000/openembedded/packages/gstreamer/gstreamer_0.10.21.bb do_fetch failed
 +
ERROR: Task 1400 (/home/egle/db8000-image/dm8000/openembedded/packages/gstreamer/gstreamer_0.10.21.bb, do_fetch) failed
 +
NOTE: Tasks Summary: Attempted 286 tasks of which 0 didn't need to be rerun and 1 failed.
 +
ERROR: '/home/egle/db8000-image/dm8000/openembedded/packages/gstreamer/gstreamer_0.10.21.bb' failed
 +
make: *** [image] Fehler 1
 +
</syntaxhighlight>
  
ERROR: gstreamer-0.10.21: http://gstreamer.freedesktop.org/src/gstreamer/gstreamer-0.10.21.tar.bz2 has no entry in conf/checksums.ini, not checking URI
+
Wenn Ihr so was bekommt, wo Ihr seht, dass der Download fehlgeschlagen ist.
ERROR: Error in executing:
+
Und Ihr aber seht, dass dies in den Sourcen alles aber runter geladen wurde.
ERROR: Exception:<type 'exceptions.SystemExit'> Message:1
 
ERROR: Printing the environment of the function
 
ERROR: Error in executing:
 
ERROR: Exception:<type 'exceptions.SystemExit'> Message:1
 
ERROR: Printing the environment of the function
 
ERROR: Build of /home/egle/db8000-image/dm8000/openembedded/packages/gstreamer/gstreamer_0.10.21.bb do_fetch failed
 
ERROR: Task 1400 (/home/egle/db8000-image/dm8000/openembedded/packages/gstreamer/gstreamer_0.10.21.bb, do_fetch) failed
 
NOTE: Tasks Summary: Attempted 286 tasks of which 0 didn't need to be rerun and 1 failed.
 
ERROR: '/home/egle/db8000-image/dm8000/openembedded/packages/gstreamer/gstreamer_0.10.21.bb' failed
 
make: *** [image] Fehler 1
 
  
Wenn Ihr so was bekommt wo Ihr seht das der Download fehlgeschlagen ist.
+
Könnte es euch helfen, den checksum-test zu umgehen...
Und Ihr aber seht das dies in den sourcen alles aber runtergeladen wurde.
+
<syntaxhighlight>
 
+
rm openembedded/conf/checksums.ini
Könnte es euch helfen den checksum-test zu umgehen...
+
</syntaxhighlight>
 
 
rm openembedded/conf/checksums.ini
 
 
Oder wie ich es einfach mit dem Dateimanager gelöscht ;(
 
Oder wie ich es einfach mit dem Dateimanager gelöscht ;(
  
Dann geht das Kompilieren weiter, aber es erscheint solch eine Meldung als im Fenster:
+
Dann geht das Kompilieren weiter, aber es erscheint solch eine Meldung im Fenster:
NOTE: No conf/checksums.ini found, not checking checksums
+
<syntaxhighlight>
 
+
NOTE: No conf/checksums.ini found, not checking checksums
 
+
</syntaxhighlight>
 
 
'''Eine Bessere Lösung um den Checksum-Error loszuwerden wäre auch (erspart vor allem Ärger bei einem späteren pull):'''
 
echo 'OE_ALLOW_INSECURE_DOWNLOADS = "1"' >> $MACHINE/build/conf/local.conf
 
 
 
  
 +
'''Eine Bessere Lösung um den Checksum-Error loszuwerden, wäre auch (erspart vor allem Ärger bei einem späteren pull):'''
 +
<syntaxhighlight>
 +
echo 'OE_ALLOW_INSECURE_DOWNLOADS = "1"' >> $MACHINE/build/conf/local.conf
 +
</syntaxhighlight>
  
 
Sollte das ganze mal so abbrechen (connetction time out)
 
Sollte das ganze mal so abbrechen (connetction time out)
 +
<syntaxhighlight>
 +
Resolving core.fluendo.com... 195.10.6.237
 +
Connecting to core.fluendo.com|195.10.6.237|:80... failed: Connection timed out.
 +
Retrying.
  
Resolving core.fluendo.com... 195.10.6.237
+
--18:58:37--  http://core.fluendo.com/gstreamer/src/gst-fluendo-mpegdemux/gst-fluendo-mpegdemux-0.10.15.tar.gz
Connecting to core.fluendo.com|195.10.6.237|:80... failed: Connection timed out.
+
(try: 2) => `/home/egle/db8000-image/sources/gst-fluendo-mpegdemux-0.10.15.tar.gz'
Retrying.
+
Connecting to core.fluendo.com|195.10.6.237|:80... failed: Connection timed out.
 
+
Retrying.
--18:58:37--  http://core.fluendo.com/gstreamer/src/gst-fluendo-mpegdemux/gst-fluendo-mpegdemux-0.10.15.tar.gz
 
  (try: 2) => `/home/egle/db8000-image/sources/gst-fluendo-mpegdemux-0.10.15.tar.gz'
 
Connecting to core.fluendo.com|195.10.6.237|:80... failed: Connection timed out.
 
Retrying.
 
  
--19:01:48--  http://core.fluendo.com/gstreamer/src/gst-fluendo-mpegdemux/gst-fluendo-mpegdemux-0.10.15.tar.gz
+
--19:01:48--  http://core.fluendo.com/gstreamer/src/gst-fluendo-mpegdemux/gst-fluendo-mpegdemux-0.10.15.tar.gz
  (try: 3) => `/home/egle/db8000-image/sources/gst-fluendo-mpegdemux-0.10.15.tar.gz'
+
(try: 3) => `/home/egle/db8000-image/sources/gst-fluendo-mpegdemux-0.10.15.tar.gz'
Connecting to core.fluendo.com|195.10.6.237|:80...  
+
Connecting to core.fluendo.com|195.10.6.237|:80...
 +
</syntaxhighlight>
  
Und Ihr die angegeben Domain mit selbst mit dem Browser nicht erreichen könnt.
+
Und Ihr die angegebe Domain selbst mit dem Browser nicht erreichen könnt,
Ist der entsprechende Server wohl wirklich zur Zeit nicht zu erreichen.
+
ist der entsprechende Server wohl wirklich zur Zeit nicht erreichbar.
  
Hier müsst ihr euch eben gedulten, das ganze mal einen Tag später wieder Probieren.
+
Hier müsst ihr euch eben gedulden und das ganze mal einen Tag später wieder probieren
 
oder einen Workaround zur Hilfe nehmen ;)
 
oder einen Workaround zur Hilfe nehmen ;)
  
Sucht euch das entsprechende Tarball von einer anderen Quelle und kopiert es dann in
+
Sucht Euch das entsprechende Tarball von einer anderen Quelle und kopiert es dann in den
Ordner wo die Sourcen abgelegt werden hier im Beispiel dann eben "/openembedded/sources".
+
Ordner, in dem die Sourcen abgelegt werden. Hier im Beispiel dann eben "/openembedded/sources".
Danach kann es dann weitergehen....
+
Danach kann es weitergehen....
  
 
Einige Stunden an Zeit sollte man sich aber schon einplanen ;)
 
Einige Stunden an Zeit sollte man sich aber schon einplanen ;)
 
 
 
Zurück zum [[#top | Inhaltsverzeichnis:]]
 
 
 
  
 
=== Image erstellt, wie dann aktualisieren? ===
 
=== Image erstellt, wie dann aktualisieren? ===
 +
Hierzu habe ich auch einen Thread im IHAD eröffnet, der Antworten bringt ;)
  
Hierzu habe ich auch einen Thread im IHAD eröffnet der  Antworten bringt ;)
+
[http://www.i-have-a-dreambox.com/wbb2/thread.php?threadid=101867 Image erstellt, wie dann aktualisieren?]
 
 
[http://www.i-have-a-dreambox.com/wbb2/thread.php?threadid=101867 Image erstellt, wie dann aktualisiseren?]
 
 
 
 
 
Zurück zum [[#top | Inhaltsverzeichnis:]]
 
 
 
  
 
=== openembedded reparieren ===
 
=== openembedded reparieren ===
  
Sollte es mal vorkommen das man sich das '''openembedded''' zerschossen hat oder einige der '''.bb-files''' gelöscht oder verhunzt hat und weiß nicht mehr wie man das wieder reparieren kann/soll.
+
Sollte es mal vorkommen, dass man sich das '''openembedded''' zerschossen hat oder einige der '''.bb-files''' gelöscht oder verhunzt hat und weiß nicht mehr, wie man das wieder reparieren kann/soll,
Gibt es natürlich auch die Möglichkeit sein '''openembedded''' wieder reparieren zu lassen.
+
gibt es natürlich auch die Möglichkeit, sein '''openembedded''' wieder reparieren zu lassen.
 
 
  
 
Gehe in das Verzeichnis '''openembedded''' und führe dort folgende Befehle aus:
 
Gehe in das Verzeichnis '''openembedded''' und führe dort folgende Befehle aus:
 
+
<syntaxhighlight>
git checkout -f
+
git checkout -f
git pull
+
git pull
 +
</syntaxhighlight>
  
 
So kann man auch das System reparieren.<br />
 
So kann man auch das System reparieren.<br />
Danach musst man natürlich eventuelle Änderungen die man an den *.bb's gemacht hatte, wieder erneut eintragen (zB von 2.5 auf 2.6).  
+
Danach muss man natürlich eventuelle Änderungen, die man an den *.bb's gemacht hatte, wieder erneut eintragen (z.B. von 2.5 auf 2.6).  
 
 
 
 
Zurück zum [[#top | Inhaltsverzeichnis:]]
 
  
 +
=== Bitbake - Befehle Manuell absetzen ===
 +
* ins '''build'''-Verzeichnis des entsprechenden Images wechseln.
 +
<syntaxhighlight>
 +
bitbake -cclean dreambox-image
 +
rm -rf tmp/deploy/images/*
 +
bitbake dreambox-image
 +
</syntaxhighlight>
  
 
=== Beschleunigung der Image-Erstellung durch Doppelkern ===
 
=== Beschleunigung der Image-Erstellung durch Doppelkern ===
 
 
Ob dies Sinnvoll ist oder nicht?<br />
 
Ob dies Sinnvoll ist oder nicht?<br />
 
Ob es mehr Probleme als Vorteile mit sich bringt?<br />
 
Ob es mehr Probleme als Vorteile mit sich bringt?<br />
Zeile 178: Zeile 160:
 
Aber zu diesem Thema gibt es auch einen eigenen Thread im IHAD-Forum:<br />
 
Aber zu diesem Thema gibt es auch einen eigenen Thread im IHAD-Forum:<br />
 
[http://www.i-have-a-dreambox.com/wbb2/thread.php?threadid=103412 Beschleunigung der Image-Erstellung durch Doppelkern]
 
[http://www.i-have-a-dreambox.com/wbb2/thread.php?threadid=103412 Beschleunigung der Image-Erstellung durch Doppelkern]
 
 
Zurück zum [[#top | Inhaltsverzeichnis:]]
 
 
  
 
== Programme für die Dreambox Kompilieren ==
 
== Programme für die Dreambox Kompilieren ==
 
 
'''Hier gibt es natürlich wie Überall auch immer mehrere Varianten und Möglichkeiten'''.
 
'''Hier gibt es natürlich wie Überall auch immer mehrere Varianten und Möglichkeiten'''.
  
 
Einige will ich hier incl. nachvollziehbaren Beispielen aufzeigen.  
 
Einige will ich hier incl. nachvollziehbaren Beispielen aufzeigen.  
 
 
Zurück zum [[#top | Inhaltsverzeichnis:]]
 
 
  
 
=== Errichten der Kompilierungsumbebung ===
 
=== Errichten der Kompilierungsumbebung ===
 
 
Wenn man schon ein OE-Image gebacken hat, heißt das Zauberwort '''"devshell"'''.
 
Wenn man schon ein OE-Image gebacken hat, heißt das Zauberwort '''"devshell"'''.
  
Zeile 201: Zeile 173:
  
 
Und führt dort folgende Befehle aus:
 
Und führt dort folgende Befehle aus:
source env.source
+
<syntaxhighlight>
 +
source env.source
 +
</syntaxhighlight>
  
 
Danach eben das "devshell" per bitbake ausführen:
 
Danach eben das "devshell" per bitbake ausführen:
bitbake devshell
+
<syntaxhighlight>
NOTE: Psyco JIT Compiler (http://psyco.sf.net) not available. Install it to increase performance.
+
bitbake devshell
NOTE: Using cache in '/media/sda8/Gemini/Entwicklung/openembedded/1.5/dm8000/cache/oe-cache.egle'
+
NOTE: Psyco JIT Compiler (http://psyco.sf.net) not available. Install it to increase performance.
NOTE: Handling BitBake files: / (4131/4131) [100 %]
+
NOTE: Using cache in '/media/sda8/Gemini/Entwicklung/openembedded/1.5/dm8000/cache/oe-cache.egle'
NOTE: Parsing finished. 3942 cached, 0 parsed, 161 skipped, 28 masked.
+
NOTE: Handling BitBake files: / (4131/4131) [100 %]
+
NOTE: Parsing finished. 3942 cached, 0 parsed, 161 skipped, 28 masked.
NOTE: build 200901021926: started
+
 
+
NOTE: build 200901021926: started
OE Build Configuration:
+
 
BB_VERSION    = "1.6.8"
+
OE Build Configuration:
OE_REVISION    = "<unknown>"
+
BB_VERSION    = "1.6.8"
TARGET_ARCH    = "mipsel"
+
OE_REVISION    = "<unknown>"
TARGET_OS      = "linux"
+
TARGET_ARCH    = "mipsel"
MACHINE        = "dm8000"
+
TARGET_OS      = "linux"
DISTRO        = "opendreambox"
+
MACHINE        = "dm8000"
DISTRO_VERSION = "1.5.0"
+
DISTRO        = "opendreambox"
TARGET_FPU    = "soft"
+
DISTRO_VERSION = "1.5.0"
+
TARGET_FPU    = "soft"
NOTE: package devshell-1.0: started
+
 
NOTE: package devshell-1.0-r1: task do_fetch: started
+
NOTE: package devshell-1.0: started
NOTE: package devshell-1.0-r1: task do_fetch: completed
+
NOTE: package devshell-1.0-r1: task do_fetch: started
NOTE: package devshell-1.0-r1: task do_unpack: started
+
NOTE: package devshell-1.0-r1: task do_fetch: completed
NOTE: Unpacking /media/sda8/../openembedded/1.5/openembedded/packages/addons/devshell.bb to /media/sda8/../openembedded/1.5/dm8000/build/tmp/work/devshell-1.0-r1/
+
NOTE: package devshell-1.0-r1: task do_unpack: started
NOTE: package devshell-1.0-r1: task do_unpack: completed
+
NOTE: Unpacking /media/sda8/../openembedded/1.5/openembedded/packages/addons/devshell.bb to /media/sda8/../openembedded/1.5/dm8000/build/tmp/work/devshell-1.0-r1/
NOTE: package devshell-1.0-r1: task do_patch: started
+
NOTE: package devshell-1.0-r1: task do_unpack: completed
NOTE: package devshell-1.0-r1: task do_patch: completed
+
NOTE: package devshell-1.0-r1: task do_patch: started
NOTE: package devshell-1.0-r1: task do_configure: started
+
NOTE: package devshell-1.0-r1: task do_patch: completed
NOTE: package devshell-1.0-r1: task do_configure: completed
+
NOTE: package devshell-1.0-r1: task do_configure: started
NOTE: package devshell-1.0-r1: task do_compile: started
+
NOTE: package devshell-1.0-r1: task do_configure: completed
NOTE: package devshell-1.0-r1: task do_compile: completed
+
NOTE: package devshell-1.0-r1: task do_compile: started
NOTE: package devshell-1.0-r1: task do_install: started
+
NOTE: package devshell-1.0-r1: task do_compile: completed
NOTE: package devshell-1.0-r1: task do_install: completed
+
NOTE: package devshell-1.0-r1: task do_install: started
NOTE: package devshell-1.0-r1: task do_package: started
+
NOTE: package devshell-1.0-r1: task do_install: completed
NOTE: package devshell-1.0-r1: task do_package: completed
+
NOTE: package devshell-1.0-r1: task do_package: started
NOTE: package devshell-1.0-r1: task do_populate_staging: started
+
NOTE: package devshell-1.0-r1: task do_package: completed
NOTE: package devshell-1.0-r1: task do_populate_staging: completed
+
NOTE: package devshell-1.0-r1: task do_populate_staging: started
NOTE: package devshell-1.0-r1: task do_build: started
+
NOTE: package devshell-1.0-r1: task do_populate_staging: completed
NOTE: package devshell-1.0-r1: task do_build: completed
+
NOTE: package devshell-1.0-r1: task do_build: started
NOTE: package devshell-1.0: completed
+
NOTE: package devshell-1.0-r1: task do_build: completed
NOTE: build 200901021926: completed
+
NOTE: package devshell-1.0: completed
Build statistics:
+
NOTE: build 200901021926: completed
  Attempted builds: 1
+
Build statistics:
 +
  Attempted builds: 1
 +
</syntaxhighlight>
  
 
So damit hat man nun die '''build environment''' geschaffen um mit fremden oder  
 
So damit hat man nun die '''build environment''' geschaffen um mit fremden oder  
 
eigene geschriebene Sourcen kompilieren zu können, zu finden dann in '''/build/tmp/deploy/addons'''
 
eigene geschriebene Sourcen kompilieren zu können, zu finden dann in '''/build/tmp/deploy/addons'''
 
  
 
Im Verzeichnis '''/build/tmp/deploy/addons''' findet man nun die '''mipsel-linux-opendreambox-dm8000-devshel'''l
 
Im Verzeichnis '''/build/tmp/deploy/addons''' findet man nun die '''mipsel-linux-opendreambox-dm8000-devshel'''l
 
Führt man dies nun in der Konsole (Terminal) aus sieht man vorne nun folgendes stehen:
 
Führt man dies nun in der Konsole (Terminal) aus sieht man vorne nun folgendes stehen:
[OE::mipsel-linux-opendreambox-dm8000]:~$  
+
<syntaxhighlight>
 
+
[OE::mipsel-linux-opendreambox-dm8000]:~$  
 +
</syntaxhighlight>
  
 
So nun wären wir in dieser Umgebung bereit zum Kompilieren für die Dreambox ;)
 
So nun wären wir in dieser Umgebung bereit zum Kompilieren für die Dreambox ;)
 
 
Zurück zum [[#top | Inhaltsverzeichnis:]]
 
  
 
=== Kompilieren mit eigenem Programmcode ===
 
=== Kompilieren mit eigenem Programmcode ===
 
 
Als kleines Beispiel für ein eigenes erstes Programm für die Dreambox will ich
 
Als kleines Beispiel für ein eigenes erstes Programm für die Dreambox will ich
 
mal das "wohl bekannteste Programm der Welt als Test misbrauchen.
 
mal das "wohl bekannteste Programm der Welt als Test misbrauchen.
Zeile 268: Zeile 240:
  
 
Wir erstellen uns erstmal noch ein Test-Verzeichnis in '''/build/tmp/deploy/addons''' Namens test.
 
Wir erstellen uns erstmal noch ein Test-Verzeichnis in '''/build/tmp/deploy/addons''' Namens test.
 
+
<syntaxhighlight>
[OE::mipsel-linux-opendreambox-dm8000]:/..../build/tmp/deploy/addons$ mkdir test
+
[OE::mipsel-linux-opendreambox-dm8000]:/..../build/tmp/deploy/addons$ mkdir test
 +
</syntaxhighlight>
  
 
Wechseln nun ins neu erstellte Verzeichnis:
 
Wechseln nun ins neu erstellte Verzeichnis:
[OE::mipsel-linux-opendreambox-dm8000]:/..../build/tmp/deploy/addons$ cd test
+
<syntaxhighlight>
[OE::mipsel-linux-opendreambox-dm8000]:/..../build/tmp/deploy/addons/test$[/code]
+
[OE::mipsel-linux-opendreambox-dm8000]:/..../build/tmp/deploy/addons$ cd test
 
+
[OE::mipsel-linux-opendreambox-dm8000]:/..../build/tmp/deploy/addons/test$[/code]
 +
</syntaxhighlight>
  
 
Dann nehmen wir uns einen guten Editor und erstellen unser erstes eigenes C++ Programm...
 
Dann nehmen wir uns einen guten Editor und erstellen unser erstes eigenes C++ Programm...
#include <stdio.h>
+
<syntaxhighlight>
 +
#include <stdio.h>
  
int main(int argc, char *argv[])
+
int main(int argc, char *argv[])
{
+
{
    printf("Welcome on your Dreambox 8000\n");
+
  printf("Welcome on your Dreambox 8000\n");
    return 0;
+
  return 0;
}
+
}
 +
</syntaxhighlight>
  
 
Und speichern dieses mit dem Namen "Hello_Dreambox.c" im Testverzeichis ab.
 
Und speichern dieses mit dem Namen "Hello_Dreambox.c" im Testverzeichis ab.
Zeile 289: Zeile 265:
  
 
Im Terminal versuchen wir nun unser Programm zu kompilieren:
 
Im Terminal versuchen wir nun unser Programm zu kompilieren:
mipsel-linux-gcc Hello_Dreambox.c -o hello-dreambox
+
<syntaxhighlight>
 +
mipsel-linux-gcc Hello_Dreambox.c -o hello-dreambox
 +
</syntaxhighlight>
  
 
Da ich im OE der Dreambox 8000 bin und diese ja den "mipsel" als CPU nutzt kompilieren wir das
 
Da ich im OE der Dreambox 8000 bin und diese ja den "mipsel" als CPU nutzt kompilieren wir das
Zeile 302: Zeile 280:
 
Dreambox ins Tempverzeichnis kopieren und loggen uns in die Dreambox ins Tempverezeichnis ein
 
Dreambox ins Tempverzeichnis kopieren und loggen uns in die Dreambox ins Tempverezeichnis ein
 
und versuchen unser erstes erstelltes Programm auszuführen ;)
 
und versuchen unser erstes erstelltes Programm auszuführen ;)
 
+
<syntaxhighlight>
root@dm8000:~# cd /tmp
+
root@dm8000:~# cd /tmp
root@dm8000:/tmp# ./hello-dreambox
+
root@dm8000:/tmp# ./hello-dreambox
Welcome on your Dreambox 8000
+
Welcome on your Dreambox 8000
root@dm8000:/tmp#
+
root@dm8000:/tmp#
 
+
</syntaxhighlight>
  
 
Voila unser erstes selbst geschriebenes und Kompiliertes Programm für die Dreambox....
 
Voila unser erstes selbst geschriebenes und Kompiliertes Programm für die Dreambox....
 
 
Zurück zum [[#top | Inhaltsverzeichnis:]]
 
 
  
 
=== Kompilieren aus Tarballs (fremden, eigene oder interne Quellen) ===
 
=== Kompilieren aus Tarballs (fremden, eigene oder interne Quellen) ===
 
 
Hierbei gibt es auch mehrere Möglichkeiten wie man dies Bewerkstelligen kann.
 
Hierbei gibt es auch mehrere Möglichkeiten wie man dies Bewerkstelligen kann.
 
 
Zurück zum [[#top | Inhaltsverzeichnis:]]
 
 
  
 
==== über OE-RUNCONF ====
 
==== über OE-RUNCONF ====
 
 
Das nächste was wir nun mal versuchen können wäre ein Tarball zu entpacken und
 
Das nächste was wir nun mal versuchen können wäre ein Tarball zu entpacken und
 
diesen zu kompilieren, hier nehme ich mal als Beispiel das '''tar-1.21-20081229.tar.gz'''
 
diesen zu kompilieren, hier nehme ich mal als Beispiel das '''tar-1.21-20081229.tar.gz'''
Zeile 331: Zeile 299:
 
Nun entpacken wir den Tarball wieder in unser "addons" Verzeichnis
 
Nun entpacken wir den Tarball wieder in unser "addons" Verzeichnis
 
und wechlsen dann ins entpackte Tarverzeichnis.
 
und wechlsen dann ins entpackte Tarverzeichnis.
 
+
<syntaxhighlight>
[OE::mipsel-linux-opendreambox-dm8000]:/.../deploy/addons$ cd tar-1.21-20081229/
+
[OE::mipsel-linux-opendreambox-dm8000]:/.../deploy/addons$ cd tar-1.21-20081229/
 
+
</syntaxhighlight>
 
Tarballs werden normalerweise ja im bekannten dreisatz kompiliert
 
Tarballs werden normalerweise ja im bekannten dreisatz kompiliert
 
+
<syntaxhighlight>
./configure
+
./configure
make
+
make
make install
+
make install
 +
</syntaxhighlight>
  
 
Da wir aber in einer OE-Umgebung sind können wir das aber so nicht anwenden.
 
Da wir aber in einer OE-Umgebung sind können wir das aber so nicht anwenden.
  
 
Hier geben wir nun folgendes ein:
 
Hier geben wir nun folgendes ein:
oe_runconf
+
<syntaxhighlight>
 +
oe_runconf
 +
</syntaxhighlight>
  
 
Das ganze sollte hierbei Fehlerfrei durchlaufen und so ungefähr aussehen:
 
Das ganze sollte hierbei Fehlerfrei durchlaufen und so ungefähr aussehen:
config.status: executing depfiles commands
+
<syntaxhighlight>
config.status: executing po-directories commands
+
config.status: executing depfiles commands
config.status: creating po/POTFILES
+
config.status: executing po-directories commands
config.status: creating po/Makefile
+
config.status: creating po/POTFILES
config.status: executing tests/atconfig commands
+
config.status: creating po/Makefile
[OE::mipsel-linux-opendreambox-dm8000]:/.../1.5/dm8000/build/tmp/deploy/addons/tar-1.21-20081229$[/code]
+
config.status: executing tests/atconfig commands
 +
[OE::mipsel-linux-opendreambox-dm8000]:/.../1.5/dm8000/build/tmp/deploy/addons/tar-1.21-20081229$[/code]
 +
</syntaxhighlight>
  
 
nun können wir da das Makefile geschrieben wurde es auch kompilieren.
 
nun können wir da das Makefile geschrieben wurde es auch kompilieren.
make
+
<syntaxhighlight>
 +
make
 +
</syntaxhighlight>
  
 
auch dies ist wieder sauber durchgelaufen (zum Glück):
 
auch dies ist wieder sauber durchgelaufen (zum Glück):
make[2]: Verlasse Verzeichnis '/media/sda8/oe-build/openembedded/1.5/dm8000/build/tmp/deploy/addons/tar-1.21-20081229'
+
<syntaxhighlight>
make[1]: Verlasse Verzeichnis '/media/sda8/oe-build/openembedded/1.5/dm8000/build/tmp/deploy/addons/tar-1.21-20081229'
+
make[2]: Verlasse Verzeichnis '/media/sda8/oe-build/openembedded/1.5/dm8000/build/tmp/deploy/addons/tar-1.21-20081229'
[OE::mipsel-linux-opendreambox-dm8000]:/media/sda8/oe-build/openembedded/1.5/dm8000/build/tmp/deploy/addons/tar-1.21-20081229$
+
make[1]: Verlasse Verzeichnis '/media/sda8/oe-build/openembedded/1.5/dm8000/build/tmp/deploy/addons/tar-1.21-20081229'
 
+
[OE::mipsel-linux-opendreambox-dm8000]:/media/sda8/oe-build/openembedded/1.5/dm8000/build/tmp/deploy/addons/tar-1.21-20081229$
 +
</syntaxhighlight>
  
 
Im Unterverzeichnis '''src''' befindet sich hier nun auch das Fertige Progamm '''tar''' als Binary
 
Im Unterverzeichnis '''src''' befindet sich hier nun auch das Fertige Progamm '''tar''' als Binary
 
und könnte nun auch in die Dreambox kopiert und benutzt werden.
 
und könnte nun auch in die Dreambox kopiert und benutzt werden.
 
 
Zurück zum [[#top | Inhaltsverzeichnis:]]
 
 
  
 
==== über autotools_do_configure ====
 
==== über autotools_do_configure ====
 
 
 
Kann man z.B. schnell testen mit den cvs sourcen des grabs ...
 
Kann man z.B. schnell testen mit den cvs sourcen des grabs ...
  
 
man legt ein Verzeichnis an und holt sich die sourcen via cvs:
 
man legt ein Verzeichnis an und holt sich die sourcen via cvs:
 
+
<syntaxhighlight>
[OE::mipsel-linux-opendreambox-dm8000]:~$ mkdir grabcvs
+
[OE::mipsel-linux-opendreambox-dm8000]:~$ mkdir grabcvs
[OE::mipsel-linux-opendreambox-dm8000]:~$ cd grabcvs
+
[OE::mipsel-linux-opendreambox-dm8000]:~$ cd grabcvs
[OE::mipsel-linux-opendreambox-dm8000]:~/grabcvs$ cvs -d :pserver:anonymous@cvs.schwerkraft.elitedvb.net:/cvsroot/aio-grab checkout aio-grab
+
[OE::mipsel-linux-opendreambox-dm8000]:~/grabcvs$ cvs -d :pserver:anonymous@cvs.schwerkraft.elitedvb.net:/cvsroot/aio-grab checkout aio-grab
cvs checkout: CVS password file /home/seddi/.cvspass does not exist - creating a new file
+
cvs checkout: CVS password file /home/seddi/.cvspass does not exist - creating a new file
cvs checkout: Updating aio-grab
+
cvs checkout: Updating aio-grab
U aio-grab/.cvsignore
+
U aio-grab/.cvsignore
U aio-grab/LICENSE
+
U aio-grab/LICENSE
U aio-grab/Makefile.am
+
U aio-grab/Makefile.am
U aio-grab/README
+
U aio-grab/README
U aio-grab/configure.ac
+
U aio-grab/configure.ac
U aio-grab/main.c
+
U aio-grab/main.c
[OE::mipsel-linux-opendreambox-dm8000]:~/grabcvs$  
+
[OE::mipsel-linux-opendreambox-dm8000]:~/grabcvs$
 
+
</syntaxhighlight>
  
 
Dann könnt ihr in das heruntergeladene Verzeichnis wechseln ein autotools_do_configure (erzeugt aus der configure.ac das configure script und führt es aus) machen und danach das Ganze mit make kompilieren:
 
Dann könnt ihr in das heruntergeladene Verzeichnis wechseln ein autotools_do_configure (erzeugt aus der configure.ac das configure script und führt es aus) machen und danach das Ganze mit make kompilieren:
 +
<syntaxhighlight>
 +
[OE::mipsel-linux-opendreambox-dm8000]:~/grabcvs$ cd aio-grab/
 +
[OE::mipsel-linux-opendreambox-dm8000]:~/grabcvs/aio-grab$ autotools_do_configure
 +
automake (GNU automake) 1.9.3
 +
Written by Tom Tromey <tromey@redhat.com>.
  
  [OE::mipsel-linux-opendreambox-dm8000]:~/grabcvs$ cd aio-grab/
+
Copyright 2004 Free Software Foundation, Inc.
[OE::mipsel-linux-opendreambox-dm8000]:~/grabcvs/aio-grab$ autotools_do_configure
+
This is free software; see the source for copying conditions. There is NO
automake (GNU automake) 1.9.3
+
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
Written by Tom Tromey <tromey@redhat.com>.
+
AUTOV is 1.9
 +
...
 +
...
 +
...
 +
configure: creating ./config.status
 +
config.status: creating Makefile
 +
config.status: executing depfiles commands
 +
[OE::mipsel-linux-opendreambox-dm8000]:~/grabcvs/aio-grab$  
  
Copyright 2004 Free Software Foundation, Inc.
 
This is free software; see the source for copying conditions.  There is NO
 
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
 
AUTOV is 1.9
 
...
 
...
 
...
 
configure: creating ./config.status
 
config.status: creating Makefile
 
config.status: executing depfiles commands
 
[OE::mipsel-linux-opendreambox-dm8000]:~/grabcvs/aio-grab$
 
 
 
[OE::mipsel-linux-opendreambox-dm8000]:~/grabcvs/aio-grab$ make
 
NOTE: make
 
if ccache mipsel-linux-gcc -DPACKAGE_NAME=\"\" -DPACKAGE_TARNAME=\"\" -DPACKAGE_VERSION=\"\" -DPACKAGE_STRING=\"\" -DPACKAGE_BUGREPORT=\"\" -DPACKAGE=\"grab\" -DVERSION=\"0.8\"  -I. -I.
 
    -I/home/seddi/openembedded/dm8000/build/tmp/staging/mipsel-linux/include  -I/home/seddi/openembedded/dm8000/build/tmp/staging/mipsel-linux/include
 
  -fexpensive-optimizations -fomit-frame-pointer -frename-registers -O2 -MT main.o -MD -MP -MF ".deps/main.Tpo" -c -o main.o main.c; \
 
        then mv -f ".deps/main.Tpo" ".deps/main.Po"; else rm -f ".deps/main.Tpo"; exit 1; fi
 
ccache mipsel-linux-gcc  -I/home/seddi/openembedded/dm8000/build/tmp/staging/mipsel-linux/include -fexpensive-optimizations -fomit-frame-pointer -frename- egisters -O2
 
  -L/home/seddi/openembedded/dm8000/build/tmp/staging/mipsel- linux/lib -Wl,-rpath-link,/home/seddi/openembedded/dm8000/build/tmp/staging/mipsel-linux/lib -Wl,-O1 -o grab  main.o -ljpeg -lpng -lz
 
[OE::mipsel-linux-opendreambox-dm8000]:~/grabcvs/aio-grab$
 
  
 +
[OE::mipsel-linux-opendreambox-dm8000]:~/grabcvs/aio-grab$ make
 +
NOTE: make
 +
if ccache mipsel-linux-gcc -DPACKAGE_NAME=\"\" -DPACKAGE_TARNAME=\"\" -DPACKAGE_VERSION=\"\" -DPACKAGE_STRING=\"\" -DPACKAGE_BUGREPORT=\"\" -DPACKAGE=\"grab\" -DVERSION=\"0.8\"  -I. -I.
 +
  -I/home/seddi/openembedded/dm8000/build/tmp/staging/mipsel-linux/include  -I/home/seddi/openembedded/dm8000/build/tmp/staging/mipsel-linux/include
 +
-fexpensive-optimizations -fomit-frame-pointer -frename-registers -O2 -MT main.o -MD -MP -MF ".deps/main.Tpo" -c -o main.o main.c; \
 +
        then mv -f ".deps/main.Tpo" ".deps/main.Po"; else rm -f ".deps/main.Tpo"; exit 1; fi
 +
ccache mipsel-linux-gcc  -I/home/seddi/openembedded/dm8000/build/tmp/staging/mipsel-linux/include -fexpensive-optimizations -fomit-frame-pointer -frename- egisters -O2
 +
-L/home/seddi/openembedded/dm8000/build/tmp/staging/mipsel- linux/lib -Wl,-rpath-link,/home/seddi/openembedded/dm8000/build/tmp/staging/mipsel-linux/lib -Wl,-O1 -o grab  main.o -ljpeg -lpng -lz
 +
[OE::mipsel-linux-opendreambox-dm8000]:~/grabcvs/aio-grab$
 +
</syntaxhighlight>
  
 
Schwupp und schon habt ihr das fertige grab das ihr auf die Box kopieren könnt (chmod nicht vergessen) und benutzen :)
 
Schwupp und schon habt ihr das fertige grab das ihr auf die Box kopieren könnt (chmod nicht vergessen) und benutzen :)
 
+
<syntaxhighlight>
[OE::mipsel-linux-opendreambox-dm8000]:~/grabcvs/aio-grab$ ls -la grab
+
[OE::mipsel-linux-opendreambox-dm8000]:~/grabcvs/aio-grab$ ls -la grab
-rwxr-xr-x 1 seddi seddi 106738 2009-01-02 19:46 grab
+
-rwxr-xr-x 1 seddi seddi 106738 2009-01-02 19:46 grab
 
+
</syntaxhighlight>
 
 
Zurück zum [[#top | Inhaltsverzeichnis:]]
 
 
 
  
 
==== über die .bb-Datei (Recipe) ====
 
==== über die .bb-Datei (Recipe) ====
 
 
"Recipe" ist nur der coole Ausdruck für "Anleitung für bitbake damit es weiss wie das Paket gebaut werden muss"
 
"Recipe" ist nur der coole Ausdruck für "Anleitung für bitbake damit es weiss wie das Paket gebaut werden muss"
 
  
 
'''TEXT fehlt noch muss erst genauerer Recherchiert werden von mir...'''
 
'''TEXT fehlt noch muss erst genauerer Recherchiert werden von mir...'''
 
 
 
Zurück zum [[#top | Inhaltsverzeichnis:]]
 
  
 
== Externe Links ==
 
== Externe Links ==
 
 
[http://www.i-have-a-dreambox.com/wbb2/thread.php?threadid=93129 Was brauche ich um eigene Programme auf der Dreambox zu kompilieren?]
 
[http://www.i-have-a-dreambox.com/wbb2/thread.php?threadid=93129 Was brauche ich um eigene Programme auf der Dreambox zu kompilieren?]
  
  
Zurück zum [[#top | Inhaltsverzeichnis:]]
+
[[Kategorie:Anleitungen]]
 
+
[[Kategorie:Software]]
 
 
'''Zurück zur Übersicht:[[Gemini-Wiki:Portal]] oder [[Hauptseite]]'''
 

Aktuelle Version vom 9. November 2013, 17:43 Uhr

Hier will ich mal versuchen auf zu zeigen wie man aus dem CVS / OE ein Image unter OE 1.6 erstellen kann. Und anschließend ein "Programm für die Dreambox selber erstellen bzw. kompilieren kann...

Hier schreibe ich mal das neu auf so das es evlt. Jeder versteht

Erstellen eines eigenen CVS/OE images

1. ein Linuxsystem installieren bzw. einrichten (z.B.(K)Ubuntu)

2. adenin "install.sh" Script verwenden, ist hier zu finden: CVS- sowie OE-Installation und Imagebau für Anfänger (und EgLe ;) )

3. Images erstellen hier gibt es ja mehrere Möglichkeiten.

  • ein CVS-Image für die älteren Dreamboxen
  • dm500
  • dm56x0 (dm5600/dm5620)
  • DM7000
  • ein OE 1.5 oder ein OE 1.6 Image für die neueren Boxen
  • dm500plus
  • dm600pvr
  • dm7020
  • dm7025
  • dm500HD
  • dm800
  • dm8000
Ambox notice.png Hiermit weise ich explizit darauf hin, dass OpenDreambox 1.6 z.Zt. NICHT für Endnutzer und Unerfahrene Imagebauer geeignet ist - sonst kommt noch jemand auf die Idee, weil OE 1.5 von der Version kleiner als OE 1.6 ist, es wohl besser wäre, OE 1.6 Image zu bauen. Im unveränderten Zustand bootet das 1.6 Image auch weiterhin nicht durch.

Wer beim Kompilieren eines Images auf Probleme stößt, der sollte sich im Bereich

Developer Bereich CVS/Openembedded

etwas genauer umsehen, je nachdem was für ein Image er eben ausprobiert.

  • Ist es ein Enigma oder Enigma2 Image?
  • Ist es ein OE 1.5 oder ein OE 1.6 Image?

Wer z.B. Probleme haben sollte mit einem OE 1.5 Image der DB7025, kann sich mal die Fehler ansehen im Thread "OE-git 1.5 DM7025" gleiches gibt es auch für "OE-git 1.6 DM7025".

Oder wenn er in den Threads keine Lösung für sein Problem findet, eben ein neuen Thema eröffnen. Um aber die Übersicht zu wahren, wäre es nett, wenn man die Betreffzeile genauso "treffend" formulieren würde.

Weiterhin sollte man ggfs auch die Board-Suche verwenden.

Bricht z.B. das Kompilieren mit folgender Meldung ab:

NOTE: package dreambox-image-1.0-r0: task do_rootfs: started
ERROR: function do_rootfs failed
ERROR: see log in /media/sda8/Dreambox-Build/openembedded/1.5/dm7025/build/tmp/work/dreambox-image-1.0-r0/temp/log.do_rootfs.6697
NOTE: Task failed: /media/sda8/Dreambox-Build/openembedded/1.5/dm7025/build/tmp/work/dreambox-image-1.0-r0/temp/log.do_rootfs.6697
NOTE: package dreambox-image-1.0-r0: task do_rootfs: failed
ERROR: TaskFailed event exception, aborting
NOTE: package dreambox-image-1.0: failed
ERROR: Build of dreambox-image failed
make: *** [image] Fehler 1

Kann man in der Bordsuche z.B. recht schön nach ERROR: function do_rootfs failed suchen lassen.

Wenn es also nun zu Abbrüchen kommt, sollte man versuchen die Fehlermeldung zu entschlüsseln und ggfs ein fehlendes Paket nachinstallieren, was man noch benötigt oder im CVS Bereich dann ein Posting eröffnen ;)

Naja, einige Fehler möchte ich dokumentieren ;)

ERROR: gstreamer-0.10.21: http://gstreamer.freedesktop.org/src/gstreamer/gstreamer-0.10.21.tar.bz2 has no entry in conf/checksums.ini, not checking URI
ERROR: Error in executing:
ERROR: Exception:<type 'exceptions.SystemExit'> Message:1
ERROR: Printing the environment of the function
ERROR: Error in executing:
ERROR: Exception:<type 'exceptions.SystemExit'> Message:1
ERROR: Printing the environment of the function
ERROR: Build of /home/egle/db8000-image/dm8000/openembedded/packages/gstreamer/gstreamer_0.10.21.bb do_fetch failed
ERROR: Task 1400 (/home/egle/db8000-image/dm8000/openembedded/packages/gstreamer/gstreamer_0.10.21.bb, do_fetch) failed
NOTE: Tasks Summary: Attempted 286 tasks of which 0 didn't need to be rerun and 1 failed.
ERROR: '/home/egle/db8000-image/dm8000/openembedded/packages/gstreamer/gstreamer_0.10.21.bb' failed
make: *** [image] Fehler 1

Wenn Ihr so was bekommt, wo Ihr seht, dass der Download fehlgeschlagen ist. Und Ihr aber seht, dass dies in den Sourcen alles aber runter geladen wurde.

Könnte es euch helfen, den checksum-test zu umgehen...

rm openembedded/conf/checksums.ini

Oder wie ich es einfach mit dem Dateimanager gelöscht ;(

Dann geht das Kompilieren weiter, aber es erscheint solch eine Meldung im Fenster:

NOTE: No conf/checksums.ini found, not checking checksums

Eine Bessere Lösung um den Checksum-Error loszuwerden, wäre auch (erspart vor allem Ärger bei einem späteren pull):

echo 'OE_ALLOW_INSECURE_DOWNLOADS = "1"' >> $MACHINE/build/conf/local.conf

Sollte das ganze mal so abbrechen (connetction time out)

Resolving core.fluendo.com... 195.10.6.237
Connecting to core.fluendo.com|195.10.6.237|:80... failed: Connection timed out.
Retrying.
 
--18:58:37--  http://core.fluendo.com/gstreamer/src/gst-fluendo-mpegdemux/gst-fluendo-mpegdemux-0.10.15.tar.gz
 (try: 2) => `/home/egle/db8000-image/sources/gst-fluendo-mpegdemux-0.10.15.tar.gz'
Connecting to core.fluendo.com|195.10.6.237|:80... failed: Connection timed out.
Retrying.
 
--19:01:48--  http://core.fluendo.com/gstreamer/src/gst-fluendo-mpegdemux/gst-fluendo-mpegdemux-0.10.15.tar.gz
 (try: 3) => `/home/egle/db8000-image/sources/gst-fluendo-mpegdemux-0.10.15.tar.gz'
Connecting to core.fluendo.com|195.10.6.237|:80...

Und Ihr die angegebe Domain selbst mit dem Browser nicht erreichen könnt, ist der entsprechende Server wohl wirklich zur Zeit nicht erreichbar.

Hier müsst ihr euch eben gedulden und das ganze mal einen Tag später wieder probieren oder einen Workaround zur Hilfe nehmen ;)

Sucht Euch das entsprechende Tarball von einer anderen Quelle und kopiert es dann in den Ordner, in dem die Sourcen abgelegt werden. Hier im Beispiel dann eben "/openembedded/sources". Danach kann es weitergehen....

Einige Stunden an Zeit sollte man sich aber schon einplanen ;)

Image erstellt, wie dann aktualisieren?

Hierzu habe ich auch einen Thread im IHAD eröffnet, der Antworten bringt ;)

Image erstellt, wie dann aktualisieren?

openembedded reparieren

Sollte es mal vorkommen, dass man sich das openembedded zerschossen hat oder einige der .bb-files gelöscht oder verhunzt hat und weiß nicht mehr, wie man das wieder reparieren kann/soll, gibt es natürlich auch die Möglichkeit, sein openembedded wieder reparieren zu lassen.

Gehe in das Verzeichnis openembedded und führe dort folgende Befehle aus:

git checkout -f
git pull

So kann man auch das System reparieren.
Danach muss man natürlich eventuelle Änderungen, die man an den *.bb's gemacht hatte, wieder erneut eintragen (z.B. von 2.5 auf 2.6).

Bitbake - Befehle Manuell absetzen

  • ins build-Verzeichnis des entsprechenden Images wechseln.
bitbake -cclean dreambox-image
rm -rf tmp/deploy/images/*
bitbake dreambox-image

Beschleunigung der Image-Erstellung durch Doppelkern

Ob dies Sinnvoll ist oder nicht?
Ob es mehr Probleme als Vorteile mit sich bringt?
Will ich hier nicht erläutern, dazu ist das Forum gut..

Aber zu diesem Thema gibt es auch einen eigenen Thread im IHAD-Forum:
Beschleunigung der Image-Erstellung durch Doppelkern

Programme für die Dreambox Kompilieren

Hier gibt es natürlich wie Überall auch immer mehrere Varianten und Möglichkeiten.

Einige will ich hier incl. nachvollziehbaren Beispielen aufzeigen.

Errichten der Kompilierungsumbebung

Wenn man schon ein OE-Image gebacken hat, heißt das Zauberwort "devshell".

Also man wechselt ins Built-Verzeichnis des entsprechenden Images, hier mal z.B.: openembedded/1.5/dm8000/build

Und führt dort folgende Befehle aus:

source env.source

Danach eben das "devshell" per bitbake ausführen:

bitbake devshell
NOTE: Psyco JIT Compiler (http://psyco.sf.net) not available. Install it to increase performance.
NOTE: Using cache in '/media/sda8/Gemini/Entwicklung/openembedded/1.5/dm8000/cache/oe-cache.egle'
NOTE: Handling BitBake files: / (4131/4131) [100 %]
NOTE: Parsing finished. 3942 cached, 0 parsed, 161 skipped, 28 masked.
 
NOTE: build 200901021926: started
 
OE Build Configuration:
BB_VERSION     = "1.6.8"
OE_REVISION    = "<unknown>"
TARGET_ARCH    = "mipsel"
TARGET_OS      = "linux"
MACHINE        = "dm8000"
DISTRO         = "opendreambox"
DISTRO_VERSION = "1.5.0"
TARGET_FPU     = "soft"
 
NOTE: package devshell-1.0: started
NOTE: package devshell-1.0-r1: task do_fetch: started
NOTE: package devshell-1.0-r1: task do_fetch: completed
NOTE: package devshell-1.0-r1: task do_unpack: started
NOTE: Unpacking /media/sda8/../openembedded/1.5/openembedded/packages/addons/devshell.bb to /media/sda8/../openembedded/1.5/dm8000/build/tmp/work/devshell-1.0-r1/
NOTE: package devshell-1.0-r1: task do_unpack: completed
NOTE: package devshell-1.0-r1: task do_patch: started
NOTE: package devshell-1.0-r1: task do_patch: completed
NOTE: package devshell-1.0-r1: task do_configure: started
NOTE: package devshell-1.0-r1: task do_configure: completed
NOTE: package devshell-1.0-r1: task do_compile: started
NOTE: package devshell-1.0-r1: task do_compile: completed
NOTE: package devshell-1.0-r1: task do_install: started
NOTE: package devshell-1.0-r1: task do_install: completed
NOTE: package devshell-1.0-r1: task do_package: started
NOTE: package devshell-1.0-r1: task do_package: completed
NOTE: package devshell-1.0-r1: task do_populate_staging: started
NOTE: package devshell-1.0-r1: task do_populate_staging: completed
NOTE: package devshell-1.0-r1: task do_build: started
NOTE: package devshell-1.0-r1: task do_build: completed
NOTE: package devshell-1.0: completed
NOTE: build 200901021926: completed
Build statistics:
  Attempted builds: 1

So damit hat man nun die build environment geschaffen um mit fremden oder eigene geschriebene Sourcen kompilieren zu können, zu finden dann in /build/tmp/deploy/addons

Im Verzeichnis /build/tmp/deploy/addons findet man nun die mipsel-linux-opendreambox-dm8000-devshell Führt man dies nun in der Konsole (Terminal) aus sieht man vorne nun folgendes stehen:

[OE::mipsel-linux-opendreambox-dm8000]:~$

So nun wären wir in dieser Umgebung bereit zum Kompilieren für die Dreambox ;)

Kompilieren mit eigenem Programmcode

Als kleines Beispiel für ein eigenes erstes Programm für die Dreambox will ich mal das "wohl bekannteste Programm der Welt als Test misbrauchen. Ich rede hier von dem "Hello World", was ich aber natürlich abgewandelt habe..

Wir erstellen uns erstmal noch ein Test-Verzeichnis in /build/tmp/deploy/addons Namens test.

[OE::mipsel-linux-opendreambox-dm8000]:/..../build/tmp/deploy/addons$ mkdir test

Wechseln nun ins neu erstellte Verzeichnis:

[OE::mipsel-linux-opendreambox-dm8000]:/..../build/tmp/deploy/addons$ cd test
[OE::mipsel-linux-opendreambox-dm8000]:/..../build/tmp/deploy/addons/test$[/code]

Dann nehmen wir uns einen guten Editor und erstellen unser erstes eigenes C++ Programm...

#include <stdio.h>
 
int main(int argc, char *argv[])
{
   printf("Welcome on your Dreambox 8000\n");
   return 0;
}

Und speichern dieses mit dem Namen "Hello_Dreambox.c" im Testverzeichis ab. Das .c am Ende zeichnet diese Textdatei als C-code aus ;)

Im Terminal versuchen wir nun unser Programm zu kompilieren:

mipsel-linux-gcc Hello_Dreambox.c -o hello-dreambox

Da ich im OE der Dreambox 8000 bin und diese ja den "mipsel" als CPU nutzt kompilieren wir das ganze als "mipsel-linux-gcc", der fertige Programmname der "bindatei" lautet dann hello-dreambox

nun finden wir in unserem Testverzeichnis folgende Daten:

  • Hello_Dreambox.c
  • hello-dreambox (das fertige Programm als Bindatei)

Zum testen ob es funktioniert, können wir unser erstes Programm auf die Dreambox ins Tempverzeichnis kopieren und loggen uns in die Dreambox ins Tempverezeichnis ein und versuchen unser erstes erstelltes Programm auszuführen ;)

root@dm8000:~# cd /tmp
root@dm8000:/tmp# ./hello-dreambox
Welcome on your Dreambox 8000
root@dm8000:/tmp#

Voila unser erstes selbst geschriebenes und Kompiliertes Programm für die Dreambox....

Kompilieren aus Tarballs (fremden, eigene oder interne Quellen)

Hierbei gibt es auch mehrere Möglichkeiten wie man dies Bewerkstelligen kann.

über OE-RUNCONF

Das nächste was wir nun mal versuchen können wäre ein Tarball zu entpacken und diesen zu kompilieren, hier nehme ich mal als Beispiel das tar-1.21-20081229.tar.gz Dies kann an hier downloaden: ftp://download.gnu.org.ua/pub/alpha/tar/

Nun entpacken wir den Tarball wieder in unser "addons" Verzeichnis und wechlsen dann ins entpackte Tarverzeichnis.

[OE::mipsel-linux-opendreambox-dm8000]:/.../deploy/addons$ cd tar-1.21-20081229/

Tarballs werden normalerweise ja im bekannten dreisatz kompiliert

./configure
make
make install

Da wir aber in einer OE-Umgebung sind können wir das aber so nicht anwenden.

Hier geben wir nun folgendes ein:

oe_runconf

Das ganze sollte hierbei Fehlerfrei durchlaufen und so ungefähr aussehen:

config.status: executing depfiles commands
config.status: executing po-directories commands
config.status: creating po/POTFILES
config.status: creating po/Makefile
config.status: executing tests/atconfig commands
[OE::mipsel-linux-opendreambox-dm8000]:/.../1.5/dm8000/build/tmp/deploy/addons/tar-1.21-20081229$[/code]

nun können wir da das Makefile geschrieben wurde es auch kompilieren.

make

auch dies ist wieder sauber durchgelaufen (zum Glück):

make[2]: Verlasse Verzeichnis '/media/sda8/oe-build/openembedded/1.5/dm8000/build/tmp/deploy/addons/tar-1.21-20081229'
make[1]: Verlasse Verzeichnis '/media/sda8/oe-build/openembedded/1.5/dm8000/build/tmp/deploy/addons/tar-1.21-20081229'
[OE::mipsel-linux-opendreambox-dm8000]:/media/sda8/oe-build/openembedded/1.5/dm8000/build/tmp/deploy/addons/tar-1.21-20081229$

Im Unterverzeichnis src befindet sich hier nun auch das Fertige Progamm tar als Binary und könnte nun auch in die Dreambox kopiert und benutzt werden.

über autotools_do_configure

Kann man z.B. schnell testen mit den cvs sourcen des grabs ...

man legt ein Verzeichnis an und holt sich die sourcen via cvs:

[OE::mipsel-linux-opendreambox-dm8000]:~$ mkdir grabcvs
[OE::mipsel-linux-opendreambox-dm8000]:~$ cd grabcvs
[OE::mipsel-linux-opendreambox-dm8000]:~/grabcvs$ cvs -d :pserver:anonymous@cvs.schwerkraft.elitedvb.net:/cvsroot/aio-grab checkout aio-grab
cvs checkout: CVS password file /home/seddi/.cvspass does not exist - creating a new file
cvs checkout: Updating aio-grab
U aio-grab/.cvsignore
U aio-grab/LICENSE
U aio-grab/Makefile.am
U aio-grab/README
U aio-grab/configure.ac
U aio-grab/main.c
[OE::mipsel-linux-opendreambox-dm8000]:~/grabcvs$

Dann könnt ihr in das heruntergeladene Verzeichnis wechseln ein autotools_do_configure (erzeugt aus der configure.ac das configure script und führt es aus) machen und danach das Ganze mit make kompilieren:

[OE::mipsel-linux-opendreambox-dm8000]:~/grabcvs$ cd aio-grab/
[OE::mipsel-linux-opendreambox-dm8000]:~/grabcvs/aio-grab$ autotools_do_configure 
automake (GNU automake) 1.9.3
Written by Tom Tromey <tromey@redhat.com>.
 
Copyright 2004 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
AUTOV is 1.9
...
...
...
configure: creating ./config.status
config.status: creating Makefile
config.status: executing depfiles commands
[OE::mipsel-linux-opendreambox-dm8000]:~/grabcvs/aio-grab$ 
 
 
[OE::mipsel-linux-opendreambox-dm8000]:~/grabcvs/aio-grab$ make
NOTE: make
if ccache mipsel-linux-gcc -DPACKAGE_NAME=\"\" -DPACKAGE_TARNAME=\"\" -DPACKAGE_VERSION=\"\" -DPACKAGE_STRING=\"\" -DPACKAGE_BUGREPORT=\"\" -DPACKAGE=\"grab\" -DVERSION=\"0.8\"  -I. -I.
   -I/home/seddi/openembedded/dm8000/build/tmp/staging/mipsel-linux/include  -I/home/seddi/openembedded/dm8000/build/tmp/staging/mipsel-linux/include
 -fexpensive-optimizations -fomit-frame-pointer -frename-registers -O2 -MT main.o -MD -MP -MF ".deps/main.Tpo" -c -o main.o main.c; \
        then mv -f ".deps/main.Tpo" ".deps/main.Po"; else rm -f ".deps/main.Tpo"; exit 1; fi
ccache mipsel-linux-gcc  -I/home/seddi/openembedded/dm8000/build/tmp/staging/mipsel-linux/include -fexpensive-optimizations -fomit-frame-pointer -frename- egisters -O2 
 -L/home/seddi/openembedded/dm8000/build/tmp/staging/mipsel- linux/lib -Wl,-rpath-link,/home/seddi/openembedded/dm8000/build/tmp/staging/mipsel-linux/lib -Wl,-O1 -o grab  main.o -ljpeg -lpng -lz 
[OE::mipsel-linux-opendreambox-dm8000]:~/grabcvs/aio-grab$

Schwupp und schon habt ihr das fertige grab das ihr auf die Box kopieren könnt (chmod nicht vergessen) und benutzen :)

[OE::mipsel-linux-opendreambox-dm8000]:~/grabcvs/aio-grab$ ls -la grab
-rwxr-xr-x 1 seddi seddi 106738 2009-01-02 19:46 grab

über die .bb-Datei (Recipe)

"Recipe" ist nur der coole Ausdruck für "Anleitung für bitbake damit es weiss wie das Paket gebaut werden muss"

TEXT fehlt noch muss erst genauerer Recherchiert werden von mir...

Externe Links

Was brauche ich um eigene Programme auf der Dreambox zu kompilieren?