参考文档:Android 存储设备
在最初没有mmc和emmc时候,android基本使用nand,onenand,nor,ecc nor作为存储设备,MTD(Memory Technology Devices)是可以直接在这些原始设备上操作的。android机器启动后,可以通过命令cat proc/mtd,来查看。
随着,mmc,emmc,CompactFlash等带有FTL(Flash Translate Lay)存储设备的出现,mtd系统已经不能操作。
cat /proc/mtd
但是 采用了 emmc期间以后这个分区是看不到了(可能也是被内核给隐藏了)
root@android:/dev/block # cat /proc/partitions
major minor #blocks name
253 0 131072 zram0
179 0 7570432 mmcblk0 ---第一个挂载的主分区
179 1 4846592 mmcblk0p1 ----第一个主分区的第一个分区,一下依次类推
179 2 16384 mmcblk0p2
179 3 1 mmcblk0p3
179 5 16384 mmcblk0p5
179 6 16384 mmcblk0p6
179 7 524288 mmcblk0p7
179 8 1572864 mmcblk0p8
179 9 16384 mmcblk0p9
179 10 32768 mmcblk0p10
179 11 458752 mmcblk0p11
179 12 16384 mmcblk0p12
179 13 16384 mmcblk0p13
但是问题来了,看不到以前的比较直观的分区名字了,不知道mmcblk0p11 对应哪个区域是cache data ?猜?
还好你可以到/dev/block目录下,可以查看文件的别名链接。大功告成。
root@android:/dev/block # ls -al
lrwxrwxrwx root root 1970-01-01 08:00 UDISK -> /dev/block/mmcblk0p1
lrwxrwxrwx root root 1970-01-01 08:00 boot -> /dev/block/mmcblk0p6
lrwxrwxrwx root root 1970-01-01 08:00 bootloader -> /dev/block/mmcblk0p2
lrwxrwxrwx root root 1970-01-01 08:00 cache -> /dev/block/mmcblk0p11
lrwxrwxrwx root root 1970-01-01 08:00 data -> /dev/block/mmcblk0p8
lrwxrwxrwx root root 1970-01-01 08:00 databk -> /dev/block/mmcblk0p13
lrwxrwxrwx root root 1970-01-01 08:00 env -> /dev/block/mmcblk0p5
brw------- root root 7, 0 1970-01-01 08:00 loop0
brw------- root root 7, 1 1970-01-01 08:00 loop1
brw------- root root 7, 2 1970-01-01 08:00 loop2
brw------- root root 7, 3 1970-01-01 08:00 loop3
brw------- root root 7, 4 1970-01-01 08:00 loop4
brw------- root root 7, 5 1970-01-01 08:00 loop5
brw------- root root 7, 6 1970-01-01 08:00 loop6
brw------- root root 7, 7 1970-01-01 08:00 loop7
lrwxrwxrwx root root 1970-01-01 08:00 misc -> /dev/block/mmcblk0p9
brw------- root root 179, 0 1970-01-01 08:00 mmcblk0
brw------- root root 179, 1 1970-01-01 08:00 mmcblk0p1
brw------- root root 179, 10 1970-01-01 08:00 mmcblk0p10
brw------- root root 179, 11 1970-01-01 08:00 mmcblk0p11
brw------- root root 179, 12 1970-01-01 08:00 mmcblk0p12
brw------- root root 179, 13 1970-01-01 08:00 mmcblk0p13
brw------- root root 179, 2 1970-01-01 08:00 mmcblk0p2
brw------- root root 179, 3 1970-01-01 08:00 mmcblk0p3
brw------- root root 179, 5 1970-01-01 08:00 mmcblk0p5
brw------- root root 179, 6 1970-01-01 08:00 mmcblk0p6
brw------- root root 179, 7 1970-01-01 08:00 mmcblk0p7
brw------- root root 179, 8 1970-01-01 08:00 mmcblk0p8
brw-rw---- root system 179, 9 1970-01-01 08:00 mmcblk0p9
drwxr-xr-x root root 1970-01-01 08:00 platform
lrwxrwxrwx root root 1970-01-01 08:00 private -> /dev/block/mmcblk0p12
lrwxrwxrwx root root 1970-01-01 08:00 recovery -> /dev/block/mmcblk0p10
lrwxrwxrwx root root 1970-01-01 08:00 system -> /dev/block/mmcblk0p7
drwx------ root root 1970-01-01 08:00 vold
brw------- root root 253, 0 1970-01-01 08:00 zram0
可以对照下 df 看看分区大小是不是一样的,同时知道了 blk以后就可以轻松的dd 拷贝出需要的分区文件了。
root@android:/dev/block # df
Filesystem Size Used Free Blksize
/dev 165M 32K 165M 4096
/mnt/secure 165M 0K 165M 4096
/mnt/asec 165M 0K 165M 4096
/mnt/obb 165M 0K 165M 4096
/system 504M 414M 90M 4096
/cache 444M 21M 423M 1024
/data 1G 233M 1G 4096
/mnt/private 15M 12K 15M 4096
/mnt/sdcard 4G 3M 4G 4096
/mnt/secure/asec 4G 3M 4G 4096
PS:
如果有串口工具的话:可以看到分区大小的打印(有些平台有,有些没有),有些平台还支持进入uboot后正常的命令行支持。
这个时候在正常开机下不能修改的boot.img的内容,比如build.prop就可以修改了。
--------fastboot partitions--------
-total partitions:11-
-name- -start- -size-
bootloader : 1000000 1000000
env : 2000000 1000000
boot : 3000000 1000000
system : 4000000 20000000
data : 24000000 60000000
misc : 84000000 1000000
recovery : 85000000 2000000
cache : 87000000 1c000000
private : a3000000 1000000
databk : a4000000 1000000
UDISK : a5000000 0
-----------------------------------