HOWTO zum
Erstellen eines Images vom CVS
Inhaltsverzeichnis:
1.
Vorwort
2.
Vor
dem Start – Welche Voraussetzungen müssen für dieses HowTo
gegeben sein
3.
Wie
man den Source auscheckt
4.
Den
Source downloaden
5.
Erstellen
des CDK
5.1.
YADD
testen
6.
Vorbereitung
für JFFS2 Image für Head Branch
a)
Einschub
für Punkt 6 für das HEAD vom 09.03.2003
7 . Vorbereitung
für JFFS2 Image des Release
Branch:
8.
Vorbereitung der Netzwerkeinstellungen bei HEAD und RElease
Branch:
b)
Ergänzungen
zum HEAD vom 09.03.2003
9.
Bei
dem Release Branch Telnet
Verlinkung:
10. Weitere
Vorbereitungen nur für HEAD BRanch
11. Image
aus dem Release Branch erstellen
12.
Erstellen
des flashbaren Images aus dem Head
13.
Zusammenfügen der Imagedateien für den Release
Branch
c)
Zusatz
HEAD 09.03.2003 Netzwerkeinstellungen
14.
Danke
an: 1. Vorwort: Die Beschreibung
setzt ein Linux Betriebssystem voraus. Cygwin Beschreibungen
sollten von HOMAR vorhanden sein. Siehe
Database! Im Folgenden
werden die Befehle, die man selber eingibt in blauer Schrift
dargestellt als Beispiel:
cvs
-d:pserver:anonymous@cvs.berlios.de:/cvsroot/tuxbox
login
Alle Ausgaben aus
der Konsole werden in rot dargestellt:
Logging
in to
:pserver:anonymous@cvs.berlios.de:2401/cvsroot/tuxbox CVS
password:
2. Vor dem
Start: Es sollten
folgende Pakete installiert sein: Prerequistes: (aus
INSTALL.en stand 2003/02/12 -- kann sich jederzeit
aendern) -------------- - cvs - autoconf >=
2.50 - automake >= 1.4p5 - libtool >= 1.4 -
gettext >= 0.10.38 - make >= 3.79 - makeinfo
(texinfo) - tar - bunzip2 - gunzip - patch -
infocmp (ncurses-bin) - gcc 2.95 or >= 3.0 - g++ 2.95
or >= 3.0 - yacc - flex - bison -
pkg-config
Zur Überprüfung der einzelnen Versionen werden
in der Konsole die einzelnen Programme mit dem Zusatz
–version angezeigt:
Beispiel:
Die Konsole zeigt
sich bei mir so, wenn sie gestartet wird:
nun gibt man z.B. für die Überprüfung von
gcc folgendes ein:
wenn eine Version vorhanden ist meldet sich die
Konsole in etwa so:
gcc
(GCC) 3.2
Copyright
(C) 2002 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.
Wenn eine Version nicht vorhanden ist, dann wird
halt irgendein Fehler angezeigt. Bei yacc
etc. wird keine Versionsnummer angegeben, sondern es werden
Parameter für einzelne Optionen angezeigt. Wenn das der Fall
ist weiss man, dass das Modul auch korrekt installiert ist.
Als Beispiel:
und die
Ausgabe:
usage:
yacc [-dlrtv] [-b file_prefix] [-p symbol_prefix]
filename
Die Zeichen
>= bedeuten in diesem Fall natürlich, dass eine höhere
Version als die angegebene auch funktioniert. In Worten also
eine Versinon größer oder gleich der angegebenen
Versionsnummer. Des weiteren
sollte eine der folgenden Dateien mkfs.jffs2
oder mkjffs2
in das /(bin
Verzeichnis kopiert werden. Die Rechte sollten
mit chmod
777 /bin/mkfs.jffs2 bzw.
chmod
777 /bin/mkjffs2 angepasst
werden
3.
Wie man den Source auscheckt: Ok zunächst sollte
man einen neuen User unter Linux erstellen, den ich aus
Bequemlichkeit Acky nenne, weil ich unter dem Namen in
Liunx angemeldet bin und so einfacher die Befehle hier
reinkopieren kann. Anlegen des CVS Verzeichnisses:
In der
Konsole wird das Verzeichnis tuxbox-cvs angelegt indem wir in
der Konsole eingeben:
danach in das
Verzeichnis wechseln mit:
Jetzt melden wir uns auf den berlios Server an,
von dem wir das CVS runterladen wollen:
cvs
-d:pserver:anonymous@cvs.berlios.de:/cvsroot/tuxbox
login
Der Server
verlangt nun eine Passwortabfrage, die allerdings mit einem
einfachen drücken der ENTER Taste (sprich kein Passwort)
bestätigt werden kann. Das sieht so aus:
Logging
in to
:pserver:anonymous@cvs.berlios.de:2401/cvsroot/tuxbox CVS
password:
Hier also einfach
<ENTER> drücken. Jetzt kommt
die Entscheidung ob man den Release Branch den Head Branch
oder den AlexW Branch auschecken möchte. Der neuste Release
Branch der stabil laufen sollte hat die Versionsnummer
rel_1_0_0. Der Head Branch ist meist junger bzw. neuer, aber
hat meist auch noch einige Bugs drinn, die es dann schwer
machen das Image für Ungeübte und Nichtprogrammierer zum
laufen zu bringen. Der AlexW Branch (weiss ich im Moment
nichts zu – muss noch ergänzt werden). Hier noch mal im
Überblick die Befehlszeilen, die für die einzelnen Branches
eingegeben bzw. kopiert werden müssen (in Schriftgröße 9 damit
der ganze Befehl in eine Zeile passt):
- Head
Branch : cvs
-d:pserver:anonymous@cvs.berlios.de:/cvsroot/tuxbox -z3 co
-r HEAD .
Release Branch : cvs
-d:pserver:anonymous@cvs.berlios.de:/cvsroot/tuxbox -z3 co
-r rel_1_0_0 -P .
- alexw Branch:
cvs
-d:pserver:anonymous@cvs.berlios.de:/cvsroot/tuxbox -z3 co
-r rel_alexW .
-
-
Der Punkt am
Ende ist übrigens kein Schreibfehler, sondern der muss
dahin!!
- Zu der
Befehlszeile soll noch kurz erwähnt werden:
- Der Punkt "." am
Ende der Zeile heißt, dass alles ausgecheckt wird.
- Das "co" ist die
Kurzform für Checkout
- "z3" ist der
Kompressionsgrad von gz-Dateien. 1 ist dabei der niedrigste
Wert (niedrige Kompression), 9 ist der höchste Wert.
So eigentlich
sollte man am besten mit dem Release Branch beginnen, da
dieser im allgemeinen stabiler ist als der HEAD Branch. Es
kann aber immer wieder vorkommen, dass der Release Branch an
bestimmten Tagen eben doch buggy ist und der HEAD Branch
durchläuft. Man muss sich hier also entscheiden womit man es
versuchen will. Die Beschreibung geht im Folgenden auf beide
CVS-Stände ein.
das Update für
alle geht folgendermaßen: cvs
-d:pserver:anonymous@cvs.berlios.de:/cvsroot/tuxbox -r -z9
update -P –d
Alle weiteren
Informationen befinden sich schon im CVS deshalb reicht für
alle dieses Kommando für das Update Also in die
Konsole (wo wir vorher das Passwort mit <ENTER>
bestätigt hatten) machen wir jetzt mit:
cvs
-d:pserver:anonymous@cvs.berlios.de:/cvsroot/tuxbox -z9 co
.
weiter.
Jetzt rattert die
Kiste erstmal alleine los mit etwa folgenden
Zeilen:
... ... U
apps/tuxbox/tools/configure.ac cvs server: Updating
apps/tuxbox/tools/camd U
apps/tuxbox/tools/camd/Makefile.am U
apps/tuxbox/tools/camd/camd.c U
apps/tuxbox/tools/camd/camd.h U
apps/tuxbox/tools/camd/cat.c U
apps/tuxbox/tools/camd/cat.h U
apps/tuxbox/tools/camd/sdt.c U
apps/tuxbox/tools/camd/sdt.h cvs server: Updating
apps/tuxbox/tools/misc U
apps/tuxbox/tools/misc/.cvsignore U
apps/tuxbox/tools/misc/Makefile.am U
apps/tuxbox/tools/misc/aviafbtool.c U
apps/tuxbox/tools/misc/camd.c U
apps/tuxbox/tools/misc/lcddump.c U
apps/tuxbox/tools/misc/pluginx.c U
apps/tuxbox/tools/misc/rcinfo.c U
apps/tuxbox/tools/misc/saa.c ... ...
Bei DSL
dauert diese Prozedur etwa 2 Minuten. Dabei werden auch einige
Verzeichnisse erstellt. Unter anderem das Verzeichnis cdk in
welches wir nun wechseln mit:
Hier wird nun das makefile erstellt. Dazu geben
wir noch einmal folgendes in die Konsole ein:
und
dann:
./configure
--prefix=/dbox2 --with-cvsdir=/tuxbox-cvs
--enable-maintainer-mode
Folgende Ausgabe
erscheint in etwa auf der Konsole:
uxbox@sonne:~/tuxbox-cvs$
cd
cdk tuxbox@sonne:~/tuxbox-cvs/cdk$./autogen.sh Generating
configuration files for tuxbox-cdk, please
wait.... aclocal libtoolize
--automake autoconf configure.ac:13: warning:
AC_ARG_PROGRAM was called before
AC_CANONICAL_TARGET automake --add-missing automake:
configure.ac: installing `./install-sh' automake:
configure.ac: installing `./mkinstalldirs' automake:
configure.ac: installing `./missing' automake: Makefile.am:
installing `./INSTALL' automake: Makefile.am: installing
`./COPYING' tuxbox@sonne:~/tuxbox-cvs/cdk$
Das WARNING (hier
in der 7. Zeile) ist ok, da man bei Linux stark zwischen
WARNING und ERROR unterscheiden sollte. Jetzt
entscheiden wir uns, ob wir ein Flash oder eine Yadd erstellen
wollen (wir nehmen hier ein Flash) und geben folgende Zeile
ein:
./configure
--prefix=/dbox2 --with-targetruleset=flash
--with-cvsdir=/tuxbox-cvs --enable-maintainer-mode
Wenn wir eine Yadd
machen wollten, dann würden wir anstelle von
targetruleset=flash halt targetruleset=yadd
eingeben. Da man mit dem Flash-Eintrag auch
eine Yadd machen kann bietet sich eigentlich immer
der targetruleset=flash
Eintrag an.
Umgekehrt (wenn man targetruleset=yadd schreibt und
dann ein Flash machen will) geht es nicht. Jetzt kommt
wieder eine ähnliche Ausgabe auf der
Konsole:
checking
for a BSD-compatible install... /usr/bin/install
-c checking whether build environment is sane...
yes checking for gawk... gawk checking whether make sets
$(MAKE)... yes checking whether to enable
maintainer-specific portions of Makefiles... yes checking
for gcc... gcc checking for C compiler default output...
a.out checking whether the C compiler works...
yes checking whether we are cross compiling...
no checking for suffix of executables... checking for
suffix of object files... o checking whether we are using
the GNU C compiler... yes checking whether gcc accepts
-g... yes checking for gcc option to accept ANSI C... none
needed checking for style of include used by make...
GNU checking dependency style of gcc... none checking
build system type... i686-pc-linux-gnu checking host system
type... i686-pc-linux-gnu checking target system type...
powerpc-tuxbox-linux-gnu checking for apps directory...
yes checking for boot directory... yes checking for
driver directory... yes checking for hostapps directory...
yes
Summary: Hostruleset: standard Targetruleset:
standard Targetprefix:
/home/tuxbox/dbox2/cdkroot Hostprefix:
/home/tuxbox/dbox2/cdk Bootprefix:
/home/tuxbox/dbox2/tftpboot Buildprefix:
/home/tuxbox/tuxbox-cvs/cdk Appsdir:
/home/tuxbox/tuxbox-cvs/apps Bootdir:
/home/tuxbox/tuxbox-cvs/boot Driverdir:
/home/tuxbox/tuxbox-cvs/driver Hostappsdir:
/home/tuxbox/tuxbox-cvs/hostapps
configure: creating
Makefile-archive configure: creating
./config.status config.status: creating
Makefile config.status: creating
root/Makefile config.status: creating
root/etc/Makefile config.status: creating
root/etc/init.d/Makefile config.status: creating
root/etc/network/Makefile config.status: creating
root/share/Makefile config.status: creating
root/share/udhcpc/Makefile config.status: executing
default-1
commands tuxbox@sonne:~/tuxbox-cvs/cdk$
4. Den Source
Downloaden: Wir befinden uns
ja immer noch im Verzeichnis …tuxbox-cvs/cdk
Hier geben wir
jetzt einfach den Befehl:
ein. Dadurch wird der Download vom Berlios
Server gestartet. Dies dauert immer unterschiedlich lange und
ist nicht immer gleich erfolgreich. Teilweise kommt es nämlich
vor, dass einige Dateien nicht erreichbar sind und somit das
make download gestoppt wird. Das sieht dann etwa so
aus:
Jetzt bleibt einem entweder die Möglichkeit
einfach noch mal
einzutippen, oder
aber über eine Suchmaschine (z.B. Google) die betreffende
Datei selbst zu suchen und dann in das Verzeichnis
…tuxbox-cvs/cdk/Archive zu speichern. Da mehr als
100MB herunter geladen werden müssen kann diese Prozedur schon
eine Weile dauern. Um sicher zu gehen, dass auch wirklich
alles vorhanden ist gibt man am Ende (sobald nichts mehr
herunter geladen wird) nochmals:
ein. Wenn alles
vorhanden ist sollte als Ausgabe etwa so was kommen
wie:
Nothing
left to do for <make download>
Diese Prozedur
muss nicht immer wiederholt werden. Die Ansammlung von Dateien
wird im Verzeichnis tuxbox-cvs/cdk/Archiv gespeichert. Nur bei
Änderungen ist also ein erneutes make downlaod
nötig. Des Weiteren können auch bei
anderen CVS-Checkouts die Dateien aus dem /Archiv-Verzeichnis
verwendet werden. Somit wird der Download stark minimiert bzw.
muss gar nicht erst gemacht werden. Hierfür macht man einen
Softlink in die anderen CVS-Stände.
Beispiel für Softlink
von Merandos:
- home/tuxbox/mycvs1
-
- sei die Basis meines ersten cvs
Standes. Z.B. für einen Release Branch.
- Dann ist Archiv in:
-
- home/tuxbox/mycvs1/cdk/Archive
-
- home/tuxbox/mycvs2
-
- sei die Basis meines zweiten cvs
Standes. Z.B.. für einen Head oder AlexW Branch
- dann kann ich z.B. mit
-
- ln -s
/home/tuxbox/mycvs1/cdk/Archive
/home/tuxbox/mycvs2/cdk/Archive
-
- einen Softlink auf Archive in
meinem 2ten cvs Verzeichnis erstellen.
- Wenn nun durch ein make download
in mycvs2 neue Dateien herunter geladen werden,
- werden die natürlich
physikalisch in mycvs1/cdk/Archive gespeichert. Das ist aber
nicht schlimm! im Gegenteil, das ist sogar praktisch
;-)
- Für weitergehende
Informationen in Hinsicht auf Verlinkung kann man in der
Konsole
-
-
-
- eingeben.
-
5. Erstellen des cdk: Nun folgt
lediglich der Befehl:
Das make
extra ist für ein lauffähiges Image nicht notwendig und da
wir ja einen Einstieg hier beschreiben wollen bleibt alles
erstmal so einfach wie möglich! Also, make extra bleibt
erstmal aussen vor!! So als
Ausgabe auf der Konsole geht es jetzt für ein paar Stunden
ab… Es beginnt etwa
mit Folgendem:
/usr/bin/install
-c -d /home/tuxbox/dbox2/cdkroot/bin /usr/bin/install -c -d
/home/tuxbox/dbox2/cdkroot/dev /usr/bin/install -c -d
/home/tuxbox/dbox2/cdkroot/etc /usr/bin/install -c -d
/home/tuxbox/dbox2/cdkroot/include /usr/bin/install -c -d
/home/tuxbox/dbox2/cdkroot/mnt /usr/bin/install -c -d
/home/tuxbox/dbox2/cdkroot/lib /usr/bin/install -c -d
/home/tuxbox/dbox2/cdkroot/proc /usr/bin/install -c -d
/home/tuxbox/dbox2/cdkroot/root /usr/bin/install -c -d
/home/tuxbox/dbox2/cdkroot/sbin /usr/bin/install -c -d
/home/tuxbox/dbox2/cdkroot/tmp /usr/bin/install -c -d
/home/tuxbox/dbox2/cdkroot/var /usr/bin/install -c -d
/home/tuxbox/dbox2/cdkroot/var/run /usr/bin/install -c -d
/home/tuxbox/dbox2/cdkroot/var/tuxbox/ucodes /usr/bin/install
-c -d
/home/tuxbox/dbox2/cdk/powerpc-tuxbox-linux-gnu /usr/bin/install
-c -d /home/tuxbox/dbox2/tftpboot rm
/home/tuxbox/dbox2/cdk/powerpc-tuxbox-linux-gnu/include rm:
Entfernen von
»/home/tuxbox/dbox2/cdk/powerpc-tuxbox-linux-gnu/include«
nicht möglich: Datei oder Verzeichnis nicht gefunden make:
[.directories] Fehler 1 (ignoriert) rm
/home/tuxbox/dbox2/cdk/powerpc-tuxbox-linux-gnu/lib rm:
Entfernen von
»/home/tuxbox/dbox2/cdk/powerpc-tuxbox-linux-gnu/lib« nicht
möglich: Datei oder Verzeichnis nicht gefunden make:
[.directories] Fehler 1 (ignoriert) ln -s
/home/tuxbox/dbox2/cdkroot/include
/home/tuxbox/dbox2/cdk/powerpc-tuxbox-linux-gnu/include ln
-s /home/tuxbox/dbox2/cdkroot/lib
/home/tuxbox/dbox2/cdk/powerpc-tuxbox-linux-gnu/lib ln -s
/home/tuxbox/tuxbox-cvs/cdk/linux/include/asm
/home/tuxbox/dbox2/cdk/powerpc-tuxbox-linux-gnu/include ln
-s /home/tuxbox/tuxbox-cvs/cdk/linux/include/linux
/home/tuxbox/dbox2/cdk/powerpc-tuxbox-linux-gnu/include touch
.directories
-
Wenn es optimal
läuft sollte alles mit der Ausgabe
enden:
- rm
–rf nano-1.0.7
- touch
.nano
- acky:~/tuxbox-cvs/cdk
Falls es
zwischendurch zu Problemen kommt wie z.B. es erscheint so
etwas:
make
[2]: *** [../obj_s/comp_captab.o] Error 1 make [2]: leaving
directory ………/ncurses make [1]: *** [.libncurses] Error
2
dann kann
man das mit folgendem Befehl übergehen.
Der "touch" -
Befehl täuscht letztendlich ein erfolgreiches "make" vor. Dies
funktioniert so, weil bei erfolgreichem "make" immer eine
Datei (man kann sie sich als eine Art Merker vorstellen)
erstellt wird, anhand derer sich das makefile "merkt" welche
Dateien schon kompiliert wurden. "touch .driver" z.B. erzeugt
nun eine leere Datei ".driver" und gaukelt so dem makefile vor
die Kompilierung von driver wäre erfolgreich gewesen. Somit
macht das makefile mit dem nächsten Schritt (nach driver also)
weiter. Die fertig kompilierten Datei werden übrigens als
Targets bezeichnet. Im makefile sind die Targets aufgeführt
die erstellt werden. Der Befehl "rm"
hingegen löscht Dateien (remove). Dies wird im späteren Teil
des HowTos noch wichtig. Sinnvoll ist dieser Befehl immer
dann, wenn im Nachhinein noch Dateien angepasst werden müssen
und man nicht das komplette CVS neu kompilieren will. Dann
wird eine bestimmte Datei in der Änderungen vorgenommen wurden
gelöscht z.B. rm .linuxkernel und danach kann allein
der linuxkernel neu kompiliert werden.
Ich kann an dieser
Stelle leider nicht sagen, welche Pakete essentiell bzw. nicht
zu touchen sind, damit das Image später auch noch fehlerfrei
laufen kann. Da brauche ich auf jeden Fall noch Feedback von
den Profis! Klar sollte aber sein, dass wenn man ein
Neutrino-Image erstellen will, man ohne Bedenken enigma und
lcars touchen kann. Auf der sicheren Seite ist man, wenn man
das Problem noch mal im Board postet und sich erkundigt, ob
der aufgetretene Fehler sich auf das angestrebte Image
auswirken wird, oder ob man es touchen kann.
Nach dem
make all sollte ein dbox2 Verzeichnis entstanden sein
mit einigen Unterverzeichnissen: /dbox2/cdkroot
/dbox2/tftpboot
/dbox2/cdkflash
5.1 YADD testen:
Der
Zeitpunkt ist gekommen, an dem wir mal testen können, ob die
ganze Sache läuft.
Also Beschreibung
(bitte um Verbesserungen falls Fehler drin
sind!!!):
Ich gehe hier nicht auf das strippen ein,
weil bei mir das strippen noch nie wirklich geklappt hat. Das
soll deshalb lieber jemand machen der das auch
kann!!!
Sobald das compilieren durchgelaufen ist
befinden im Ordner dbox2 unter anderem die Verzeichnisse
CDKROOT und TFTPBOOT. In diese Verzeichnisse müssen wir nun
noch einige Dateien aus unserer D-Box übernehmen, damit wir
die Yadd testen können. Diese Dateien sind:
/var/tuxbox/ucodes
> ucode.bin; cam-alpha.bin; die jeweilige
avia.ux /var/tuxbox/config/zapit > bouquets.xml;
services.xml /var/tuxbox/config >
scan.conf
Diese Dateien werden in die gleichnamigen
Verzeichnisse des CDKROOT Ordners gelegt.
Des weiteren
müssen die Dateien lobo-fb und logo-lcd aus der D-Box (/boot
> logo-fb; logo-lcd) in den Ordner TFTPBOOT gelegt
werden. Hier müssen nun also 4 Dateien vorhanden
sein.
Jetzt packt man die beiden Verzeichnisse, bevor
man sie auf die Windows-Platte schiebt, damit die Verlinkungen
nicht verloren gehen. Dazu wechselt man in das dbox2
Verzeichnis in der Konsole und gibt folgendes ein (nach
emmeli):
tar
-cvf yadd.tar cdkroot tftpboot
Danach hat man die
Datei yadd.tar.gz im dbox2 Verzeichnis. Diese kann jetzt auf
die Windows-Platte und mit Hilfe der untar_utils entpackt
werden (siehe Readme der untar_utils). Nach dem entpacken
sollten wieder die Verzeichnisse CDKROOT und TFTPBOOT im
Verzeichnis sein. Dann startet man den Bootmanager. Die
Netzwerkverbindung sollte natülich funzen. Hier nun ein
Auszug aus der ReadMe des Bootmanagers für den Start einer
Yadd:
0.
DBox über Netzwerkkabel und Serielle Schnittstelle
anhängen. 1. Die richtige Netzwerkkarte auswählen (dort wo
die DBox hängt), RARP muß aktiviert sein. 2. Gewünschte
DBox-IP überprüfen / eintragen (muß aus dem
gleichen Nummernkreis wie Eure Netzwerkkarte sein) 3.
COM-Port prüfen (Baud-Rate auf 57600) - HIER BITTE FEEDBACK!!
BEI MIR FUNZT DIE AUSGABE NUR MIT 9600 BAUD! 4. RARP-Server
könnt ihr ausschalten (wird nicht mehr gebraucht, erhöht die
Stabilität) 5. BootP-Server EINschalten und richtiges
Bootfile für die Box auswählen Wenn ihr zB die YADD
verwendet, dann kommt also das "c:\untar_utils
ftpboot\ppcboot" hin !! Verwendet am besten die Tools aus
UnTar_Utils.zip, dieses File findet ihr auch auf meiner
Web-Seite ( http://dbox.feldtech.com/)
!! 6. Richtiges NFS-Root Verzeichnis kontrollieren, sollte
sich mit dem Bootfile mit geändert haben 7. Start-Knopf
drücken... 8. Box starten und alles sollte klappen!
ZUSATZ:
Wenn man einen
Head Branch auscheckt, dann hat man in dem Verzeichnis
tftpboot keine ppcboot mehr, sonder eine u-boot. Mit dieser
Datei funktioniert der hier beschriebene Startvorgang nicht!
Ich lege in den Dateianhang eine ppcboot bei, die dann
anstelle der u-boot Datei ausgewählt erden muss. Am besten
ersetzt man die u-bbot durch die ppcboot.
6. Vorbereitung für JFFS2 Image des
Head Branch:
- Im Verzeichnis
/dbox2 sind nun also die Unterverzeichnisse
- /cdkroot
- /cdkflash
- /tftpboot
- Das cdkflash
Verzeichnis sollte als einziges von diesen leer sein. Um ein
Image zu erstellen muss dieses Verzeichnis gefüllt sein.
Hierfür ist der Befehl make flash-neutrino-all
zuständig. Damit dieser Befehl aber auf unterstützende
Dateien zugreifen kann müssen wir jetzt noch ein wenig
vorbereiten.
Dies gilt
nur für JFFS2 – cramfs etc. brauche ich noch
Infos!! Zunächst muss der
Kernel neu kompiliert werden. Dazu müssen folgende Dateien
ausgetauscht werden dbox2-flash.c
diese Datei
befindet sich in
…/tuxbox-cvs/cdk/linux/linux-2.4.20/drivers/mtd/maps/
do_mounts.c
diese Datei
befindet sich in …/tuxbox-cvs/cdk/linux/ linux-2.4.20/init/
Das kopieren
kann mit dem Konqueror gemacht werden oder wie man auch will.
Zur Sicherheit sollten die Rechte noch mal überprüft werden (
müssen auf rwx rwx rx stehen). Ggf mit dem Befehl
chmod
777 …/tuxbox-cvs/cdk/linux/linux-2.4.20/drivers/mtd/maps/
dbox2-flash.c und
chmod
777 …/tuxbox-cvs/cdk/linux/linux-2.4.20/ init/
do_mounts.c
Des weiteren wird
die Datei mklibs in das Verzeichnis /usr/bin kopiert.
Auch hier wieder ggf. die Rechte anpassen mit:
chmod
777 /usr/bin/mklibs
WICHTIG!!!!
Wenn man einen
Release Branch auscheckt muss die Datei umbenannt werden in
mklibs.py Nun gehen wir in das
/tuxbox-cvs/cdk/linux-Verzeichnis und geben folgendes
ein:
dann:
jetzt sind wir
wieder im …/tuxbox-cvs/cdk Verzeichnis. Jetzt wird der
bisherige linuxkernel entfernt mit:
das geht schnell.
Nun den neuen linuxkernel erstellen mit:
Jetzt kompiliert
Linux wieder und es kommen einige Ausgaben auf der Konsole.
Wenn hier alles durchgelaufen ist sollten wir den nächsten
Befehl eingeben:
Jetzt wird
das cdkflash Verzeichnis gefüllt. Das dauert wieder ein paar
Minuten! Zeit um einen Kaffe aufzusetzten!
a) EINSCHUB FÜR HEAD VOM 09. MÄRZ
2003
Hier müssen wir
eine Veränderung am makfile vornehmen, bevor wir den Befehl
make flash-neutrino-all ausführen. Dazu gehen wir mit
dem Konqueror in das tuxbox-cvs/cdk Verzeichnis und öffnen mit
einem Editor die Datei Makefile. Recht weit unten in
dieser Datei befindet sich die Zeile:
cp -pa
$(targetprefix)/share/fonts/tuxtxt.fon
$(flashprefix)/root/share/fonts
Diese
ändern wir in:
cp -pa
$(targetprefix)/share/fonts/tuxtxt*.fon
$(flashprefix)/root/share/fonts
Es wird also „nur“
das „*“ hinter tuxtxt eingefügt! Danach wird die Datei wieder
gespeichert. 7. Vorbereitung
für JFFS2 Image des Release Branch:
- Kurzer
Einschub!!!
- Im Gegensatz zum
HEAD Branch muss man für den Release Branch die Datei
"mklibs" in "mklibs.py" umbenennen und
ins /usr/bin Verzeichnis kopieren. Zur Sicherheit
werden noch mal die Rechte kontrolliert und ggf. mit dem
Befehl:
-
c
hmod
777 /usr/bin/mklibs.py
-
- angepasst.
So, weiter
gehts:
- Im Verzeichnis
/dbox2 sind nun also die Unterverzeichnisse
- /cdkroot
- /cdkflash
- /tftpboot
- Das cdkflash
Verzeichnis sollte als einziges von diesen leer sein. Damit
sich dieses Verzeichnis jetzt mit der Imagestruktur füllt
geben wir im Verzeichnis
den
Befehl:
ein. Nun sollte
sich das CDKFLASH Verzeichnis gefüllt haben mit der
Verzeichnisstruktur, die wir aus der D-Box schon
kennen. Jetzt müssen die
Verschiedenen Pakete kompiliert werden, die man im späteren
Image haben möchte. Für ein Neutrino Image sollten folgende
Pakete reichen. Wir geben also wieder im gleichen
Verzeichnis:
folgende Befehle
ein:
make
flash-neutrino
- (das komplette
Neutrino Paket)
make
flash-ftpd
- (das ftp
Paket)
make
flash-telnetd
- (das telnet
Paket)
make
flash-plugins oder
make flash-fx2
- (das plugin
Paket je nach Stand)
- Nach jeder
Befehlseingabe wird ein Kompilierungsvorgang
gestartet.
- Es gibt noch
weitere Befehle, wenn man z.B. enigma oder lcars im Image
haben möchte:
- make
flash-enigma
- make
flash-lcars
etc.
Wenn man
alle Pakete kompiliert hat, die man in seinem Image haben
möchte kommt noch ein Befehl, damit alle libs vorhanden
und gestrippt sind:
Das wars schon
fast mit den Vorbereitungen Jetzt werden
noch die ucodes kopiert und zwar nach
/cdkflash/root/var/tuxbox/ucodes Ebenfalls müssen
noch die logo-fb und die logo-lcd nach
/cdkflash/root/boot kopiert werden. Somit ist
das CDKFLASH Verzeichnis so vorbereitet, dass mit dem
eigentlichen erstellen des Images begonnen werden
kann. 8. Vorbereitung der
Netzwerkeinstellungen bei HEAD und RElease
Branch: Es müssen
noch einige Veränderungen gemacht werden, da es beim strippen
(wofür die mklibs gebraucht wird) zu unerwünschten Effekten
kommt. Zunächst müssen wir die Datei interfaces
verändern. Diese finden wir in: /dbox2/cdkflash/root/etc/network/
hier liegt die Datei interfaces Diese kann
mit einem Editor geöffnet werden und folgende Veränderungen
werden vorgenommen: So sieht die Datei
eigentlich aus (jetzt nicht in der Konsole sondern im
Editor):
auto
lo
iface
lo inet loopback
#auto
eth0
#iface
eth0 inet static
#address
10.0.0.42
#gateway
10.0.0.1
#netmask
24
Und so sollte die
Datei für uns aussehen:
auto
lo
iface
lo inet loopback
auto
eth0
iface
eth0 inet static
address
10.0.0.42
gateway
10.0.0.1
netmask
24 Es müssen also alle „#“ entfernt
werden. Danach wird die
Datei einfach gespeichert.
Jetzt werden die
Dateien satellites.xml und cables.xml ins
cdkflash Verzeichnis übernommen. Die Dateien liegen
im Moment noch im cdkroot Verzeichnis. Das machen wir
aus Bequemlichkeit mit dem Konqueror. Die Dateien
befinden sich in folgendem Verzeichnis:
b) Ergänzung für HEAD vom 09.03.:
Aufgrund
eines kleinen Bugs im CVS kann man die Netzwerkeinstellungen
nicht in der D-Box speichern. Daher sollte man an dieser
stelle schon seine eigentlichen Netzwerk Parameter eintragen,
die er normalerweise im Menü „Netzwerkeinstellungen“ in
der D-Box machen würde. Bei mir sieht die Datei
interfaces dann so aus:
auto lo
iface
lo inet loopback
auto
eth0
iface
eth0 inet static
address
192.168.6.90
broadcast
192.168.6.255
netmask
255.255.255.0
#netmask 24
Ich habe hier also
“nur” die Einstellungen für die Verbindung D-Box – PC
eingegeben. Wer noch die Verbindung zum Internet haben möchte
muss noch die Gateway Daten eintragen.
Danach wird die
Datei einfach gespeichert!
-
- 9 . Bei dem
Release Branch Telnet Verlinkung:
-
- Für den telnet
–login kann noch eine Verlinkung von „login“ auf „tinylogin“
gemacht werden.
- Dafür gehen wir
in das Verzeichnis:
- und geben
folgenden Befehl ein:
ln
–sf /bin/tinylogin
tuxbox-cvs/dbox2/cdkflash/root/bin/login
und zum
Passwort ändern noch:
ln
–sf /bin/passwd
tuxbox-cvs/dbox2/cdkflash/root/bin/login
HIER
GEHTS MIT DEM RELEASE BRANCH WEITER!!!(11)
10. Weitere
Vorbereitungen nur für HEAD Branch:
/dbox2/cdkroot/share/tuxbox/
und müssen
nach:
/dbox2/cdkflash/root/share/tuxbox/
Danach wird
die Datei inetd verlinkt. Das machen wir wieder mit der
Konsole: Wir gehen ins
cdkflash Verzeichnis (bei mir sieht’s dann so auf der Konsole
aus):
und geben dann
folgendes ein:
dann:
dann:
ln -s
../bin/busybox inetd dann
:
jetzt wird
die Datei libcrypto, die beim strippen immer kaputt geht
wieder erneuert mit:
cp
../cdkroot/lib/libcrypto.so.0.9.7
root/lib/libcrypto.so.0 nun müssen wir
noch einen Symlink setzen. Dazu muss der komplette Pfad
angegeben werden. Da sich mein dbox2 Verzeichnis mit allen
Unterverzeichnissen in /root befindet, sieht mein Befehl also
so aus:
/root/dbox2/cdk/bin/powerpc-tuxbox-linux-gnu-strip
-s /root/dbox2/cdkflash/root/lib/libcrypto.so.0
Wenn der Pfad falsch war kommt eine
Fehlermeldung die in etwa so aussieht:
bash:
/dbox2/cdk/bin/powerpc-tuxbox-linux-gnu-strip: No such file or
directory
Wenn es richtig
war, dann kommt keine Fehlermeldung und auf der Konsole
erscheint die ganz normale Ausgabe:
Jetzt werden noch die ucodes kopiert und
zwar nach
/cdkflash/root/var/tuxbox/ucodes Ebenfalls
müssen noch die logo-fb und die logo-lcd nach
/cdkflash/root/boot kopiert werden. HIER
GEHTS MIT DEM HEAD BRANCH WEITER!!! (12)
11. Image aus dem
Release Branch erstellen: Wir
kopieren nun die Datei "vmlinuz" aus dem Dateipaket in das
Verzeichnis /cdkflash/root Voraussetzung ist
(wie am Anfang des HowTos beschrieben), dass entweder die
Datei mkfs.jffs2 oder mkjffs2 in /bin vorhanden ist. Jetzt
kann man das ja noch nachholen falls es versäumt
wurde!! Benutzen wir
mkfs.jffs2 dann wird jetzt folgender Wir gehen in das
Verzeichnis:
Befehl
eingegeben:
mkfs.jffs2
–b –e 131072 --pad=8126464 –r cdkflash/root/ -o
cdkflash/root-jffs2.tmp Wenn man die
Datei mkjffs2 benutzt, dann ist der Befehl der gleiche nur
halt mit
mkjffs2
–b –e 131072 --pad=8126464 –r cdkflash/root/ -o
cdkflash/root-jffs2.tmp
Dabei wird ein
jffs2 only Image aus den Dateien im /cdkflash/root Verzeichnis
erstellt. Das bedeutet auch, dass Ihr vorher im cdkflash/root
Verzeichnis Eure eigenen Änderungen machen könnt, die dann ins
Image übernommen werden. Z.B Senderlisten, lcdmenu,
etc. HIER
GEHTS MIT DEM RELEASE BRANCH WEITER !!!(13)
12. Erstellen des flashbaren Images
aus dem HEAD Branch: wir gehen jetzt in das Verzeichnis
/dbox2/cdkflash. Hierein kopieren wir aus dem
Dateianhang die Datei boot15.img . Jetzt liegt in
diesem Verzeichnis also eine Datei und das /root
Verzeichnis. Auf der Konsole steht also der letzte
Eintrag s.o.
/dbox2/cdkflash
# Nun geben wir
folgendes ein:
mkfs.jffs2
-b -f -e 0x20000 --pad=0x7c0000 -r root -o
datei.img Nun sollte
eine Datei entstanden sein, die 7,8 MB groß ist und den Namen
datei.img hat. Ich empfehle bis
zum folgenden Befehl ein kurzen Augenblick zu warten, und
eventuell die Größe kurz zu überprüfen, bis man den nächsten
Befehl eingibt. Jetzt kommt der Befehl, der das Image
erstellt. Wir geben also:
cat
boot15.img datei.img > Neutrino.img
ein. Nun sollte auch eine Datei
Neutrino.img entstanden sein, die 7,9 MB groß
ist. Diese kann jetzt
nach Windows kopiert werden und mit dem Bootmanager gestartet
werden. 13. Zusammenfügen
der Dateien für Release Branch:
Hierfür
gehen wir wieder ins Verzeichnis:
In den ersten 128kb eines Images ist immer der
ppcboot aufgehoben, deshalb geben wir zuerst:
cat
jffs2-ppcboot-flfs.img > only-jffs2.img
ein und erst danach:
cat
root-jffs2. tmp
>>
only-jffs2.img
Das wars!!! Jetzt
sollte das only-jffs2.img in Eurem cdkflash Verzeichnis
liegen. Nun braucht Ihr es lediglich mit dem Bootmanager oder
unter Neutrino/Enigma mit der Expertenfunktion zu
flashen!!!
c) Zusatz HEAD 09.03.
Netzwerkeinstellungen:
Das Image aus dem
HEAD-Branch vom 09.03. muss ich immer zweimal starten, da beim
ersten Mal keine Fernbedienung funktioniert. Beim 2. Start
sollte man zunächst mit telnet auf die Box gehen und das
Verzeichnis root auf der D-Box anlegen. Das geht so:
Unter Windows
unten links den START-Button drücken > telnet
eingeben. Jetzt öffnet sich auch eine Konsole. Nun den Befehl
open eingeben und danach die IP der D-Box (bei mir
also: 192.168.6.90) und mit <ENTER> bestätigen. Danach
den Benutzer root eingeben. Jetzt ist man schon auf der
Box. Jetzt nur noch mkdir root eingeben und man hat das
Verzeichnis erstellt. Jetzt kann man per FTP auf die Box
zugreifen – gelangt dabei aber immer zuerst in das leere /root
Verzeichnis. Für die Anmeldung bei diesem HEAD ist kein
Passwort mehr nötig!!! Um die Expertenfunktion zu
aktivieren, um später mal das Image auszulesen und auf
Festplatte zu speichern, muss man (am besten in Linux) auf die
Box zugreifen > per FTP die Datei strat_neutrino aus
/etc./init.d/ rauskopieren und dann hinter den Eintrag
„neutrino“ die Anhänge „-flash“ und „-su“ hängen, so dass der
neutrino Eintrag dann so aussieht:
neutrino –flash
–su
somit sollte die
Expertenfunktion im Image vorhanden sein!
Um das Image dann
aus dem /tmp Ordner herauskopieren zu können muss allerdings
noch eine kleine Änderung in einer Datei vorgenommen werden.
Wir gehen wieder unter Linux auf die D-Box mit einem
FTP-Programm und editieren die Datei /etc/int.d >
fstab
Von:
proc /proc proc
defaults 0 0 tmpfs /tmp tmpfs defaults 0 0
nach:
proc /proc proc
defaults 0 0 ramfs /tmp ramfs defaults 0 0
Nun sollten wir
aus dem /tmp Verzeichnis.kopieren können –natürlich nach einem
D-Box Neustart.
Danke
an: Diese Beschreibung
basiert auf dem Thread im Streamboard „Bei Null anfangen und
dann irgendwann ein eigenes Image“ der am 27.02.03 von
ganz_alleine gestartet wurde. Allen Beteiligte dieses Threads
möchte ich hiermit noch mal danken. Danke
an: Alpha, Body, dkey,
de Buhr, Limette, Lucgas, Stiffmeister für den
schnellen und freundlichen Support, ohne den ich mit
meinen persönlichen Image- und Verständnisproblemen wohl nie
soweit gekommen wäre!! Besonderer Dank
gilt: Merandos
- für den Großteil des HowTos, dass
ich lediglich übernommen habe und die vielen Korrekturen und
Verbesserungsvorschläge!!!!!
-
- Besten
Dank!
Der komplette Teil
des HowTos über den Release Branch ist von Handyhunter
mit freundlicher Unterstüzung von dkey!!! An Euch auch
noch einen riesen Dank!!! MfG
Doktorknow
Todo:
Yadd unter Linux
starten bitte ergänzen und
Verbesserungsvorschläge machen!!!
|