Android设备上,一般都会存在一块eMMC存储芯片来存放系统和用户数据,甚至部分的引导程序。
一般设备出厂时,各个厂商都会将这块存储芯片分成很多的分区,每个分区内存放不同的内容。具体分区的布局每个厂商或者芯片供应商都会不一样。
可以通过下面的命令来查看目前系统中到底有多少分区:
这条命令会显示系统中的所有分区,以及每个分区的大小是多少个block,还有主设备号和次设备号等信息。在Google Nexus 6设备上,命令的显示结果如下:
啰嗦一句,可以通过下面的命令查看当前系统中所有设备的主设备号:
在Google Nexus 6设备上,命令的显示结果如下:
如果想知道每个挂载到文件系统上的分区大小和使用情况的信息,可以像普通Linux一样使用df命令:
如果想看某些分区的别名信息,对于高通平台上来说,可以通过下面的命令:
在Google Nexus 6设备上,命令的显示结果如下:
这些信息可以帮助发现每个分区到底是用来干什么的,比如/dev/block/mmcblk0p41这个分区就是用来存放/system的。
有了这些信息,就可以使用dd命令,将感兴趣的分区全部倒出来进行分析。比如,如果想将TrustZone相关的tz分区倒出到sdcard上,可以使用下面的命令: