Ticket #870 (new defect)

Opened 3 months ago

Last modified 4 weeks ago

3170: Erstelltes FW-Image für Boxen mit 4M Flash zu gross

Reported by: rresch Owned by:
Priority: normal Milestone: freetz-1.2
Component: packages Version: devel
Severity: major Keywords:
Cc: Product ID: 3170
Firmware Version:

Description

Ich bin mit dem Problem, daß sich nichtmal mit allen abgeschaltetetn Optionen ein Freetz-Image für die 3170 bauen läßt (weder 1.1.3 noch trunk) in den IRC-Channel gekommen.

Dort hat mir 'dileX' aufgezeigt, daß es womöglich daran liegt, daß hier die uClibc 2x vorkommt - einmal 0.29.* und einmal 0.30.3

Meine Erfahrung mit der uClibc zeigen (fli4l), daß das nicht bei allen Libs nötig ist, da die 0.30.3 in weiten Zügen abwärtskompatibel ist und somit eine einfache Verlinkung auf die 0.30.3 reicht. Man müßte halt lib-weise sicherstellen, daß alles OK ist. Dabei kann ich ggf. gerne behilflich sein.

Die 7050 ist übrigens auch so ein Kandidat, wo sich keine Firmware (mehr) bauen läßt.

Attachments

config_3170.txt Download (14.1 KB) - added by rresch 3 months ago.
Meine maximal ausgemistete .config
du-k_unpacked_firmware_lib-dir.txt Download (16.3 KB) - added by dileks 3 months ago.
Unpacked-FW (W701v): lib dirs
du-k_unpacked_firmware_usr-dir.txt Download (3.8 KB) - added by dileks 3 months ago.
Unpacked-FW (W701v): usr dirs
du-k_unpacked_firmware_var-dir.txt Download (476 bytes) - added by dileks 3 months ago.
Unpacked-FW (W701v): var dirs
remove_about.patch Download (1.7 KB) - added by MyRaCoLi 4 weeks ago.
Remove Easteregg saves 8kByte

Change History

  Changed 3 months ago by rresch

Besserer Titel wäre wohl:

3170: Erstelltes FW-Image für Boxen mit 4M FlashRAM zu gross

Kann man den Titel bitte ändern?

Changed 3 months ago by rresch

Meine maximal ausgemistete .config

  Changed 3 months ago by dileks

Das Bsp. "doppelte" uClibc betrifft den Reporter nicht. Ich habe meine erstellte FW für W701v entpackt. Da ich z.Zt. die neue Toolchain teste, ist die Problematik, dass die 29er Libs von AVM kommen, die 30er selbst gebaut sind. Problem hab ich schon im Januar olistudent geschildert.

Weiterhin bat ich rresch im IRC die letzte Original-AVM und seine erstellte Freetz-FW Image zu entpacken und zu vergleichen:

cd freetz-trunk
tools/fakeroot/bin/fakeroot -- ./fwmod -u -d unpacked_firmware images/$FW_IMAGE_FILE

Ein altes Posting zum Flashen über Adam2Ftp-Service findet sich unter [1]:

"Folgende Firmware-Image- und Kernel-Image-Datei wurden erzeugt: "W701V_04.26-ds-0.2.9_26-14.de_20070418.image" mit 4,43 MByte (4.648.960 Byte) im ds-mod-Root-Verzeichnis "kernel.image" mit 4,18 MByte (4.392.200 Byte) im Verzeichnis build/modified/firmware/var/tmp unterhalb vom ds-mod-Root-Verzeichnis"

Mittels ds-mod konnte man noch 4M FW-Images erstellen, jetzt nicht mehr. Vor ein paar Wochen schilderte ein 7050-Besitzer er habe das gleiche Problem.

Die Frage, die man weiter inspizieren muss, ist warum wird das Image um fast 3M mehr aufgebläht.

[1]  http://www.ip-phone-forum.de/showpost.php?p=848694

  Changed 3 months ago by dileks

Laut Reporter/Tester betrifft das zu grosse FW-Image trunk als auch 1.1.3-stable SVN Branch. Ich bat darum, die Dateigrösse hier im Ticket anzufügen.

follow-up: ↓ 13   Changed 3 months ago by oliver

  • component changed from freetz-linux to packages
  • milestone changed from freetz-1.1.4 to freetz-1.2

Es ist bekannt, dass man für 3170 und 7050 alle möglichen Remove Patches auswählen muss. Evtl. können wir das mit einer neuen Toolchain und minimal locale support etwas verbessern.

  Changed 3 months ago by dileks

Ich hatte mit rubberduck (rresch) im IRC eine interessante Diskussion über "Einsparpotential".

Ich habe hier für die W701v die erstelle FW entpackt und auf "Speicherfresser" überprüft:

du -k --max-depth=3 unpacked_firmware/ | sort -nr

Backlog #fritzbox (17-Jun-2010):
[11:25:01] <dileX> 10944 unpacked_firmware/original/filesystem/lib
[11:25:01] <dileX> 9480 unpacked_firmware/original/filesystem/usr
[11:25:01] <dileX> 7580 unpacked_firmware/original/firmware/var

Ich hänge die einzelnen "du -k …" Outputs als Attachment an.

Changed 3 months ago by dileks

Unpacked-FW (W701v): lib dirs

Changed 3 months ago by dileks

Unpacked-FW (W701v): usr dirs

Changed 3 months ago by dileks

Unpacked-FW (W701v): var dirs

follow-up: ↓ 21   Changed 3 months ago by dileks

Idee OpenSSL entschlanken:

[11:36:56] <dileX> 1004        unpacked_firmware/original/filesystem/lib/libcrypto.so.0.9.8
[11:37:13] <dileX> boah, 1M für libcrypto.so
[11:37:39] <rubberduck> dileX: openvpn hamwer in fli4l auch 'speziell' behandelt, damit die openssl kleiner wird.
[11:37:51] <rubberduck> das macht einiges auch - danach warens glaub nur noch 400k
[11:38:03] <dileX> $ file unpacked_firmware/original/filesystem/lib/libcrypto.so.0.9.8
[11:38:03] <dileX> unpacked_firmware/original/filesystem/lib/libcrypto.so.0.9.8: ELF 32-bit LSB shared object, MIPS, MIPS32 version 1 (SYSV), dynamically linked, stripped
[11:38:58] <dileX> rubberduck: diese infos zu openssl wären hilfreich
[11:40:45] <rubberduck> www.fli4l.de - sources-paket von 3.4.0 - da drinne iss alles, was ich habe.

  Changed 3 months ago by dileks

HTML-Webseiten entschlacken (5M immerhin)?

Kann der httpd Web-Server von busybox sowas wie das mod-gzip Modul bei Apache?
Kontraproduktiv SquashFS-komprimiertes root-FS vs. gzip-komprimierte HTML-Seiten?

[11:42:29] <dileX> 5008        unpacked_firmware/original/filesystem/usr/www/all/html
[11:42:29] <dileX> 4704        unpacked_firmware/original/filesystem/usr/www/all/html/de
[11:42:41] <dileX> was ich vorher schon befürchtet habe
[11:43:13] <dileX> 5M für html seiten, hammer
[11:43:27] <rubberduck> allerdings.
[11:44:26] <dileX> keine ahnung ob der httpd bei busybox sowas wie mod-gzip kann
[11:44:50] <rubberduck> das wär ja fürn popo, weil squashfs eh gut komprimiert ist.
[11:45:23] <dileX> die html-seiten würden ja gzip-komprimiert im fs liegen :-)

  Changed 3 months ago by dileks

Datei-Leichen?

[11:49:26] <dileX> 40        unpacked_firmware/original/firmware/var/flash_update.o
[11:49:43] <dileX> objekt-datei braucht man da auch nicht :-)

  Changed 3 months ago by dileks

Unstripped Binaries (hier: Kernel-Module)?

[11:16:51] <rubberduck> dileX: build/modified/ <- liegt da ned das gemoddete filesystem eh schon ausgepackt?
[11:17:47] <rubberduck> robert@hermine:~/avm/freetz-3170/build/modified/filesystem/lib/modules/2.6.13.1-ohio/kernel/drivers/atm/avm_atm$ file tiatm.ko
[11:17:51] <rubberduck> tiatm.ko: ELF 32-bit LSB relocatable, MIPS, version 1 (SYSV), not stripped
[11:17:52] <dileX> ich glaube ja
[11:18:03] <rubberduck> da läßt sich mit den passenden compile-optionen sicher noch luft rausholen (strippen!)

  Changed 3 months ago by dileks

Unnötige Libs löschen?

Frage: Sind verschiedene u.g. Libs unnötig bei:
* Boxen ohne USB- oder ISDN-Anschluss
* abgewähltem UPnP
* Nicht-Auswahl von VPN Package
* etc.

[11:12:42] <dileX> libcapi20.so.3.0.4 ??? trotz abgewählter fax-funktionalität
[11:13:00] <rubberduck> CAPI auf einer 3170 ist sowieso eher seltsam.
[11:13:07] <rubberduck> die hat kein ISDN/PON
[11:13:29] <dileX> libconverttopdf.so.1.0.0
[11:14:28] <rubberduck> verflixt - wie mache ich make ohne daß das (zu große) image gleich wieder gelöscht wird?
[11:14:35] <rubberduck> ich hab nix zum unpacken....
[11:14:53] <dileX> libike*.so* ? macht das sinn bei VPN abgewählt/benutzt?
[11:15:41] <rubberduck> dileX: huhu?
[11:15:51] <dileX> libupnpdevusb.so.1.0.0 ??? bei kein USB-anschluss in der box?
[11:15:59] <dileX> und UPNP removed
[11:16:01] <rubberduck> die 3170 hat 2x USB
[11:16:14] <dileX> w701v nüscht

  Changed 3 months ago by dileks

Optimieren der uClibC (bei fli4l-Projekt nachfragen)?

[12:17:44] <rubberduck> die uClibc von fli4l (libuClibc-0.9.30.3.so) hat 'nur' 285424 Byte - gegenüber 421580 bei der 3170...
[12:17:51] <rubberduck> irgendwas muß da anders sein.
[12:18:13] <rubberduck> die ham bei avm wohl alles angeschaltet, was anschaltbar geht?
[12:22:06] <dileX> die 3170 hat ne 30er uClibc?
[12:23:19] <dileX> wie gesagt NLS-disabled bringt ca. 250k gewinn
[12:24:45] <dileX> NLS ist aber ein kriterium für ABI-kompatibilität
[12:25:34] <dileX> rubberduck: auch hier wären infos interessant von fli4l zu haben
[12:25:44] <rubberduck> 28er
[12:26:00] <rubberduck> dileX: you are invited

  Changed 3 months ago by rresch

Möglicherweise kann man ja die Anstrengungen mehrerer Projekte zusammenführen.

 http://www.fli4l.de/download/stabile-version/pakete/ - im Paket src - finden sich diverse Makefiles, die teils extrem kleine Versionen generieren.

in reply to: ↑ 4 ; follow-up: ↓ 14   Changed 3 months ago by dileks

Replying to oliver:

Es ist bekannt, dass man für 3170 und 7050 alle möglichen Remove Patches auswählen muss. Evtl. können wir das mit einer neuen Toolchain und minimal locale support etwas verbessern.

rresch/rubberduck hat sämtliche Remove-Patches aktiviert.

IMHO, die Einsparung bei der uClibc (ca. 250k bei NLS disabled) und kompakt bauende Toolchain werden sicherlich keine ca. 3M mehr bei der FW aufwiegen.

in reply to: ↑ 13 ; follow-up: ↓ 15   Changed 3 months ago by MyRaCoLi

Replying to dileks:

rresch/rubberduck hat sämtliche Remove-Patches aktiviert.

Er kann aber noch die Blockgröße auf 128k stellen und dann die Libs eindampfen. Dann passt bei mir in eine 7050 sogar OpenVPN.

in reply to: ↑ 14   Changed 3 months ago by dileks

Replying to MyRaCoLi:

Replying to dileks:

rresch/rubberduck hat sämtliche Remove-Patches aktiviert.

Er kann aber noch die Blockgröße auf 128k stellen und dann die Libs eindampfen. Dann passt bei mir in eine 7050 sogar OpenVPN.

Bei "Advanced Options → SquashFS block size (64 KB)" kann ich hier in freetz-trunk kein 128kB block-size auswählen - manuell FREETZ_SQUASHFS_BLOCKSIZE_131072=y setzen?

$ grep -i squash .config
# FREETZ_SQUASHFS_BLOCKSIZE_ORIG is not set
FREETZ_SQUASHFS_BLOCKSIZE_65536=y
# FREETZ_SQUASHFS_BLOCKSIZE_131072 is not set
# FREETZ_SQUASHFS_BLOCKSIZE_262144 is not set
# FREETZ_SQUASHFS_BLOCKSIZE_524288 is not set
# FREETZ_SQUASHFS_BLOCKSIZE_1048576 is not set

Was meinst du genau mit "…dann die Libs eindampfen"?

follow-ups: ↓ 17 ↓ 19   Changed 3 months ago by MyRaCoLi

[*] Show advanced options [*] Replace kernel Advanced options —→

SquashFS block size (128 KB (EXPERIMENTAL)) —→

(X) 128 KB (EXPERIMENTAL)

Shared libraries —→

[*] Run mklibs on the built root filesystem (Experimental)

 http://www.ip-phone-forum.de/showthread.php?t=193910

in reply to: ↑ 16   Changed 3 months ago by rresch

Reißt ned viel. 4014080 bei 1.1.3 mit 64 kByte Squashfs gegen 4003840 mit replace-kernel und 128 kByte Squashfs

  Changed 3 months ago by oliver

@dileks Magst du vielleicht die Ideen von hier auf der Wiki Seite sammeln?

@rresch Es kann sein, dass der Vorteil durch einen größeren Kernel wieder zunichte gemacht wird…

in reply to: ↑ 16   Changed 3 months ago by dileks

Replying to MyRaCoLi:

Danke für die Hinweise.
Ich habe der Vollständigkeit halber die entsprechenden Optionen für die freetz config dokumentiert.

[*] Show advanced options [*] Replace kernel Advanced options —→ SquashFS block size (128 KB (EXPERIMENTAL)) —→ (X) 128 KB (EXPERIMENTAL)

FREETZ_REPLACE_KERNEL=y
FREETZ_SQUASHFS_BLOCKSIZE_131072=y

Shared libraries —→ [*] Run mklibs on the built root filesystem (Experimental)

FREETZ_STRIP_LIBRARIES=y

  Changed 3 months ago by oliver

  • summary changed from Doppelte Libs in den Images blähen auf to 3170: Erstelltes FW-Image für Boxen mit 4M FlashRAM zu gross

in reply to: ↑ 6   Changed 3 months ago by MaxMuster

Replying to dileks:

Idee OpenSSL entschlanken:

> [11:37:13] <dileX> boah, 1M für libcrypto.so
> [11:37:39] <rubberduck> dileX: openvpn hamwer in fli4l auch 'speziell' behandelt, damit die openssl kleiner wird.
> [11:37:51] <rubberduck> das macht einiges auch - danach warens glaub nur noch 400k

Als Nachfrage an die fli4l-Kenner: Was ist denn damit im OpenVPN noch möglich?
Welche Cipher, tls, DH usw? Mir scheint das recht eingeschränkt zu sein, zumal dann auch noch eine alte 0.9.7i-er Version genutzt wird (aus 2005), wenn ich das richtig sehe?? Ich beziehe das auf "src/fbr/package/openssl-e" (… is a special stripped down version to create small static binaries).

Danke für ein paar Erläuterungen ..

  Changed 2 months ago by oliver

Du bist ja fies. :P

  Changed 2 months ago by cuma

Da gibt es diese Jahr nichts vom Nikolaus. Die 8 KB

  Changed 7 weeks ago by oliver

  • summary changed from 3170: Erstelltes FW-Image für Boxen mit 4M FlashRAM zu gross to 3170: Erstelltes FW-Image für Boxen mit 4M Flash zu gross

Changed 4 weeks ago by MyRaCoLi

Remove Easteregg saves 8kByte

follow-up: ↓ 26   Changed 4 weeks ago by cuma

Wie wäre es den Patch nur für 4Mb Boxen sichtbar zu machen?

in reply to: ↑ 25   Changed 4 weeks ago by MyRaCoLi

Wenn man den anderen das vorenthalten will… Wie fragt man das am besten ab? Mit FREETZ_TARGET_REF="4mb_26" oder FREETZ_KERNEL_REF="4mb_26"? P.S. Wieso rutscht mein Patch runter, wenn ich den update?

Note: See TracTickets for help on using tickets.