Busybox compilieren

fischefr

Mitglied
Mitglied seit
30 Okt 2004
Beiträge
207
Punkte für Reaktionen
0
Punkte
16
Ich habe mir jetzt mal versuchsweise ein Busybox compiliert - funktioniert.
Die Frage an euch wär jetzt:
Gibt es Optionen, die aktiviert sein MÜSSEN, wenn ich die Original-Busybox durch die neue ersetzen will?
Ich denke dabei an Dinge wie
- devfs
- init
Was passiert, wenn ich da etwas vergesse? Recovery-Fall ? Habe mir zwar die Recovery-Software schicken lassen, bin aber nicht unbedingt scharf drauf, sie auszuprobieren (müsste erst mal Windows installieren)
 
Hi.
Ich kann dir jetzt nicht genau sagen welche Optionen unbedingt benötigt werden. Aber ohne die init-Funktion wird wohl nicht viel gehen.
Wenn die Box aufgrund eines fehlenden Applets nicht mehr bootet, dann musst du die Firmware über den Bootloader flashen (auch recovern genannt).

MfG Oliver
 
Ich hab auch noch eine andere Frage:
Ich hätte mir jetzt die Busybox so angepasst, dass sie dem Original möglichst nahe kommt, aber jetzt kommt beim Starten der neuen nichts als der String "SIGBUS" - was heißt das?
 
heini66 schrieb:
wo wir denn gerade beim thema sind...
hab die 1.1.2 drauf. box läuft damit...
nur:
wenn ich nen reboot eintippe, sagt die:
reboot
applet not found.

hum... kanns einer flicken?
Hi.
Du hast im "make menuconfig" reboot nicht ausgewählt.

MfG Oliver
 
Als Startpunkt für eine eigene Busybox würde ich die Konfiguration der AVM busybox nehmen. Diese findet man im Open Source Paket von AVM.
 
aaah, ich hab mich schon gefragt, ob ich fragen soll, ob mir jemand eine .config anfertigen könnte, die der von AVM entspricht. Das hat sich mit dem Hinweis dann erledigt :-)
Danke!

Noch eine Frage:
"build busybox as a static binary (no shared libs)": Mein erster Versuch war es, hier keinen Haken zu setzen. Ergebnis: sie lief auf der Box nicht.
2. Versuch, diesmal mit Haken: ging. Jetzt seh ich gerade, dass AVM hier auch keinen Haken setzt...
Habe es jetzt gerade nochmal probiert: ./busybox: can't load library 'libgcc_s.so.1'
Mit der Dateigröße komm ich so auf jeden Fall nicht runter auf die von AVM, meine busybox ist immer größer :-(
 
Zuletzt bearbeitet:
Hi.
1. static (bzw. statisch) heißt, dass das Binary keine Libraries benötigt.
Der Gegensatz ist dynamisch.
Jetzt ist es so, dass auf der FritzBox die libgcc_s.so.1 nicht dabei ist. In deiner toolchain ist es aber. Deswegen musst du den Compiler anweisen die libgcc_s.so.1 statisch zu linken. Das geht mit dem Flag "-static-libgcc". Such mal nach diesem Text im dsmod. Irgendwo müsste das vorkommen...

2. Hast du dein Binary mit "mipsel-linux-strip busybox" gestript? Mit dem gcc-3.4.x sollte die busybox bei gleichen Optionen eigentlich kleiner sein als die von AVM.

MfG Oliver
 
olistudent schrieb:
Hi.
1. static (bzw. statisch) heißt, dass das Binary keine Libraries benötigt.
Der Gegensatz ist dynamisch.
Jetzt ist es so, dass auf der FritzBox die libgcc_s.so.1 nicht dabei ist. In deiner toolchain ist es aber. Deswegen musst du den Compiler anweisen die libgcc_s.so.1 statisch zu linken.
Bin dahin ist mir das schon klar, hab ich ja auch gemacht mit dieser Option in make menuconfig denke ich. Bitte korrigieren, falls ich falsch liege
olistudent schrieb:
Das geht mit dem Flag "-static-libgcc". Such mal nach diesem Text im dsmod. Irgendwo müsste das vorkommen...
Ähm.. wo? Verstehe nur Bahnhof. Wird das flag automatisch gesetzt, wenn ich die libs einbinden lasse mit dieser Option in make menuconfig?
olistudent schrieb:
2. Hast du dein Binary mit "mipsel-linux-strip busybox" gestript? Mit dem gcc-3.4.x sollte die busybox bei gleichen Optionen eigentlich kleiner sein als die von AVM.
gestript? Was ist das und was passiert dabei? Ich vermute mal, die Datei wird dadurch irgendwie kleiner....?! Hab ich definitiv nicht (sonst wüsste ich das *g*). Werd ich mal probieren, wenn mir dennoch jemand mal kurz sagt, was dabei genau entfernt wird, wär das nett (.. man kann nie zuviel wissen *g*)

Auch wenn ichs immer wieder vergesse: DANKE, ihr seid toll!

Nachtrag: also strip bringt bei mir kein einziges Byte, nicht mal eine Rückmeldung an der Console - ist mipsel-linux-strip busybox wirklich so korrekt? Also Programmname und als Parameter die zu stripende Anwendung?

Code:
root@notebook:~/busybox-1.1.2# ls -la busybox
-rwxr-xr-x  1 root root 595516 2006-04-13 17:12 busybox
root@notebook:~/busybox-1.1.2# ../ds-0.2.4/toolchain/target/bin/mipsel-linux-strip ./busybox
root@notebook:~/busybox-1.1.2# ls -la busybox
-rwxr-xr-x  1 root root 595516 2006-04-13 17:13 busybox
root@notebook:~/busybox-1.1.2#

Ähm, wieso gcc 3.4 ? Ich hab den 4.1er in Gebrauch, stimmt damit was nicht?

Nachtrag: Mir ist gerade was aufgefallen! Man beachte die letzten Zeile von make:
Code:
 CC libbb/llist_free.o
  AR cru libbb/libbb.a
  LINK busybox_unstripped
  STRIP busybox
  DOC busybox.pod
  DOC BusyBox.txt
  DOC BusyBox.1
  DOC BusyBox.html

Ich glaub der stript automatisch - die Datei ist aber trotzdem größer als die von AVM
 
Zuletzt bearbeitet:
1. Die Option "-static-libgcc" muss ins Makefile. Ich hab nur noch nicht geschnallt warum es nicht immer an der selben Stelle steht.
Für die busybox muss es zu den LDFLAGS. Schau dir mal die busybox.mk vom dsmod an...

2. Schuldigung, die busybox wird automatisch gestript. Hatte ich vergessen.
3. Ähm, ja. Ich hab gcc 4.0.1 vom dsmod...
4. Du hast aber schon den Crosscompiler genommen, oder?
Poste mal die Ausgabe von "file busybox".

MfG Oliver
 
olistudent schrieb:
1. Die Option "-static-libgcc" muss ins Makefile. Ich hab nur noch nicht geschnallt warum es nicht immer an der selben Stelle steht.
Für die busybox muss es zu den LDFLAGS. Schau dir mal die busybox.mk vom dsmod an...

2. Schuldigung, die busybox wird automatisch gestript. Hatte ich vergessen.
3. Ähm, ja. Ich hab gcc 4.0.1 vom dsmod...
4. Du hast aber schon den Crosscompiler genommen, oder?
Poste mal die Ausgabe von "file busybox".

MfG Oliver

Ich habs jetzt bei "Any extra CFLAGS options for the compiler" eingetragen. Ergebnis: läuft, hat jetzt nur noch 443352 Bytes, das Original hat 507296 :-)

Aber vielleicht kann mir einer mal erklären, was ich das jetzt überhaupt gemacht hab *g* und vor allem auch das "Warum". Wenn ichs richtig verstehe, wird jetzt alles dynamisch gelinkt mit Ausnahme der gcc-library, richtig?

Nachtrag:
Habs geflasht, aber wohl irgendwas falsch gemacht. Auf jeden Fall war ein Recovery fällig!

2. Versuch: heureka, hat geklappt!

Wie ist das beim flashen mit den Versionsnummer? Dass man nicht einfach so runterflashen kann, hab ich mitbekommen aber geht mehrmaliges flashen der gleichen Versionsnummer?
 
Zuletzt bearbeitet:
kann man ein Busybox von eine DBox2 oder Dreambox evtl. einsetzen?

Grüße,

Sicka01
 
Problematisch, da andere Versionen der uClibc. Versuchen kannst du es ja mal im RAM, aber ist auf keinen Fall ideal bzw. Abstürze vorprogrammiert.
 
danisahne schrieb:
Problematisch, da andere Versionen der uClibc. Versuchen kannst du es ja mal im RAM, aber ist auf keinen Fall ideal bzw. Abstürze vorprogrammiert.

Danke für die schnelle Antwort. Wenn Abstürze vorprogrammiert sind werde ich ein andere Lösung außer alles neu zu kompilieren suchen. Eigentlich brauche ich nur die crond und crontab.

Grüße,

Sicka01
 
Hi.
Die dbox2 hat einen Motorola RISC-Prozessor. Ich denke nicht, dass da Mipsel-Binaries drauf laufen...

MfG Oliver
 
fischefr schrieb:
Ich habe mir jetzt mal versuchsweise ein Busybox compiliert - funktioniert.

könntest du bitte kurz erklären wie du dabei vorgegangen bist?
ich möchte eine busybox und andere programme für den kernel 2.4 kompilieren.
danke!
 
TriaxMan schrieb:
könntest du bitte kurz erklären wie du dabei vorgegangen bist?
ich möchte eine busybox und andere programme für den kernel 2.4 kompilieren.
danke!

Hast du mal auf das Datum des Postings geschaut? Kann ich dir beim besten Willen nicht mehr sagen. Sollte aber alles im Thread stehen, habe mich da von Danisahne leiten lassen.
 
Ich habe mir das aktuelle ds-mod geholt und alles laut Anleitung compiliert usw. Ich kann eigene Programme erstellen und scheint soweit in Ordung.
Ein Problem habe ich doch mit dem Erstellen einer Busybox.
Info:
Ich benutze die originale Software von AVM, also kein ds-mod installiert auf der FB. Also möchte ich auch eine externe busybox compilieren die ich mir per wget in /var/tmp hole. (Ihr wisst wie ich das meine.)

Ich habe mir von der Busybox Website die aktuelle 1.10 geholt, entpackt und mit "make menuconfig" und "make" compiliert.
Davor habe ich auch "export PATH=/home/chris/data/ds26-15.2/toolchain/target/bin:$PATH" gemacht.

Das Problem:
Die entstehende Busybox Datei ist nicht für MIPS sondern für i386!
Bei der Busybox hab ich nun mal keine "configure" Datei wo ich so angeben kann:
LDFLAGS="-static -O2" ./configure --build=i386-linux-gnu --target=mipsel-linux --host=mipsel-linux

sondern da hab ich "make menuconfig" und finde keine Stelle wo ich MIPS einstelle.

Hat jemand eine Idee?
 
Kostenlos!

Statistik des Forums

Themen
248,922
Beiträge
2,305,230
Mitglieder
378,646
Neuestes Mitglied
atrora