HowTo - Vom Auschecken bis zum Image: Unterschied zwischen den Versionen

Aus Streamboard Wiki
Zur Navigation springen Zur Suche springen
Zeile 122: Zeile 122:
== Tarball erstellen <-- (falls man Mist gebaut hat, beim Editieren irgendwelcher Files, muss man dann nicht mehr neu auschecken) ==
== Tarball erstellen <-- (falls man Mist gebaut hat, beim Editieren irgendwelcher Files, muss man dann nicht mehr neu auschecken) ==
  tux@linuxrechner: cd /
  tux@linuxrechner: cd /
  tux@linuxrechner: tar cvf backup.tar ./tuxbox-cvs /dbox2
  tux@linuxrechner: tar cvf backup.tar /tuxbox-cvs /dbox2


= Letzte Chance noch manuell ins Geschehen einzugreifen =
= Letzte Chance noch manuell ins Geschehen einzugreifen =

Version vom 20. Oktober 2006, 10:37 Uhr

Vorwort

Worum geht es hier?

Es geht darum, sich eine eigene Linux-Firmware für seinen Receiver zu bauen. Dabei sind einige Hürden zu überwinden. Viele Leute geben bereits an dieser Stelle auf, da ihnen die Hürden einfach zu hoch sind. Selbst bei hundertprozentiger Einhaltung diverser Kurzanleitungen, treten oft dennoch Fehler, oder irgendwelche unvorhersehbaren Situationen auf, bei denen die meisten Anleitungen nicht weiterhelfen. Und somit wird das simple Erstellen einer eigenen Firmware zum Höllentrip durch den unglaublich grossen Cyberspace, auf der Suche nach der richtigen Antwort zum entsprechenden Problem. Dieses HowTo ist darauf ausgelegt, dass (möglichst) alle Fragen vor-, während- und nach dem Firmware-Selbstbau beantwortet werden.

Das Projekt "Tuxbox" (Linux auf einem DVB-Receiver) basiert auf einem Open-Source-Projekt, bei dem es darum ging, DVB-Dienste unter Linux zum Laufen zu bringen. Pionierarbeit leisteten (u.a.) die Metzler-Brüder mit ihren API-Treibern. Irgendwann 2001/2002 schraubte ein User (tmbinc, ein Pionier beim Tuxbox-Projekt, und späterer Initiator von enigma) an seiner DBox2 herum, und brachte sie in den sogenannten Debugmodus. Der Bootloader von Betaresearch selber konnte bis heute noch nicht gehackt, und demnach auch nicht ausgetauscht werden, aber der BR-Bootloader sprang auf diverse Standard-Protokolle an, die auch Linux beherrscht. Darauf baute dann Stück- für Stück "Tuxbox" auf. Die DBox2, welche von 3 verschiedenen Herstellern angeboten wurde, wurde plötzlich zum äussert beliebten Objekt vieler Hobby-Liebhaber, da sie (gegenüber der Betanova-Firmware - nun durch Linux aufgemotzt) wesentlich schneller, und vor Allem auch selbst-gestaltbar wurde. Sie wird mittlerweile nicht mehr hergestellt. Einige Receiver-Hersteller waren bereits zuvor am Linux-Projekt interessiert, doch als das Projekt Tuxbox so langsam erwachsen wurde, setzten einige Firmen auf Tuxbox.

Prima, denn mittlerweile kann man (mithilfe von Tuxbox) seine eigene Firmware für mehrere Receiver selber erstellen. Zb. für die Dreambox, Triple-Dragon, Reelbox, usw. Einige Treiber von einigen Herstellern sind nicht Open-Source (sondern Copyrighted). Es müssen die Original-Treiber der Hersteller implemetiert werden, was aber auch keine grosse Hürde darstellt. In diesem HowTo wird also nicht nur die DBox2 angesprochen, sondern auch andere Receiver. Nähres dazu ist hier zu lesen!

Vorraussetzungen (Prerequisiten)

Prerequisiten? Was'n das? Man stelle sich vor, man will einen Starwars-Film drehen, und kein Schauspieler hat ein Laserschwert zur Verfügung. Damit der Film rockt, braucht jeder Starwars-Schauspieler auch die Requisite "Laserschwert".

So ähnlich ist es auch mit den Prerequisiten, die für Tuxbox benötigt werden. Fehlt dem eigenen Linux-System auf dem PC ein Tool, eine Library, bzw. ein Binary, dann klappt das nicht mit dem Linux-Firmware-Selbstbau. Diese Teile werden in diesem Zusammenhang Prerequisiten genannt.

Laut http://cvs.tuxbox.org/cgi-bin/viewcvs.cgi/tuxbox/cdk/doc/INSTALL.en?rev=HEAD muss man folgende Prerequisten an-Board haben:


I. Prerequistes:


- cvs
- autoconf >= 2.57a
- automake >= 1.8
- libtool >= 1.4.2
- gettext >= 0.12.1
- make >= 3.79
- makeinfo (texinfo)
- tar
- bunzip2 (bzip2)
- gunzip (gzip)
- patch
- infocmp (ncurses-bin / ncurses-devel)
- gcc 2.95 or >= 3.0
- g++ 2.95 or >= 3.0
- flex
- bison
- pkg-config
- wget
- libpng2 or libpng3 (DirectFB)

Wie findet man nun raus, ob man diese Tools/Files im System hat? Ganz einfach: Man tippt den Befehl in einer Shell einfach mal ein. Meist kann man noch den Parameter "--V" oder "-v", oder "--version", etc. angeben. Welcher nun akzeptiert wird, kann man meist rausfinden, indem man "--h", bzw. "--help" eintippt.

Beispiel für automake

tux@linuxrechner: automake --version
tux@linuxrechner: automake (GNU automake) 1.4-p6
Copyright (C) 1999, 2001 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.
Written by Tom Tromey <tromey@redhat.com>
tux@linuxrechner: 


Wer bereits das Tuxbox CVS ausgecheckt hat, kann auch /hostapps/toolchecker/toolchecker.sh mal ausführen, oder es sich mit einem Editor genau angucken. Denn es ist nur ein Script. Also alles keine Hexerei.

Allgemeines zum Tuxbox CVS

Was ist eigentlich CVS ?

Concurrent Version System! So ähnlich wie in diesem WIKI, können mehrere Autoren an diversen Ständen rum-doktor'n. Hat sich ein Autor verrannt, und erzählt kompletten Unsinn, so kann man die vorige Version zurückholen, da alle vorigen Verionen gespeichert werden. Ist eine Änderung wirklich korrekt, und sinnvoll, so bleibt die letzte Änderung im sogenannten "Head" bestehen.

Hat man also nun ein funktionierendes Linux (sei es ein echtes, oder eines via VMWare, oder Cygwin, o.ä.), wechselt man mit "cd .." solange herum, bis man in "root"-Verzeichnis ist. Das "root"-Verzeichnis ist nicht zu verwechseln mit dem User "root". Vielmehr bedeutet es die ERSTE Ebene, die die Umgebung bietet. Also solange "cd .." eingeben, bis es nicht mehr weitergeht. Dann ist man im "root"-Verzeichnis, Hat aber nix mit dem User "root" zu tun. Denn es gibt ja auch den User "root". Auch der User "root" kann Tuxbox compilieren, dennoch ist es ratsam, zuvor einen User anzulegen, und diesen das ganze Prozedere durchaufen zu lassen. Wieso ?

Nehmen wir mal an, man ist als "root" angemeldet. Der User "root" hat alle Rechte für Alles. Wenn mal was schiefgehen sollte, dann würde sich möglicherweise das System entkernen, oder ein paar Befehle aus dem Tuxbox-cvs sich auf das Hauptsystem auswirken, und einiges würde anschliessend nicht mehr laufen.

Als User angemeldet, laufen "böse", bzw. "missverstandene" Befehle ins Nirvana, weil man keine Rechte besitzt. Das schützt das Gesamtsystem, und bietet nebenbei im Log noch die Antwort auf die fehlgelaufene S(h)ituation.

Also immer schön als User das cvs bauen!

---

Was ist eigentlich der Unterschied zwischen cvs und cdk?

CVS wurde ja oben schon beschrieben. CDK ist die Abkürzung für "Cross Developement Kit". Wozu das? Tja, man besitzt idR. einen X86-PC. Aber die Prozessoren in den Receivern besitzen meist einen PowerPC (ppc). Die "normale" Compiler-Umgebung bietet keine Möglichket, Programme zu compileren, die auf dem ppc laufen. Das cdk baut also einen Crosscompiler (Kreuzübersetzer zwischen X86 und ppc). Alles was dann durch diesen Compiler gejagt wird, kann der ppc auch verstehen. Das heisst, daß das cdk auch den benöigten Crosscompiler, aber auch die entsprechenden Libs (glibc) baut, sowohl einen für cpp, as auch einen für C. Ebenso werden auch so Sachen, wie Stripper gebaut, die sich ständig wiederholende Kommentare hinterher entfernen. Auch dies klappt nur innerhalb einer Crosscompiler-Umgebung, und macht die abschliessenden Bins und Libs kleiner.

Vorbereiten der Distribution

Um sich ein lauffähiges CDK zusammenzustellen, benötigt man bestimmte Tools, oft dazu noch in einer bestimmten Version. Es gibt im Tuxbox-cvs ein Tool (bashskript), welches genau diese Tools abcheckt toolchecker. Man ladet sich das Skript auf den lokalen Rechner, ändert die Rechte auf 755 und staret es. Auf Grund des Outputs sieht man dann, welche Tools/Programme man noch installieren muß.

Wie update ich (als Beispiel) das passende "autoconf" in meiner Linux-Distri?

Wie gehe ich bei debian vor?

Unter debian http://www.debian.de gibt das Toolset apt-* zur Verwalltung von Programmen. Mit apt-cache search kann ich zB nach Programmen suchen, mit apt-get install Programme installieren.

Wie gehe ich bei SuSE vor?

Cygwin unter Windows

Wie gehe ich bei anderen Distributionen vor ? (grob angerissen/erklärt)

Welche Dateien müssen noch in mein Linux-PC kopiert/installiert werden?

Einloggen als "root" oder als Superuser (Hinweis auf verschiedene Konsolen im Linux über F-Tasten)

mklibs in welchen Pfad ? Und Kopie als mklibs.py in selben Pfad!

mkfs.jffs2 kopieren

mksquashfs kopieren

mkcramfs kopieren (Abfrage, ob bereits vorhanden)

mksquashfs (LZMA)

LZMA und u-boot

blaa

blubb

Vor-Überlegung (welches FS nehmen?)

Was für Filesysteme kommen in Frage und wozu brauch ich das überhaupt?

Was ist JFFS2, SquashFS, LZMA (und CramFS), und wo liegen die Unterschiede?(Zwischenverweis auf Punkt 5.1)

Wo liegen die Vor- und Nachteile der Filesysteme?

Vorbereitungen

Wichtig ist für euer System, dass ihr nicht unter dem User root arbeitet, zumindestens nicht das CDK kompiliert. Richtet euch eine eigenen User ein, mit dem ihr dann arbeitet. Einige Teile müßt ihr natürlich immer unter dem User root machen, zB Verzeichnisse anlegen oder Programme installieren. In diesem Howto wird immer von den selben Verzeichnissen gesprochen. In den weiteren Beispielen gehen wir davon aus, dass der User tux heist und unser Rechner linuxrechner. Natürlich könnt ihr auch eure eigenen Namen vergeben ;-)

Ein paar Verzeichnisse anlegen ( /tuxbox-cvs, /dbox2, etc)

tux@linuxrechner: mkdir /tuxbox-cvs
tux@linuxrechner: mkdir /dbox2

Auschecken und Konfigurieren

tux@linuxrechner: cd /tuxbox-cvs
tux@linuxrechner: cvs -d:pserver:anonymous@cvs.tuxbox.org:/cvs/tuxbox -z3 co -P .
tux@linuxrechner: cd cdk
tux@linuxrechner: ./autogen.sh
tux@linuxrechner: ./configure --prefix=/dbox2 --with-cvsdir=/tuxbox-cvs --enable-maintainer-mode --with-targetruleset=flash

Tarball erstellen <-- (falls man Mist gebaut hat, beim Editieren irgendwelcher Files, muss man dann nicht mehr neu auschecken)

tux@linuxrechner: cd /
tux@linuxrechner: tar cvf backup.tar /tuxbox-cvs /dbox2

Letzte Chance noch manuell ins Geschehen einzugreifen

Kernel für mein auserwähltes Filesystem patchen

Busybox + Libs für mein Image anpassen

JFFS2-Only

SquashFS

LZMA

CramFS

camd2 für Premiereempfang patchen

blaaa

blubb

"make all"

Was ist ein YADD, und was gibt man hier ein?

Was gibt man für ein Flash-Image ein?

Welche GUI nehmen (neutrino/enigma)?

make neutrino, make neutrino-all, make neutrino-flash-all, make enigma, make enigma-all, make enigma-flash-all, etc... Was denn jetzt?

Ok, fertig... was nun ?

Neutrino: Folgende Sachen noch Patchen, Kopieren in /cdkflash, Ucodes, folgende Verzeichnisse noch anlegen, blaaa

Enigma: Folgende Sachen noch Patchen, Kopieren in /cdkflash, Ucodes, folgende Verzeichnisse noch anlegen, blaaa

Sonstiges: Lcars, make extra, plugins, blubb

rcS, fstab, Ethernet-Files- und Configs

Auf der Fehlersuche

Erste Hilfe...

Der Trick mit dem "touch xyz"

Alles nochmal überprüfen (prerequisiten, Rechte?, mklibs?, usw) =

make distclean <-- (oder wie heisst das nochmal?)

Neu compilieren, ohne nochmal den Crosscompiler & Co neu erstellen lassen zu müssen

Zuvor erstellten Tarball nutzen, um was ver-sau-beuteltes nochmal neu zu starten (Sourcen überkopieren; Datums/Zeit-Problematik bei Files)

Image erstellen / Yadd erstellen

uboot/ppcboot und FLFS! Was ist das? Wohin damit? Woher nehmen?

Image erstellen mkfs.jffs2 -be blaaa.. oder mksquashfs blaaa

Yadd erstellen (was muss wohin, welches Programm nehmen, etc.)

Nebs neutrino auch ein enigma Image erstellen lassen (ohne nochmal alles neu starten lassen zu müssen)

Flashen!

Die Expertentools

Der DBox2-Bootmanager

Flashen ohne Bootmanager

Flashen vom Linux aus

Ich will nachträglich was im Source ändern, oder eine Datei (z.B. die busybox) neu compilieren

Was ist ein .dep-File?

Was ist ein diff, was ist ein Patch (grob angerissen... diff -Naur blaa, und patch -p0 blubb und die Pfade, etc.)

Datums/Uhrzeit-Problematik der Sourcen

Makefiles.. Wat ist dat und wie sind die aufgebaut? Was muss man beachten?

ANHANG

Welche Distribution für den PC ist empfehlenswert?

Knoppix

KNOPPIX ist eine komplett von CD oder DVD lauffähige Zusammenstellung von GNU/Linux-Software mit automatischer Hardwareerkennung und Unterstützung für viele Grafikkarten, Soundkarten, SCSI- und USB-Geräte und sonstige Peripherie. KNOPPIX kann als produktives Linux-System for den Desktop, Schulungs-CD, Rescue-System oder als Plattform für kommerzielle Software-Produktdemos angepasst und eingesetzt werden. (Quelle: Knoppix-Homepage)

Download auf der Knoppix-Homepage

--Martie 22:29, 19. Okt 2006 (CEST)

Wie bekomme ich Knoppix auf meine Festplatte?

1. Knoppix von CD/DVD starten

2. Shell öffnen

3. "sudo knoppix-installer" oder "knoppix-installer" eingeben und mit [Enter] bestätigen

4. den Anweisungen folgen

Hier mal ein Hd Install HowTo aus dem Knoppix-Wiki (leider nur in english)

Hier noch ein Video zur HD-Istallation (auch english)

--Martie 22:29, 19. Okt 2006 (CEST)

Was ist typischerweise für Knoppix (ab Version XY) zu ändern um mit dem Compilieren loslegen zu können? <-- (autoconf erneuern, und nur nochn bissie was)

Man benötigt noch folgende Software die noch nicht in Knoppix5 enthalten ist:

bison

libpng2 or libpng3 (DirectFB)

libtool >= 1.4.2

makeinfo (texinfo)

pkg-config

flex


eventuell noch:

mksquashfs

mkfs.jffs2


Bitte Anleitung erweitern...

--Martie 22:46, 19. Okt 2006 (CEST)

Streamboard VMWare Beta-Buildumgebung

Unter http://streamboard.gmc.to/wbb2/tut-pics/StreamboardVMWare.exe (70MB) steht testweise eine Buildumgebung für VMWare bereit. Diese basiert auf einem minimalen Debian-System und sollte bereits alle nötigen Pakete beinhalten. Es ist keine GUI installiert um die Downloadgröße gering zu halten. Diese kann aber mittels aptitude sehr einfach installiert werden. Die Installation unter Windows erfolgt sehr einfach:

  1. Download und Installation des VMWare-Players (Freeware) oder VMWare Workstation (benötigt nach 30 Tagen eine Lizenz)
  2. Entpacken der StreamboardVMWare.exe in ein beliebiges Verzeichnis (auf ausreichend Speicherplatz achten! Später wird das Ganze ca. 2-3GB groß)
  3. Mit einem Doppelklick auf die entpackte VMX-Datei sollte der VMWare-Player bzw. Workstation starten und die Buildumgebung öffnen.
  4. Nach dem Start von Debian kann man sich mittels dem Usernamen "streamboard" und Passwort "kalibo" einloggen. Das Passwort für den root-Zugang (nötig für die Installation weiterer Software) lautet "Streamboard".

Im Anschluss daran kann man mit dem Imagebau laut diesem Howto beginnen.

Das Streamboard-Team würde sich über Rückmeldungen im Forum diesbezüglich sehr freuen! Es können durchaus noch Bugs enthalten sein, da das Paket noch nicht ausreichend getestet werden konnte.

blaa

blubb

Links

Credits

Admin
horsti666
limette
martie