今天研究了一下Android G1的nand分区情况。
由于底层研发的习惯,我先看了看文件系统在Nand Flash中的分布情况:
我在Ubuntu下使用adb连接了G1,然后:
# cat /proc/mtd
dev: size erasesize name
mtd0: 00040000 00020000 "misc"
mtd1: 00500000 00020000 "recovery"
mtd2: 00280000 00020000 "boot"
mtd3: 05a00000 00020000 "system"
mtd4: 01e00000 00020000 "cache"
mtd5: 059c0000 00020000 "userdata"
mtd6: 10000000 00020000 "msm_nand"
从中可知:
misc :0.25MB:是存放开机画面的分区,也就是开机时看到的那个白色的大G1字样(默认为白色"T-mobile G1")
recovery :5MB:是G1的恢复模式镜像区(即开机按Home+End进入的界面)
Boot :2.5MB:Linux操作系统内核和ramdisk镜像一起打包后存放的分区
system :90MB:是system.img存放的分区,启动后此镜像挂载在根目录下的system文件夹中。
cache :30MB:是缓存临时文件夹,挂载为/cache目录,据说是除了T-mobile的OTA更新外,别无用处。
userdata :89.75MB:用户安装的软件以及各种数据,挂载为/data目录
msm_nand :256MB:代表整个Nand Flash,不是一个分区。但是所有的分区加起来才217.5MB,小于256MB,说明还有剩余的flash空间。(此分区在大部分机上不存在,不影响使用)
G1所使用的Nand Flash是K5E2G1GACM,但是在三星的网上居然没找到Datasheet,网上也没有google到!
模拟器中的输出是这样的:
# cat /proc/mtd
dev: size erasesize name
mtd0: 04000000 00020000 "system"
mtd1: 04000000 00020000 "userdata"
mtd2: 06100000 00020000 "cache"
补黑色台版的G2分区 :
# cat /proc/mtd
dev: size erasesize name
mtd0: 00040000 00020000 "misc"
mtd1: 00500000 00020000 "recovery"
mtd2: 00280000 00020000 "boot"
mtd3: 05a00000 00020000 "system"
mtd4: 05000000 00020000 "cache"
mtd5: 127c0000 00020000 "userdata"
可以看到 cache 和 userdata变大了,因为 G2的ROM 为512MB的。
从上面的数据我么可以发现一个现象:无论是G1还是G2,所有的分区加起来都比整个Nand flash小38.5MB,这些空间应该另有他用,其中有一个用处就是存放bootloader。但是从以往的经验来看,bootloader不可能有38.5MB,肯定另有用处,可能用于虚拟内存(猜测)。