Wie kann man Programme (z.B. hd-idle) für die DM8000 kompilieren?

  • Wie kann ich denn ein Programm (konkret hd-idle) für die DM8000 kompilieren? Ich habe einen Linux PC mit Ubuntu 9.04 und einen Windows XP Rechner. Kann ich das Programm direkt unter Ubuntu kompilieren? Ich habe mal einfach make versucht und das Kompilieren funktioniert auch aber die Binary läuft natürlich nicht auf der Dreambox.


    Gibt es da einfach einen Kommandozeilenparameter, damit der gcc als Crosscompiler läuft oder muss man da eine eigene Version installieren?


    Oder gibt es eventuell eine vordefinierte virtuelle Maschine, in der man Programme für die DM8000 übersetzen kann?


    Ich habe momentan die binary von hd-idle aus dem [Moderator] Fremdimage, verstößt gegen die Boardregeln [/Moderator] image herausgezogen und damit kann ich jetzt meine externe USB Festplatte in den Standby schicken. Ich würde aber lieber das Programm selbst übersetzen, damit ich weiß, welche Version es ist und damit ich es dann auch hier für andere posten kann.

    Edited once, last by floh ().

  • Ich hab nicht viel Ahnung von Linux und erst recht nicht vom gcc, aber mit Hilfe einer OpenEmbedded-Umgebung hab sogar ich das hinbekommen :)


    Da gibt es im Netz ein tolles Script, dass dir eine komplette "Dreambox-Toolchain" installiert ("OE-Installation und Imagebau für Anfänger")...


    Wenn du dein erstes Image gebaut hast, liegt dann im entsprechenden build-Verzeichnis eine devshell (http://docs.openembedded.org/u…/html/usage_devshell.html) in der schon alles richtig gesetzt ist, sodass cross-compiled wird...

    so long
    m0rphU

  • Vielen Dank für deine schnelle Antwort.


    Klingt halt recht aufwändig, wenn man bedenkt, dass ich eigentlich bloß ein einziges kleines Programm mit 50KB übersetzen möchte. Muss ich dazu wirklich eine ganze Entwicklungsumgebung installieren und ein ganzes Image erzeugen (Zitat: "Der Vorgang dauert ca. 2h und benötigt 1.4GByte")?


    Gibt es da keine einfachere Lösung? Wie gesagt, ich habe das binary von hd-idle ja eigentlich schon (das zugehörige init.d script habe ich angepasst) und es funktioniert bei mir wie gewünscht (externe USB-Festplatte geht nach 10 Minuten in Standby). Da ich nach dieser Möglichkeit schon länger gesucht hatte, wollte ich das auch anderen zur Verfügung stellen, dafür aber eine selbst übersetzte Version verwenden.


    Wenn das Übersetzen aber so einen Aufwand bedeutet und ich dabei auch mein aktuelles Linux-System derart "zumüllen" muss, lass ich es vermutlich eher sein.

  • Wie gesagt: Ich hab da keine Ahnung von 8| Ich weiß nur, dass du so kinderleicht an einen Cross-Compiler kommst...


    Vllt. meldet sich ja wer, der (im gegensatz zu mir) Ahnung davon hat, wovon er da redet :D Geht bestimmt einfacher :)

    so long
    m0rphU

  • Hi,


    nein leichter / anders geht das nicht.


    Man braucht definitiv auf dem PC ja die selben libs die auch im image enthalten sind. Und genau dafür ist ja das OE da. Es erzeugt halt die passende toolchain. (Compiler/Linker/Assembler... libc usw.)


    Also nein.. anders gehts definitiv nicht. Aber das OE müllt den PC nicht voll. Das OE hat ja einen eigenen Ordner wo alles drinn liegt. Und wenn man es nicht mehr haben will löscht man es einfach. Es installiert aber nicht irgendwelche Dateien in irgendwelchen /usr /bin /sbin.. was auch immer ordnern.


    cu

  • Also nein.. anders gehts definitiv nicht. Aber das OE müllt den PC nicht voll. Das OE hat ja einen eigenen Ordner wo alles drinn liegt. Und wenn man es nicht mehr haben will löscht man es einfach. Es installiert aber nicht irgendwelche Dateien in irgendwelchen /usr /bin /sbin.. was auch immer ordnern.

    Wenn das so ist, dann probier ich es vielleicht doch noch. Ich bin halt Windows geschädigt, wo man irgendwann dann das ganze System neu aufsetzen darf, wenn man zu viel ausprobiert hat.

  • Eine fertige virtuelle Maschine (z.B. vmware) gibt es nicht zufällig für so etwas? Dann könnte man sich die einfach runterladen und darin dann das Programm übersetzen. So etwas gibt es z.B. für die Rockbox-Firmware, die ich auf meinem iPod anstelle der Original-Firmware benutze. Und dann müsste man weder ein Multiboot-System einrichten noch eine Entwicklungsumgebung (der Mensch an sich ist halt träge und ich bin da keine Ausnahme ;) ).



  • Stimmt eigentlich 2x nicht, so leit mir das tut es sagen zu müssen.


    1) Mit Barry Allen kann man sich Problemlos auf der Dreambox selber ein minimales mipsel Debian installieren (passt locker auf CF/USB) und dort natürlich auch gcc & Co mit apt-get installierne und compilieren was man möchte - bei Bedarf klaut man sich halt aus dem Debian auch die library dazu wenn diese nicht vom DMM Feed verfügbar ist oder von der Version nicht passt.


    2) es gibt ipks für die wichtigsten sachen (gcc, make, ...) und die kann man in einem Barry Allen image problemlos dazuinstallieren, und nachdem fast alle wichtigen dev libs auf dem DMM Feed von www.dreamboxupdate.com liegen diese ebenfalls von dort installieren und compilieren was man möchte. In 90% der Fälle kriege ich auf der box ein ./configure und ein make zusammen und als Ergebnis das gewünschte binary. Und wenn was fehlt (library, tool,...) klaue ich es aus dem mipsel Debian von Punkt 1) Vor allem wird dann nichts x-compiliert und man braucht auch keine bitbake files - womit viele Sachen sogar einfacher portieren gehen - auch wenn die Dreambox als Compiler nicht die schnellste ist.


    Insofern drehe ich mein OE kaum mehr auf ... und mache also alles falsch ;-)



    LG


    gutemine

    Edited once, last by Lost in Translation ().

  • Also ich habe jetzt eine Version von StickyLinux (1.06) heruntergeladen und in dieser virtuellen Umgebung dann die install.sh gemäß der Anleitung "OE-Installation und Imagebau für Anfänger" aufgerufen. Das hat alle möglichen Pakete installiert (insofern bin ich ganz froh, dass ich es nicht auf meinem "richtigen" Linux-System gemacht habe). Anschließend habe ich dann versucht mit make -f Makefile-opendreambox image ein Image für die DM8000 zu erstellen. Dies ist letztlich mit einer 404-Fehlermeldung gescheitert, dass eine Datei auf www.zlib.net nicht gefunden wurde (den Dateinamen habe ich leider zu Hause vergessen). Ich glaube die zlib 1.2.3 sollte heruntergeladen werden und da auf der homepage von zlib seit 14. Mai 2010 die Version 1.2.4 liegt, ist anscheinend der Link zur Version 1.2.3 nicht mehr verfügbar.


    Es hat schon eine Weile gedauert, bis es zum Abbruch kam, das Ganze zieht sich also doch ganz schön hin.


    Vielleicht wäre es ja einfacher, wenn jemand, der bereits eine Entwicklungsumgebung hat, einfach das Binary für hd-idle erzeugt und dann hier postet. Ich würde dann die Binary zusammen mit dem von mir angepassten Script und einer Anleitung posten, wie man damit den Standby-Modus für externe USB-Festplatten einrichten kann.


    Ich füge mal das Original hd-idle Paket (als zip weil das Original tgz nicht akzeptiert wird), wie es unter http://hd-idle.sourceforge.net/ verfügbar ist, bei. Das Makefile hat auf meiner Ubuntu-Maschine einfach funktioniert. Also wenn jemand Lust hat, es mal für die DM8000 zu probieren, wäre das super und würde mir doch einige Arbeit ersparen.

    Files

  • Habe erst vor 10 min gesehen das du mich herausfordern willst :-)


    Na gut - gehe ich halt 10 min später ins Bett ...


    Nettorabeitszeit 5 min (mit BA in einem aktuellen experimental image von DMM compiliert):


    root@dm8000:/media/hdd/hd-idle/hd-idle-1.01# ls
    CHANGES LICENSE Makefile README cvsenv.sh hd-idle.c scripts
    root@dm8000:/media/hdd/hd-idle/hd-idle-1.01# make
    gcc -g -Wall -c -o hd-idle.o hd-idle.c
    gcc -g -o hd-idle hd-idle.o
    root@dm8000:/media/hdd/hd-idle/hd-idle-1.01# ls -al
    drwx------ 3 root root 4096 Apr 1 23:16 .
    drwx------ 3 root root 4096 Apr 1 23:15 ..
    -rw------- 1 root root 1430 Feb 26 15:03 CHANGES
    -rw------- 1 root root 18110 Apr 23 2007 LICENSE
    -rw------- 1 root root 1203 Apr 23 2007 Makefile
    -rw------- 1 root root 5593 Feb 26 15:03 README
    -rw------- 1 root root 90 Apr 23 2007 cvsenv.sh
    -rwxr-xr-x 1 root root 78679 Apr 1 23:16 hd-idle
    -rw------- 1 root root 14337 Feb 26 15:03 hd-idle.c
    -rw-r--r-- 1 root root 16480 Apr 1 23:16 hd-idle.o
    drwx------ 3 root root 4096 Apr 1 23:15 scripts
    root@dm8000:/media/hdd/hd-idle/hd-idle-1.01# ./hd-idle -h
    usage: hd-idle [-t <disk>] [-a <name>] [-i <idle_time>] [-l <logfile>] [-d] [-h]
    root@dm8000:/media/hdd/hd-idle/hd-idle-1.01#


    LG


    gutemine

    Files

    • hd-idle.zip

      (10.03 kB, downloaded 263 times, last: )
  • .

    Edited once, last by Kerni ().

  • es soll auch Leute geben, die aus Prinzip kein BA benutzen :thumbsup:


    Es soll auch Leute geben die mit dem OE nicht zurechtkommen :-)


    Aber Du hast natürlich recht, BA ist ein Spiegel meiner Persönlichkeit - unrasiert am morgen ...

  • Habe erst vor 10 min gesehen das du mich herausfordern willst :-)

    Ich wollte dich eigentlich gar nicht herausforden, aber wenn das zu dem schnellen Ergebnis geführt hat, umso besser ;)


    Vielen Dank für deine Hilfe. Ich habe die Dateien mit Anleitung jetzt unter https://www.dream-multimedia-t…age=Thread&threadID=12410 und [Moderator] Link verstösst gegen die Boardregeln.[/Moderator] gepostet. Mal schauen, ob es jemand interessiert.

    Edited once, last by floh ().

  • Du kannst es posten wo du willst - ich wollte ja nur zeigen das compilieren nicht so schwer ist und für so was simples das OE unnötig :-)


    Bei den paar files wäre es aber einfacher du machst noch ein ipk draus dann kann man es auch auf den Softwarefeed der images legen und die files kommen gleich an den richtigen Platz.


    Schau dir in Reichi's Wiki an wie leicht das geht.


    Und ja, ich baue meine ipks auch auf der box - man muss sich nur ein ordentliches ar binary machen (das von der Busybox kann nur aus und nicht einpacken) und das ipkg-build ein bischen anpassen. Entsprechendes tar fiel mit ipkg-buld und dem ar binary habe ich glaube ich hier und ... woanders ... schon gepostet.


    LG


    gutemine

  • Das mit dem ipk Bauen schau ich mir mal an.


    Ist die übersetzte Version jetzt eigentlich Box-spezifisch oder funktionert das dann für alle Boxen? Also läuft erstens das binary auf allen DM Boxen und sind zweitens die Pfade auf allen Boxen gleich oder gibt es da Unterschiede? Und wie sieht es mit dem neuen oe1.6 aus, läuft das hd-idle so wie jetzt kompiliert da auch oder muss das extra übersetzt werden?

  • Da gibt es 2 Möglichkeiten:


    1) Der Author probier es aus und berichtet
    2) Der Author lässt es die User ausprobieren und die berichten


    PS: ich bevorzuge Methode 2 :-)


    LG
    gutemine