/data vergrössern

Jumper99

Neuer User
Mitglied seit
7 Jun 2010
Beiträge
81
Punkte für Reaktionen
0
Punkte
6
Hi,

ich hab mit einem Wollmilchsau Image für meine W920V (16MB) angefangen, satte 13MB gross. Damit blieben für /data etwa 3MB übrig.

Nun habe ich das Image auf knape 10MB verleinert und neu eingespielt. Ich hätte erwartet, das sich nun die /data Partition automatisch auf etwa 5-6MB vergrössert - tut sie aber nicht, sie ist immer noch genau 2.88MB gross.

Hab ich was übersehen?

/var/mod/root # df -h
Filesystem Size Used Available Use% Mounted on
/dev/root 9.9M 9.9M 0 100% /
/dev/mtdblock5 2.9M 468.0K 2.4M 16% /data
/var/mod/root #

Danke und Gruß, Helmut
 
Die Größe des jffs wird von rc.S ins environment geschrieben.
Code:
/var/mod/root # cat /proc/sys/urlader/environment |grep jffs
jffs2_size      30
Mit "echo jffs2_size > /proc/sys/urlader/environment" kannst du die Variable zurücksetzen. Beim nächsten Start sollte das jffs dann neu initialisiert werden. Die Variable wird nach dem Flashen nur neu gesetzt falls die Firmware größer als die letzte ist. Ich vermute, dass AVM die AB-Daten nicht unnötig löschen will.

MfG Oliver
 
/var/mod/root # cat /proc/sys/urlader/environment | grep jffs
jffs2_size 46
/var/mod/root #

Das steht schon da, aber auch nach einem

echo jffs2_size > /proc/sys/urlader/environment

und reboot:

/var/mod/root # df -h
Filesystem Size Used Available Use% Mounted on
/dev/root 10.1M 10.1M 0 100% /
/dev/mtdblock5 2.9M 476.0K 2.4M 16% /data
/var/mod/root #

[ur8_jffs2_parser_function] mtd_info->name physmap-flash.1 mtd_info->index 0 param=0 p_mtd_pat=0x97f6a3bc
[ur8_jffs2_parser_function] try partition kernel (offset 0x20000 len 16121856)
[ur8_jffs2_parser_function] magic 20031985 found @pos 0xca0000, size 3014656
[...]
0x00ca0000-0x00f80000 : "jffs2"
[ur8_mtd_add_notifier] name jffs2
[ur8_mtd_add_notifier] skip jffs2
[...]
[jffs2] xx=mtd5: 002e0000 00020000 "jffs2"
[jffs2] i=mtd5:
[jffs2] jffs2_pat=5
[jffs2] i=002e0000
[jffs2] jffs2_size=46
[jffs2] i=00020000
[jffs2] i="jffs2"
[jffs2] load jffs2 module
JFFS2 version 2.2. (NAND) (C) 2001-2006 Red Hat, Inc.
[jffs2] mount jffs
[jffs2] write env variable jffs2_size to 46
TAM: create JFFS2 directory /data/tam
[...]
 
Zuletzt bearbeitet:
Hm, dann setz die Variable doch mal per Hand auf einen höheren Wert...

MfG Oliver
 
bootloader_size 0x00020000
jffs2_size 0x002e0000
Kernel_without_jffs2_size 13107200
kernel_image_size 11262728
kernel_mtd_size 16121856
Kernel_Start_Add=268566528
Kernel_End_Addr=279829256
Kernel_without_jffs2_End_Addr=281673728
install: -----------------------------------------------------
install: kernel_size=16121856
install: kernel_update_start=268566528
install: kernel_update_len=13107200
install: 26 setting files to install...
install: /var/tmp/kernel.image to start(268566528) size(13107200)

Wieso ist der Kernel ohne jffs2 schon 13MB gross? Sogesehen wären 3014656 Byte schon korrekt. Oder wird *hier* falsch gerechnet?

merging kernel image
kernel image size: 11262720 (max: 16121856, free: 4859136)
Aproximately free time for the answering machine: 2293s (38min 13s)
 
Hast du mal geschaut was während dem Booten ausgegeben wird?
Code:
0x00da0000-0x00f80000 : "jffs2"
Bei mir sind das 30*64KB.

Ich hab jetzt nicht nachgeschaut was AVM da in den Skripten gerechnet wird.

MfG Oliver
 
Hast du mal geschaut was während dem Booten ausgegeben wird?
Code:
0x00da0000-0x00f80000 : "jffs2"
Bei mir sind das 30*64KB.

Ich hab jetzt nicht nachgeschaut was AVM da in den Skripten gerechnet wird.

MfG Oliver

Jan 1 01:00:57 ipv4-gw kernel: 0x00ca0000-0x00f80000 : "jffs2"

46*64KB.
 
Nachdem was oben steht sollten es 74 Blöcke sein!? Du kannst mal die Firmware über den Bootloader (recover-eva, push-firmware oder rukerneltool) flashen. Da wird das jffs2 auf alle Fälle gelöscht und neu angelegt.

MfG Oliver
 
Ich hab mit push_firmware geflashed, keine Veränderung:

/var/mod/root # df -h
Filesystem Size Used Available Use% Mounted on
/dev/root 9.9M 9.9M 0 100% /
/dev/mtdblock5 2.9M 452.0K 2.4M 15% /data
/var/mod/root #

Jan 1 01:01:04 ipv4-gw kernel: [ur8_jffs2_parser_function] mtd_info->name physmap-flash.1 mtd_info->index 0 param=0 p_mtd_pat=0x97f6a3bc
Jan 1 01:01:04 ipv4-gw kernel: [ur8_jffs2_parser_function] try partition kernel (offset 0x20000 len 16121856)
Jan 1 01:01:04 ipv4-gw kernel: [ur8_jffs2_parser_function] magic 20031985 found @pos 0xca0000, size 3014656
Jan 1 01:01:04 ipv4-gw kernel: 0x00ca0000-0x00f80000 : "jffs2"
Jan 1 01:01:04 ipv4-gw kernel: [ur8_mtd_add_notifier] name jffs2
Jan 1 01:01:04 ipv4-gw kernel: [ur8_mtd_add_notifier] skip jffs2
 
Wie ist denn deine Flash Aufteilung in /proc/sys/urlader/environment?

MfG Oliver
 
Wie ist denn deine Flash Aufteilung in /proc/sys/urlader/environment?

/var/mod/root # egrep '(mtd|flash)' /proc/sys/urlader/environment
flashsize 0x01000000
mtd0 0x90000000,0x90000000
mtd1 0x90020000,0x90F80000
mtd2 0x90000000,0x90020000
mtd3 0x90F80000,0x90FC0000
mtd4 0x90FC0000,0x91000000
/var/mod/root #
 
So ganz schlau werd ich aus den Ausgaben noch nicht. AVM hat im Kernel eine Funktion eingebaut die den Anfang der jffs2 Partition sucht.
[ur8_jffs2_parser_function] magic 20031985 found @pos 0xca0000, size 3014656
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).

MfG Oliver
 
Laut Syslog und der Ausgabe von "cat /proc/sys/urlader/environment |grep jffs" wurde auf meiner v2 die Partition /data auf 50 Blocks eingestellt:
Code:
[ur8_jffs2_parser_function] magic 20031985 found @pos 0xc60000, size 3276800
Code:
/var/mod/root # cat /proc/sys/urlader/environment |grep jffs
jffs2_size      50

Hier noch zusätzlich die Ausgabe von df -h
Code:
/var/mod/root # df -h
Filesystem                Size      Used Available Use% Mounted on
/dev/root                 9.0M      9.0M         0 100% /
/dev/mtdblock5            3.1M    392.0K      2.7M  12% /data
/dev/sdb1                69.5G     64.5G      1.2G  98% /var/media/ftp/Icybox
/dev/sda                979.7M     69.9M    909.8M   7% /var/media/ftp/LOGS

Laut Windows hat die "kernel.image" eine Dateigröße von 10.324.744 Bytes.


Also habe ich noch ungenutzten Flash auf meine Box? Das geht ja mal garnicht!!! ;-)
 
Hier ist der Patch. Benötigt dann aber "replace kernel". Da steht auch der Kommentar drin. :)

MfG Oliver
 
Meine Feststellung am Ende war nicht ganz ernst gemeint. :)

Aber der Kommentar in den Sourcen von AVM is geil:
Für 7270v3 mit vergeigter Produktion ...
Ich wusste gar nicht, dass man damit auch geigen kann.
 
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.
 
Um die jffs2-Partition zu löschen müssten wir also die Image Größe auf das Maximum setzen. Ich bin mir nicht ganz sicher, ob das klappt, wenn das Image nicht wirklich so groß ist.

Hast du mal probiert, ob das jffs2 ein Flash per push_firmware/recover-eva überlebt? Dürft eigentlich nicht so sein.

MfG Oliver
 
Um die jffs2-Partition zu löschen müssten wir also die Image Größe auf das Maximum setzen. Ich bin mir nicht ganz sicher, ob das klappt, wenn das Image nicht wirklich so groß ist.

Hast du mal probiert, ob das jffs2 ein Flash per push_firmware/recover-eva überlebt? Dürft eigentlich nicht so sein.

helmut@freetz:/home/freetz/freetz-trunk$ ./tools/recover-eva -f images//W920V_7570_04.82freetz-devel-5708.en_20100903-182042.image -i 192.168.178.1 -l 192.168.124.14
Looking for Fritz!Box ooooooooooooooooooooooooooooooooooO. found!
ADAM2 version 0.18.1 at 192.168.178.1 (192.168.178.1)
Product ID: Fritz_Box_DECT_W920V
Hardware Revision: 135.1.0.6
Urlader Revision: 1458
Firmware Revision: 65.04.82
MTD0: 0 bytes
MTD1: 16121856 bytes
MTD2: 131072 bytes
MTD3: 262144 bytes
MTD4: 262144 bytes
./var/tmp/filesystem.image
./var/tmp/kernel.image
recover.tmp/var/tmp/kernel.image: removed checksum
CRC32: 2E7310C8
Flashing recover.tmp/var/tmp/kernel.image to mtd1 ...######################################################################################################################################################################################
checksum ok!
success!
helmut@freetz:/home/freetz/freetz-trunk$

/data wurde gelöscht, aber die Grösse leider nicht verändert:

/var/mod/root # df -h
Filesystem Size Used Available Use% Mounted on
/dev/root 10.5M 10.5M 0 100% /
/dev/mtdblock5 1.8M 388.0K 1.4M 22% /data
/var/mod/root #

Was ist "filesystem.image"? Das wird nämlich nicht nach mtd0 geflashed, da die Grösse = 0.

Soll ich mal ein Ticket aufmachen?
 
Hm, das versteh ich jetzt nicht. Beim flashen über recover-eva wird der gesamte Flashinhalt gelöscht. Dein Image war sicher kleiner als die 10,5 MB? Das würde heißen, dass das jffs2, obwohl es nicht mehr existiert auf die Größe der Variable im Urlader gesetzt wird!?

filesystem.image ist 0 Byte groß und wird nicht geflasht. Das ist schon okay so und nennt sich "hidden filesystem" oder "hidden root"...

MfG Oliver
 
Holen Sie sich 3CX - völlig kostenlos!
Verbinden Sie Ihr Team und Ihre Kunden Telefonie Livechat Videokonferenzen

Gehostet oder selbst-verwaltet. Für bis zu 10 Nutzer dauerhaft kostenlos. Keine Kreditkartendetails erforderlich. Ohne Risiko testen.

3CX
Für diese E-Mail-Adresse besteht bereits ein 3CX-Konto. Sie werden zum Kundenportal weitergeleitet, wo Sie sich anmelden oder Ihr Passwort zurücksetzen können, falls Sie dieses vergessen haben.