So ganz schlau werd ich aus den Ausgaben noch nicht. AVM hat im Kernel eine Funktion eingebaut die den Anfang der jffs2 Partition sucht.
Das würde erklären warum ein Ändern der jffs2_size Variable keine Auswirkungen hat. Aber ein Flashen über push_firmware müsste das jffs2 auf alle Fälle zurück setzen. Vielleicht kannst du das mal probieren indem du eine Datei in /data erstellst und nachschaust, ob sie nach dem Flashen noch da ist.
Eine andere Erklärung wäre, dass AVM hier wieder was am Kernel geändert hat. Wobei ich in den 7570 Sourcen nichts dazu gefunden hab. Für die 7270 wurde eine Höchstgrenze von 50 Blocks für das jffs2 eingebaut, da es einige v3 Versionen gab bei denen die Environment Variable jffs2_size nicht gesetzt war (Kommentar im Source).
Ich hab jetzt mal mit Gewalt ein grösseres Image gebaut:
install: 26 getting mtd to install...
install: -----------------------------------------------------
bootloader_size 0x00020000
jffs2_size 0x002e0000
Kernel_without_jffs2_size 13107200
kernel_image_size 14179080
kernel_mtd_size 16121856
Kernel_Start_Add=268566528
Kernel_End_Addr=282745608
Kernel_without_jffs2_End_Addr=281673728
install: Image would overlap - jffs2 will be deleted ...
install: -----------------------------------------------------
install: kernel_size=16121856
install: kernel_update_start=268566528
install: kernel_update_len=16121856
/var/mod/root # df -h
Filesystem Size Used Available Use% Mounted on
/dev/root 12.7M 12.7M 0 100% /
/dev/mtdblock5 1.8M 388.0K 1.4M 22% /data
/var/mod/root #
Danach wieder meinen Kernel drauf:
install: 26 getting mtd to install...
install: -----------------------------------------------------
bootloader_size 0x00020000
jffs2_size 0x001c0000
Kernel_without_jffs2_size 14286848
kernel_image_size 11328264
kernel_mtd_size 16121856
Kernel_Start_Add=268566528
Kernel_End_Addr=279894792
Kernel_without_jffs2_End_Addr=282853376
install: -----------------------------------------------------
install: kernel_size=16121856
install: kernel_update_start=268566528
install: kernel_update_len=14286848
/var/mod/root # df -h
Filesystem Size Used Available Use% Mounted on
/dev/root 9.9M 9.9M 0 100% /
/dev/mtdblock5 1.8M 388.0K 1.4M 22% /data
/var/mod/root #
Wichtig scheint hier kernel_update_len in /var/install:
if [ $kernel_image_size -le $Kernel_without_jffs2_size ] ; then
kernel_update_len=$Kernel_without_jffs2_size
else
if [ ! "$jffs2_size" = "0x0" ] ; then
echo install: Image would overlap - jffs2 will be deleted ... ;
fi
kernel_update_len=$kernel_mtd_size
fi
Möglicherweise prüft /var/flash_update.ko, ob kernel_update_len=$kernel_mtd_size. In diesem Fall wird jffs2 gelöscht und neu erstellt. Anderenfalls liegt ein Teil des Flash-Bereiches ab sofort brach:
update_parameter=flash_update_file0="/var/tmp/kernel.image,268566528,14286848,crc=1"
insmod /var/flash_update.ko $update_parameter
16.121.856-14.286.848=1.835.008=0x001c0000=jffs2_size
Von den 14.286.848 wird nun beim flashen jffs2_size abgezogen:
14.286.848-1.835.008=12.451.840
Das entspricht dann den oben gesehenen 9.9M + 1.8M = 12.255.232. Die restlichen knapp 200k dürften beim Bootloader et.al. hängen bleiben.
Soweit zur Theorie, wie überrede ich Freetz nun, folgendes zu machen:
update_parameter=flash_update_file0="/var/tmp/kernel.image,268566528,16121856,crc=1"
insmod /var/flash_update.ko $update_parameter
Damit würde ich in der Theorie erreichen, dass wieder der gesamte Flash Speicher zur Verfügung steht.