Fehler beim Starten von Neutrino oder LCars

Kreuzuebersetzer, Diskussion über Änderungen im Tuxbox-CDK und Tuxbox-CVS
ALexH
Image-Team
Beiträge: 146
Registriert: Dienstag 10. September 2002, 20:25

Fehler beim Starten von Neutrino oder LCars

Beitrag von ALexH »

Ich habe mir soeben endlich ein erstes Image erfolgreich erstellt. Leider lässt sich Neutrino und LCars nicht starten. Nach dem Auswählen im Bootmenü kommt folgende Fehlermeldung: "neutrino: relocation error: /lib/libssl.so.0: undefined symbol: i2d_DHparams". Was ist der Grund für diesen Fehler? Habe ich etwas falsch gemacht?

Danke für jede Hilfe!
woglinde
Einsteiger
Einsteiger
Beiträge: 261
Registriert: Donnerstag 15. November 2001, 00:00

Beitrag von woglinde »

Hi,

ich orakel mal, dass die libary-reduction ein symbol zuviel rausgemacht hat, oder du hast einen lib zu wenig installiert.

Gruss Woglinde
ALexH
Image-Team
Beiträge: 146
Registriert: Dienstag 10. September 2002, 20:25

Beitrag von ALexH »

hmm... also eigentlich habe ich selber gar nichts herumgebaut (ich habe auch noch nie ein richtig lauffähiges Image hinbekommen...) Hier mal meine Schritte, welche ich alles gemacht habe:
0. aktuelle cvs ausgecheckt
1. Habe mir mit google alles gesucht, damit configure mit den flash-rules läuft.
2. make all
make flash-ftpd
make flash-telnetd
make flash-neutrino
make flash-enigma (es hat ein font gefehlt, habe es einfach von windows kopiert)
make flash-lcdmenu (irgendwas scheint damit nicht zu stimmen, es sind neutrino und enigma vertauscht, d.h. ich wähle neutrino und es startet enigma und umgekehrt)
make flash-lib (vorher mit google mklibs.py gesucht)
make flash-compress
make flash-compress-complete-jffs2

Habe ich irgendetwas falsch gemacht bzw. vergessen?
genial
Interessierter
Interessierter
Beiträge: 48
Registriert: Donnerstag 10. Oktober 2002, 02:18

Beitrag von genial »

das problem liegt bei mklibs.py. dieses prüft nicht nur die abhängigkeiten und stripped, sondern rekompiliert die libs, wenn es für das jeweilige lib ein 'pic'-file findet und dabei läuft wohl was schief. findet mklibs.py kein 'pic-file für ein lib, dann wird dieses nur gestripped. ich habe die mklibs.py nun so geändert, dass es kein 'pic'-file mehr findet und somit die libs nicht mehr rekompiliert und siehe da, die libs sind zwar jetzt etwas grösser, aber es funktioniert alles wieder wie gewohnt.

in mklibs.py habe ich die zeile:

Code: Alles auswählen

pic_file = find_pic(library)
gegen diese ersetzt:

Code: Alles auswählen

pic_file = ""
desweiteren habe ich bemerkt, dass 'make flash-lib' nicht nicht das "eigene" stripprogramm aufruft, sondern das was beim user im pfad liegt und genau dieses wiederum ist es, was mir meine binaries zerstört hat. deshalb habe ich in der regel für 'flash-lib' diese zeilen:

Code: Alles auswählen

@strip --remove-section=.comment --remove-section=.note `find $(flashprefix)/root/bin/ -path "*bin/?*"` 2>/dev/null || /bin/true
@strip --remove-section=.comment --remove-section=.note --strip-unneeded `find $(flashprefix)/root/lib/tuxbox -name "*.so"` 2>/dev/null || /bin/true
@chmod u+rwX,go+rX-w -R $(flashprefix)/root/
gegen diese ersetzt:

Code: Alles auswählen

@$(target)-strip --remove-section=.comment --remove-section=.note `find $(flashprefix)/root/bin/ -path "*bin/?*"` 2>/dev/null || /bin/true
@$(target)-strip --remove-section=.comment --remove-section=.note --strip-unneeded `find $(flashprefix)/root/lib/tuxbox -name "*.so"` 2>/dev/null || /bin/true
@chmod 755 -R $(flashprefix)/root/
weitere anpassungen der flash-regeln:

in der regel für '.part_tinylogin', das von 'make flash-telnetd' aufgerufen wird, habe ich diese zeile:

Code: Alles auswählen

for i in `find $(targetprefix)/sbin/ -lname "*tinylogin"` ; do cp -a $$i $(flashprefix)/root/bin/ ; done
gegen diese beiden getauscht:

Code: Alles auswählen

for i in `find $(targetprefix)/bin/ -lname "*tinylogin"` ; do cp -a $$i $(flashprefix)/root/bin/ ; done
for i in `find $(targetprefix)/sbin/ -lname "*tinylogin"` ; do cp -a $$i $(flashprefix)/root/sbin/ ; done
in der regel für '.part_neutrino', die über 'make flash-neutrino' aufgerufen wird, habe ich nach der zeile:

Code: Alles auswählen

$(INSTALL) $(targetprefix)/bin/zapit $(flashprefix)/root/bin
diese für die camd2 hinzugefügt:

Code: Alles auswählen

$(INSTALL) $(targetprefix)/bin/camd2 $(flashprefix)/root/bin
dann habe ich mir noch eine eigene flash-regel erstellt, das ein fertiges image auswirft.

Code: Alles auswählen

flash-image: $(flashprefix)/.lib $(flashprefix)/ppcboot-flfs.img
     @rm -rf $(flashprefix)/cramfs $(flashprefix)/jffs2
     @cp -a $(flashprefix)/root $(flashprefix)/cramfs
     @mv $(flashprefix)/cramfs/var $(flashprefix)/jffs2
     @$(INSTALL) -d $(flashprefix)/cramfs/var
     @mv $(flashprefix)/cramfs/tmp $(flashprefix)/jffs2/tmp
     @ln -sf /var/tmp $(flashprefix)/cramfs/tmp
     @echo "/dev/mtdblock/3     /var     jffs2     defaults     0 0" >> $(flashprefix)/cramfs/etc/fstab
     @echo "ramfs     /var/tmp     ramfs     defaults 0 0" >> $(flashprefix)/cramfs/etc/fstab
     @$(INSTALL) -d $(flashprefix)/jffs2/etc/init.d
     @for i in `find $(flashprefix)/cramfs/etc/init.d/ -name "start*"` ; do \
          mv $$i $(flashprefix)/jffs2/etc/init.d/ ; \
          ln -sf /var/etc/init.d/`basename $$i` $$i ; \
     done
     @if [ -d $(flashprefix)/cramfs/etc/network ] ; then \
          ln -sf /tmp/ifstate $(flashprefix)/cramfs/etc/network/ifstate ; \
          mv $(flashprefix)/cramfs/etc/network $(flashprefix)/jffs2/etc/network ; \
          ln -sf /var/etc/network $(flashprefix)/cramfs/etc/network ; \
     fi
     @if [ -e $(flashprefix)/cramfs/bin/tinylogin ] ; then \
          $(INSTALL) -d $(flashprefix)/jffs2/bin ; \
          mv $(flashprefix)/cramfs/bin/tinylogin $(flashprefix)/jffs2/bin/ ; \
          ln -sf ../var/bin/tinylogin $(flashprefix)/cramfs/bin/tinylogin ; \
     fi
     @if [ -d $(flashprefix)/cramfs/etc/ssh ] ; then \
          mv $(flashprefix)/cramfs/etc/ssh $(flashprefix)/jffs2/etc/ssh ; \
          ln -sf /var/etc/ssh $(flashprefix)/cramfs/etc/ssh ; \
     fi
     @cp -a $(targetprefix)/var/tuxbox/ucodes/* $(flashprefix)/jffs2/tuxbox/ucodes/
     @ln -sf tuxbox/ucodes $(flashprefix)/jffs2/ucodes
     @echo "version=0106`date +%Y%m%d%H%M`" >>$(flashprefix)/cramfs/.version
     @echo "comment=Erstellt von `id -un`" >>$(flashprefix)/cramfs/.version
     @rm -f $(flashprefix)/image-cramfs.img $(flashprefix)/image-jffs2.img
     @$(FAKEROOT) $(MKCRAMFS) -p -n "0106`date +%Y%m%d%H%M`" $(flashprefix)/cramfs/ $(flashprefix)/image-cramfs.img
     @$(FAKEROOT) $(MKJFFS2) -b -e 131072 -p -o $(flashprefix)/image-jffs2.img -r $(flashprefix)/jffs2/
     @$(hostappsdir)/flash/flashmanage.pl -i $(flashprefix)/0106`date +%Y%m%d%H%M`.img -o build \
          --part ppcboot=$(flashprefix)/ppcboot-flfs.img \
          --part root=$(flashprefix)/image-cramfs.img \
          --part var=$(flashprefix)/image-jffs2.img
     @rm -rf $(flashprefix)/cramfs $(flashprefix)/jffs2
nun noch ein paar vorbereitungen bevor man die makes aufrufen kann.
- in das verzeichnis 'dbox2/cdkroot/var/tuxbox/ucodes' die ucodes kopieren, denn ein image ohne ucodes läuft bekannterweise nicht sonderlich gut. :D

- in das verzeichnis 'dbox2/cdkflash' kopiert man das image des flfs, das ppcboot-1.1.6 enthält, mit dem namen 'ppcboot-flfs.img' (bekommen kann man dieses image in dem man aus einem aktuellen image (ich habe das aktuelle alexw-1.6.3 genommen) über die expertenfunktion des softwareupdates das flfs ausliest und dann die datei 'mtd1.img' über ftp von der box holt und in 'ppcboot-flfs.img umbenennt).

- wer die expertenfunktionen in neutrino haben möchte, muss nun noch in der datei 'tuxbox-cvs/cdk/etc/init.d/start_neutrino' dem aufruf von neutrino die parameter ' -su -flash' hinzufügen, so dass der aufruf so aussieht:

Code: Alles auswählen

neutrino -su -flash
und vor dem aufruf von 'make flash-image' die datei 'eraseall' in 'dbox2/cdkflash/root/bin/' kopieren (diese kann man sich auch aus einem alexw-cramfs holen)

- wer auch die netzwerkfunktionalität will, der muss in der datei 'dbox2/cdkroot/etc/network/interfaces' die kommentarzeichen '#' entfernen und kann auch gleich die netzwerkdaten anpassen, wenn er will.

der letzte punkt lässt sich auch nach dem flashen über das com-terminal des dbox-bootmanger bzw. über telnet ändern, da diese datei im jffs2 liegt. ;)


so und nun die möglichen aufrufe:
->make flash-ftpd
->make flash-telnetd
->make flash-ssh
->make flash-sshd
->make flash-neutrino
->make flash-enigma
->make flash-lcars
->make flash-fx2
->make flash-lcdmenu
->make flash-image

nach 'make flash-image' hast du in 'dbox2/cdkflash' die dateien 'image-cramfs.img' die das cramfs(root) enthält, die datei 'image-jffs2.img' die das jffs2(var) enthält und das image selbst in der form '0106jahrmonattagstundeminute.img'.
eventuell sollte man noch die grösse der image-cramsf.img ansehen, das auf jedenfall nicht grösser als 6,75 MB (7.077.888 Bytes) sein darf und das image noch mit den neuen flashtools öffen und schauen ob alles passt

getestet habe ich das ganz allerdings nur nur mit ftpd, telnetd und neutrino, da mich der rest wenig interessiert. :D

ach ja, und das ganze läuft wahrscheinlich ohne boot- und lcd-logo, da die partitionsangaben im ppcboot von alexw etwas anders sind als die standart-partitionierung des cdks (beim alexw beginnt das jffs2 bei 0x720000 und im standartkernel-des cdk bei 0x700000) und es vorkommen kann, dass der pfad zu den logos und die logos selbst noch vor 0x72000 liegen und smit von alexws ppcboot nicht gefunden werden können. aber zum glück läuft ein image mit dem aktuellem ppcboot auch ohne logos. :)
typed by genial Bild
genial
Interessierter
Interessierter
Beiträge: 48
Registriert: Donnerstag 10. Oktober 2002, 02:18

Beitrag von genial »

ich hab noch was vergessen. ich habe auch noch die regel für '$(flashprefix)/.flash' angepasst, damit das image auch die datei '/bin/switch' enthält, die beim shutdown der box aufgerufen wird.

diese zeile:

Code: Alles auswählen

$(flashprefix)/.flash: .busybox .driver .modutils
für die tuxbox_tools erweitern:

Code: Alles auswählen

$(flashprefix)/.flash: .busybox .driver .modutils .tuxbox_tools
und nach der zeile:

Code: Alles auswählen

$(MAKE) -C etc install targetprefix=$(flashprefix)/root
diese einfügen:

Code: Alles auswählen

$(INSTALL) $(targetprefix)/bin/switch $(flashprefix)/root/bin
ich hoffe es funktioniert dann soweit. ;)
typed by genial Bild
Ethan Hunt
Interessierter
Interessierter
Beiträge: 80
Registriert: Dienstag 5. Februar 2002, 16:55

Beitrag von Ethan Hunt »

wow, geniale anleitung :D

Wäre es vllt. möglich, dass ein Developer die ganzen Änderungen ins cvs aufnimmt? Dann müsste man nicht immer alles selbst ändern.
woglinde
Einsteiger
Einsteiger
Beiträge: 261
Registriert: Donnerstag 15. November 2001, 00:00

Beitrag von woglinde »

Hi,

genial kannst du bitte naechstesmal oder auch jetzt einen Patch machen,
dann baue ich den auch ins cdk ein und alle haben was davon und muessen es hier nicht abschreiben.

Gruss Woglinde
genial
Interessierter
Interessierter
Beiträge: 48
Registriert: Donnerstag 10. Oktober 2002, 02:18

Beitrag von genial »

ich bin grade dabei ein diff dafür zu erstellen. ich werde es aber morgen erst nochmal testen, da ich noch ein paar kleinere veränderungen daran vorgenommen habe.
typed by genial Bild
ALexH
Image-Team
Beiträge: 146
Registriert: Dienstag 10. September 2002, 20:25

Beitrag von ALexH »

Erst einmal einen grossen Dank für diese genial(e) Anleitung!

Ich habe gerade mal nach dieser Anleitung ein Image erstellt, das Erstellen selber hat auch prima funktioniert, das Image lässt sich auch prima auf die Box laden aber dann gibts Probleme: Die Box zeigt kurz ganz normal das Debug-Logo an, danach ist jedoch das Lcd-Display einfach schwarz und die Box scheint nichts mehr zu machen. Im Log vom Bootmanager kommt folgendes:
DRAM: 32 MB
FLASH: 8 MB
Scanning JFFS2 FS: . done.
find_inode failed for name=tuxbox
load: Failed to find inode
LCD: find_inode failed for name=tuxbox
load: Failed to find inode
ready - can't find logo in flash - try network
BOOTP broadcast 1
Habe ich etwas falsch gemacht? Fehlt irgend eine Datei?
Monitor456
Interessierter
Interessierter
Beiträge: 83
Registriert: Mittwoch 25. Juli 2001, 00:00

Beitrag von Monitor456 »

@AlexH
Kann es sein, das die logo-fb und logo-lcd fehlen?
Hab mal gelesen, das man im Terminal mit Strg+C abrechen kann, dann läuft die Box halt ohne Logo's weiter, dann per ftp entsprchend Logo's reinkopieren (?)

[Beneidenswert, das Du soweit bist; ich hab' mit der GENIAL-Makefile immernoch stripp-Fehlermeldungen von wegen "....file-format not recognized..."]


Noch ne dumme Frage: wohin muß die mklibs.py kopiert werden ?

Cu
genial
Interessierter
Interessierter
Beiträge: 48
Registriert: Donnerstag 10. Oktober 2002, 02:18

Beitrag von genial »

Monitor456 hat geschrieben:[Beneidenswert, das Du soweit bist; ich hab' mit der GENIAL-Makefile immernoch stripp-Fehlermeldungen von wegen "....file-format not recognized..."]
das macht gar nichts bzw. ist normal (zwischen 'warning' und 'error' ist ein grosser unterschied). ;)

die mklibs.py gehört ins cvs-cdk verzeichnis


wartet doch noch ein bisschen, ich hab noch einiges angepasst und das diff ist so gut wie fertig. erste test liefen erfolgreich ab. :)
typed by genial Bild
ALexH
Image-Team
Beiträge: 146
Registriert: Dienstag 10. September 2002, 20:25

Beitrag von ALexH »

Ok, dann warte ich mal auf das Diff und freue mich schon mal auf das, was kommen wird...
genial
Interessierter
Interessierter
Beiträge: 48
Registriert: Donnerstag 10. Oktober 2002, 02:18

Beitrag von genial »

woglinde hat alles was er braucht, nu liegts an ihm. 8)
typed by genial Bild
ALexH
Image-Team
Beiträge: 146
Registriert: Dienstag 10. September 2002, 20:25

Beitrag von ALexH »

Sind die Änderungen eigentlich inzwischen im CVS? Wie kann man diese benutzen?
genial
Interessierter
Interessierter
Beiträge: 48
Registriert: Donnerstag 10. Oktober 2002, 02:18

Beitrag von genial »

ja, sie sind im aktuellem head integriert. die benutzung steht in in 'cdk/doc/readme-flash.de'. ;)
typed by genial Bild