Formateo del almacenamiento MTD interno: ¿seleccionar el tamaño del bloque?

He rooteado la tableta china N101-II con CyanogenMod después de flashear la ROM personalizada .

El almacenamiento MTD interno tiene un tamaño de 32 GiB y la actualización de ROM personalizada crea un diseño diferente al particionamiento interno. Por lo tanto, /datacerca de 12 GiB en lugar de 1 GiB original (¡por lo que ya no es necesario mover paquetes a un flash externo!):

130|root@android:/system # df
Filesystem               Size     Used     Free   Blksize
/system                595.4M   549.8M    45.6M   1024
/data                   11.8G   449.8M    11.4G   4096
/cache                 126M     4.1M   121.9M   4096

Espacio de descanso dejado para /mnt/sdcard:

root@android:/ # cat /system/etc/vold.fstab
dev_mount flash /mnt/sdcard auto /devices/virtual/mtd/mtd9/mtdblock9 nonremovable

pero el proceso de flasheo de ROM personalizado no se mtdblock9formateó.

Bajo PATHlos comandos disponibles: mkfs.ext2y tune2fsasí me puedo formatear.

mkfs.ext2apoyo:

130|root@android:/system # mkfs.ext2 --help
mkfs.ext2 --help
BusyBox v1.21.1-jb bionic (2013-07-01 01:04 +0200) multi-call binary.

Usage: mkfs.ext2 [-Fn] [-b BLK_SIZE] [-i INODE_RATIO] [-I INODE_SIZE] [-m RESERVED_PERCENT] [-L LABEL] BLOCKDEV [KBYTES]

        -b BLK_SIZE Block size, bytes

De acuerdo a:

root@android:/ # cat /proc/mtd 
cat /proc/mtd 
dev:    size   erasesize  name
mtd0: 00400000 00004000 "misc"
mtd1: 00800000 00004000 "kernel"
mtd2: 01000000 00004000 "boot"
mtd3: 01000000 00004000 "recovery"
mtd4: 18000000 00004000 "backup"
mtd5: 08000000 00004000 "cache"
mtd6: 300000000 00004000 "userdata"
mtd7: 00400000 00004000 "kpanic"
mtd8: 28000000 00004000 "system"
mtd9: 46fa00000 00004000 "user"

parece que necesito seleccionar el tamaño del bloque como 16384 (16KiB). ¿Tengo razón?

ACTUALIZAR Parece que mkfs.ext2de busybox y no funciona correctamente:

android# mkfs.ext2 /dev/block/mtdblock9
mkfs.ext2: lseek: Value too large for defined data type

Pero encontré mke2fs:

android# mke2fs -I 16384 /dev/block/mtdblock9
mke2fs 1.41.14 (22-Dec-2010)
mke2fs: invalid inode size 16384 (min 128/max 4096)

Para reducir la fragmentación, trato de seleccionar un tamaño de bloque más grande (lo que hace que la operación de borrado sea menor en el flash, espero):

android# mke2fs -I 4096 /dev/block/mtdblock9
mke2fs 1.41.14 (22-Dec-2010)
Filesystem label=
OS type: Linux
Block size=4096 (log=2)
Fragment size=4096 (log=2)
Stride=0 blocks, Stripe width=0 blocks
1162128 inodes, 4651520 blocks
232576 blocks (5.00%) reserved for the super user
First data block=0
Maximum filesystem blocks=0
142 block groups
32768 blocks per group, 32768 fragments per group
8184 inodes per group
Superblock backups stored on blocks: 
        32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208, 
        4096000

Respuestas (1)

Selecciono el tamaño de bloque más grande posible para mke2fsevitar el fraccionamiento de bloques como operación de borrado en esa memoria MTD realizada por 16 KiB chanks:

android# /sbin/mke2fs -t ext4 -I 4096 -O ^huge_file -m 0 /dev/block/mtdblock9
mke2fs 1.41.14 (22-Dec-2010)
Filesystem label=
OS type: Linux
Block size=4096 (log=2)
Fragment size=4096 (log=2)
Stride=0 blocks, Stripe width=0 blocks
1162128 inodes, 4651520 blocks
0 blocks (0.00%) reserved for the super user
First data block=0
Maximum filesystem blocks=0
142 block groups
32768 blocks per group, 32768 fragments per group
8184 inodes per group
Superblock backups stored on blocks: 
        32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208, 
        4096000

Writing inode tables: done                            
Creating journal (32768 blocks): done
Writing superblocks and filesystem accounting information: done

This filesystem will be automatically checked every 35 mounts or
180 days, whichever comes first.  Use tune2fs -c or -i to override.

entonces:

android# tune2fs -c 0 -i 0 /dev/block/mtdblock9
tune2fs -c 0 -i 0 /dev/block/mtdblock9
tune2fs 1.41.14 (22-Dec-2010)
Setting maximal mount count to -1
Setting interval between checks to 0 seconds

NOTA No hay necesidad de formatear /datay /cacheparticionar. Eso se puede hacer automáticamente en wipe datael menú de recuperación.