Sobre la memoria flash de la fonera
Como al final acabamos confundidos con la memoria flash y como va distribuida, voy a exponer un análisis para explicar la constitución y particion de la misma.
Cualquiera que tenga una fonera abierta puede ver lo siguiente escribiendo dmesg:
MTD driver for SPI flash.
spiflash: Probing for Serial flash …
spiflash: Found SPI serial Flash.
8388608: size
Creating 8 MTD partitions on “spiflash”:
0×00000000-0×00030000 : “RedBoot”
0×00030000-0×00720000 : “rootfs”
0×001c0000-0×00720000 : “rootfs1″
0×00720000-0×00730000 : “config”
0×00730000-0×007e0000 : “vmlinux.bin.l7″
0×007e0000-0×007ef000 : “FIS directory”
0×007ef000-0×007f0000 : “RedBoot config”
0×007f0000-0×00800000 : “board_config”
Según la cuarta linea de este paste la fonera dispone de 8388608 bytes de espacio (exactamente 8Mb) y leyendo la quinta linea vemos que está particionada en 8 dispositivos mtdX donde:
- mtd0: Tiene 196608 bytes (192Kb) que ocupa desde la posición 0×00000000 hasta la posición 0×00030000 y está etiquetada como “RedBoot” que es el bootloader de la fonera.
- mtd1: Tiene 7274496 bytes (6.93Mb) que va desde la posición 0×00030000 hasta la 0×00720000 y está etiquetada como “rootfs”. Aqui se guarda el sistema de archivos inicial (raiz).
- mtd2: Tiene 5636096 bytes (5.37Mb) que va desde la posición 0×001c0000 hasta la 0×00720000 y está etiquetada como “rootfs1″. Contiene los cambios que realizamos en la fonera y se monta en /jffs.
- mtd3: Tiene 65536 bytes (64Kb) que va desde la posición 0×00720000 hasta la 0×00730000 y está etiquetada como “config”. Este espacio realmente está en blanco, solamente contiene ‘1337′ en los dos primeros bytes (7 ascii).
- mtd4: Tiene 720896 bytes (704Kb) que va desde la posición 0×0073000 hasta la 0×007e0000 y está etiquetada como “vmlinux.bin.l7″. Contiene el nucleo linux.
- mtd5: Tiene 61440 bytes (60Kb) que va desde la posición 0×007e0000 hasta la 0×007ef000 y está etiquetada como “FIS directory”. Parece contener información sobre el particionado de la flash.
- mtd6: Tiene 4096 bytes (4Kb) que va desde la posición 0×007ef000 hasta la 0×007f0000 y está etiquetada como “RedBoot config”. Contiene la configuración del bootloader ReedBot.
- mtd7: Tiene 65536 bytes (64Kb) que va desde la posición 0×007f0000 hasta la 0×00800000 y está etiquetada como “boad_config”. Aqui podemos encontrar la configuración general de la placa y cosas como el número de serie, las direcciones mac, etc.
Como se aprecia, rootfs y rootfs1 comparten espacio desde la posicion 0×001c0000 hasta la 0×00720000 (/jffs). Esto nos deja solamente 0×001c0000 – 0×00030000 de espacio para el sistema de archivos rootfs (1638400 bytes o 1.56Mb). Si es superado ese espacio con una imagen de sistema de archivos (como ha sido mi caso, la superé por unos cientos de Kb por el modulo cifs.o) pasa esto:
root@fonera:~# du -sh /jffs/
12.5k /jffs
root@fonera:~# df -h
Filesystem Size Used Available Use% Mounted on
none 7.0M 52.0k 6.9M 1% /tmp
/dev/mtdblock/2 5.4M 332.0k 5.1M 6% /jffs
Es decir, a pesar de que /jffs no ocupa mucho, df nos dice que si porque parte de la memoria está siendo usada por la imagen excesivamente grande que puse, lo que me lleva a pensar que hay de capacidad hasta 6.9 megas para poner nuestra imagen, pero que agotaríamos así la capacidad de /jffs impidiendo poder realizar cambios, así que preferiblente es mejor no execeder esos 1.56 megas para el sistema de archivos inicial.
Sábado, Diciembre 9th 2006 at 2:03 pm
Mírate los ficheros:
/sbin/mount_root & /sbin/mount_overlay
Creo que tienen mucha miga, por otra parte, creo que las particiones se pueden cambiar. Los del firm OpenWrt lo hacen, eso si, no se como.
A seguir investigando.