Hi,
ich hab mal was gebastelt, was für die Boxen mit wenig Flash interessant sein könnte.
Und zwar werden die shared libraries verkleinert. Unnötige Symbole (Funktionen / Variablen) werden dabei aus den libs entfernt. Mit hilfe von mklibs.py. Außerdem kümmert sich mklibs.py auch darum, dass nur die libs im Image landen, die auch wirklich benötigt werden.
mklibs.py benötigt zum verkleinern der shared libs die sog. _pic.a files. In den meisten fällen reicht es im jeweiligen .mk file der lib beim configure das bauen von den static libs anzuschalten (.a files sind static libs) und diese dann in /toolchain/build/gcc-4.2.0-uClibc-0.9.28/mipsel-linux-uclibc/lib zu kopieren. Und ggf. einen Link zu erstellen der dann mit _pic.a endet. Oder halt umbenennen.
Denke das sollte in den jeweiligen .mk files machbar sein. Vorhanden sind diese _pic files im ds26-15.2 für die uclibc libs. Ich hab selber bei mir dann noch für die libcrypto, libssl und liblzo diese erstellt. Interessant dürfte das halt hauptsächlich für die größeren Libs sein.
Die libs, für die kein _pic.a vorhanden ist, werden sofern benötigt von mklibs.py einfach in das destdir umkopiert.
Der Nachteil des ganzen ist dann allerdings, das man nicht mal eben dann noch irgendwelche Tools per ftp .. oder wget nachladen kann... weil ggf. mklibs die Funktionen aus den shared libs entfernt hat, die das jeweilige tool evtl braucht. Aber für die Boxen mit wenig Flash denke ich ist das allemal interessant.
Ich hab das ganze gemacht, weil ich mir mit dem aktuellen sp-to-fritz script für meinen T-Sinus W500V ein Image mit aktuellen Kernel gebaut hab. (aus dem letzten 7150 Image)
Da ich aber zusätzlich iptables und openvpn brauche hab ich das entstandene Image dann als Basis für den dsmod genommen. Da beim T-Sinus W500V aber 3MB vom Flash für den Anrufbeantworter abgezwackt werden(DS_KERNEL_MTD_SIZE=71) war das entstandene Image dann 435200 bytes zu groß.
Also der Reihe nach "Replace AVM web server by httpd", "Remove UPnP daemon", "Remove libtr069" ausgewählt.... dann war das Image aber immer noch 283648 bytes zu gross.
Naja und mit Hilfe von mklibs.py und meinem Umbau war das Image dann nur noch 4592640 bytes gross (max. 4653056). Da ist auch noch Platz für bftpd.. oder irgendwas anderes kleines.
Nunja und wieder erwarten bootete die Box sogar direkt beim ersten Versuch noch und es scheint auch alles zu funktionieren.
Da ich mich allerdings mit dem dsmod nicht so dolle auskenne, ist das alles nen bissel gehackt
Vielleicht besteht ja Interesse von den dsmod Leuten das ordentlich einzubauen.
Ich hänge mal das diff mit nen paar Kommentaren an. Und mein etwas umgebautes mklibs.py .. wer interesse hat, kann das ja mal gegen das letzte mklibs.py diffen welches irgendwo im debian repository rumschwirrt.
Unabhängig davon scheint es aber wohl immer noch so, dass iptables mit dem 2.6.13.1er Kernel probleme macht. Ich hab nur iptable_filter iptable_contrack und iptable_SNAT geladen. Dieses brauche ich weil ich bei nen paar Paketen die ins VPN gehen die Source Adresse mit SNAT umpatchen muss. Nur rebootet die Box dann häufig einfach so neu ;(
Eventuell schaue ich mir mal die Kernel Sourcen an und schau mal, was AVM da so alles rumgepatcht hat. Eventuell hatte aber auch der Kernel 2.6.13 dieses Problem schon. Mal sehen....
cya
ich hab mal was gebastelt, was für die Boxen mit wenig Flash interessant sein könnte.
Und zwar werden die shared libraries verkleinert. Unnötige Symbole (Funktionen / Variablen) werden dabei aus den libs entfernt. Mit hilfe von mklibs.py. Außerdem kümmert sich mklibs.py auch darum, dass nur die libs im Image landen, die auch wirklich benötigt werden.
mklibs.py benötigt zum verkleinern der shared libs die sog. _pic.a files. In den meisten fällen reicht es im jeweiligen .mk file der lib beim configure das bauen von den static libs anzuschalten (.a files sind static libs) und diese dann in /toolchain/build/gcc-4.2.0-uClibc-0.9.28/mipsel-linux-uclibc/lib zu kopieren. Und ggf. einen Link zu erstellen der dann mit _pic.a endet. Oder halt umbenennen.
Denke das sollte in den jeweiligen .mk files machbar sein. Vorhanden sind diese _pic files im ds26-15.2 für die uclibc libs. Ich hab selber bei mir dann noch für die libcrypto, libssl und liblzo diese erstellt. Interessant dürfte das halt hauptsächlich für die größeren Libs sein.
Die libs, für die kein _pic.a vorhanden ist, werden sofern benötigt von mklibs.py einfach in das destdir umkopiert.
Der Nachteil des ganzen ist dann allerdings, das man nicht mal eben dann noch irgendwelche Tools per ftp .. oder wget nachladen kann... weil ggf. mklibs die Funktionen aus den shared libs entfernt hat, die das jeweilige tool evtl braucht. Aber für die Boxen mit wenig Flash denke ich ist das allemal interessant.
Ich hab das ganze gemacht, weil ich mir mit dem aktuellen sp-to-fritz script für meinen T-Sinus W500V ein Image mit aktuellen Kernel gebaut hab. (aus dem letzten 7150 Image)
Da ich aber zusätzlich iptables und openvpn brauche hab ich das entstandene Image dann als Basis für den dsmod genommen. Da beim T-Sinus W500V aber 3MB vom Flash für den Anrufbeantworter abgezwackt werden(DS_KERNEL_MTD_SIZE=71) war das entstandene Image dann 435200 bytes zu groß.
Also der Reihe nach "Replace AVM web server by httpd", "Remove UPnP daemon", "Remove libtr069" ausgewählt.... dann war das Image aber immer noch 283648 bytes zu gross.
Naja und mit Hilfe von mklibs.py und meinem Umbau war das Image dann nur noch 4592640 bytes gross (max. 4653056). Da ist auch noch Platz für bftpd.. oder irgendwas anderes kleines.

Nunja und wieder erwarten bootete die Box sogar direkt beim ersten Versuch noch und es scheint auch alles zu funktionieren.
Da ich mich allerdings mit dem dsmod nicht so dolle auskenne, ist das alles nen bissel gehackt

Ich hänge mal das diff mit nen paar Kommentaren an. Und mein etwas umgebautes mklibs.py .. wer interesse hat, kann das ja mal gegen das letzte mklibs.py diffen welches irgendwo im debian repository rumschwirrt.
Unabhängig davon scheint es aber wohl immer noch so, dass iptables mit dem 2.6.13.1er Kernel probleme macht. Ich hab nur iptable_filter iptable_contrack und iptable_SNAT geladen. Dieses brauche ich weil ich bei nen paar Paketen die ins VPN gehen die Source Adresse mit SNAT umpatchen muss. Nur rebootet die Box dann häufig einfach so neu ;(
Eventuell schaue ich mir mal die Kernel Sourcen an und schau mal, was AVM da so alles rumgepatcht hat. Eventuell hatte aber auch der Kernel 2.6.13 dieses Problem schon. Mal sehen....
cya