La memoria Flash del Fritz!Box 7050

Da Vocesuip.

La memoria flash in questo modello è stata partizionata in 6 parti, come possiamo vedere dal file /proc/mtd:

dev:    size   erasesize   name
mtd0: 00300000 00010000   "mtd0"
mtd1: 000b0000 00010000   "mtd1"
mtd2: 00010000 00010000   "mtd2"
mtd3: 00020000 00010000   "mtd3"
mtd4: 00020000 00010000   "mtd4"
mtd5: 00023000 00010000   "mtd5"

Queste partizioni vengono mappate direttamente nella directory virtuale /dev/mtdblock/:

# ls /dev/mtdblock/
0  1  2  3  4  6

in maniera tale da renderne facile l'accesso e la modifica (ad esempio per aggiornare il firmware). Vediamo ora nel dettaglio a cosa servono le varie partizioni.


mtd0

La partizione mtd0 contiene la root di sistema ed è di tipo squashfs, un filesystem altamente compresso che permette accessi in sola lettura, ideale per essere utilizzato appunto con memorie flash su sistemi embedded.

mtd1

La partizione mtd1 contiene il kernel, compresso con algoritmo LZMA, che verrà utilizzato dal bootloader per avviare il sistema.

mtd2

La partizione mtd2 contiene il bootloader ADAM2.

mtd3 e mtd4

Le partizioni mtd3 e mtd4 sono in formato tffs; contengono le variabili d'ambiente condivise tra il bootloader e il systema linux e la configurazione di ADAM2. Tali partizioni vengono gestite in double buffering, in quanto si tratta di informazioni molto delicate e una corruzione di tale spazio può causare un congelamento completo della procedura di boot, nel qual caso occorre intervenire con una JTAG per ripristinare le partizioni del bootloader.

Per questo motivo è consigliabile non scrivere direttamente all'interno di queste partizioni, ma utilizzare uno dei seguenti metodi:

  • Al momento dell'avvio del sistema accedere al bootloader via console seriale e utilizzare i comandi setenv, unsetenv e printenv.
  • Sempre al momento dell'avvio accedere via rete al server FTP del bootloader e utilizzare i comandi SETENV, UNSETENV e GETENV(vanno scritti rigorosamente in maiuscolo).
  • Utilizzare il file /proc/avalanche/env.


mtd5

La partizione mtd5 è anch'essa di tipo squashfs; viene montata durante il processo di boot e contiene una serie di file necessari durante l'avvio. All'interno del Fritz!Box questa partizione viene mappata in modo non corretto, in quanto viene associato il file virtuale 6 e non 5.

Il contenuto della partizione mtd5 è il seguente:

-r-xr-xr-x    1 root     root       131100 Nov 22  2005 avalanche_cpmac.o
-r-xr-xr-x    1 root     root        69616 Nov 22  2005 avalanche_usb.o
-r-xr-xr-x    1 root     root        23976 Nov 22  2005 avalanche_vlynq.o
-r-xr-xr-x    1 root     root        65832 Nov 22  2005 avm.o
-r-xr-xr-x    1 root     root        80036 Nov 22  2005 ubik2.o
-rw-rw-r--    1 root     root        20480 Nov 22  2005 var.tar

mentre questo è il contenuto dell'archivio var.tar:

drwxrwxrwx 0/0               0 2005-11-22 16:43:20 ./var/
drwxrwxrwx 0/0               0 2005-11-22 16:43:20 ./var/lock/
-rwxrwxrwx 0/0               0 2005-11-22 16:43:30 ./var/lock/.dummy
drwxrwxrwx 0/0               0 2005-11-22 16:43:20 ./var/log/
-rwxrwxrwx 0/0               0 2005-11-22 16:43:30 ./var/log/.dummy
-rwxrwxrwx 0/0             624 2005-11-22 16:43:30 ./var/post_install
drwxrwxrwx 0/0               0 2005-11-22 16:43:20 ./var/run/
-rwxrwxrwx 0/0               0 2005-11-22 16:43:30 ./var/run/.dummy
drwxrwxrwx 0/0               0 2005-11-22 16:43:20 ./var/tmp/
-rwxrwxrwx 0/0              10 2005-11-22 16:43:30 ./var/tmp/group
-rwxrwxrwx 0/0              44 2005-11-22 16:43:30 ./var/tmp/hosts
-rwxrwxrwx 0/0              26 2005-11-22 16:43:30 ./var/tmp/passwd
-rwxrwxrwx 0/0              50 2005-11-22 16:43:30 ./var/tmp/resolv.conf
-rwxrwxrwx 0/0              26 2005-11-22 16:43:30 ./var/tmp/shadow


Attenzione! Occorre tenere sempre a mente che le partizioni mtd2, mtd3 e mtd4 non vanno mai sovrascritte a meno chee non sappia esattamente quello che si fa e non si abbia a disposizione una JTAG per ristabilire eventualmente il contenuto corretto.

Strumenti personali