您的位置:首页 > 移动开发 > Android开发

实践中探索Android智能手机系统------ROM分区

2011-11-04 15:41 711 查看
Android系统本质上也是一种OS,而且是基于Linux内核的OS,本系列文章以探索OS的角度,从实践中了解Android系统,从而更好的使用Android系统,甚至改造它。

实验环境:

硬件:HTC G11 S710e 港版 + 16GBTF卡

Android: MIUI for G11,已经S-Off

所需软件: 终端模拟器



实践中探索Android智能手机系统------ROM分区
磁盘分区是OS静态的存在方式,如Windows往往只需要一个C盘分区,而Linux则可以占用多个分区来挂载不同的部分。Android本身使用的就是Linux内核,但其所在设备往往没有硬盘,而是ROM,所以分区也有所不同。打开手机上的终端模拟器,输入su取得root权限后,执行df -h查看ROM分区情况如下:

$su

# df -h

Filesystem Size Used Available Use% Mounted on

tmpfs 307.3M 32.0K 307.3M 0% /dev

tmpfs 307.3M 0 307.3M 0% /mnt/asec

tmpfs 307.3M 0 307.3M 0% /mnt/obb

/dev/block/mmcblk0p25 549.2M 165.4M 355.9M 32% /system

/dev/block/mmcblk0p26 1.1G 115.1M 982.7M 10% /data

/dev/block/mmcblk0p27 290.5M 39.1M 236.4M 14% /cache

/dev/block/vold/179:65 14.8G 428.8M 14.4G 3% /mnt/sdcard

/dev/block/vold/179:65 14.8G 428.8M 14.4G 3% /mnt/secure/asec

#

首先说明的是tmpfs文件系统类型是基于虚拟内存的文件系统,不占用ROM空间。最后两个是sd卡,只用中间三个是ROM分区(红色标记)。
可以看到,ROM被分成了3个区,大小分别为:549.2M, 1.1G, 290.5M。这应该是个2GB的ROM吧。这三个分区被挂载到不同的路径,其中/system是系统分区,/data是用户安装程序的分区,/cache是系统用来当缓存的分区。平时所谓的刷ROM其实就是重新写/system分区,而不会影响到/data分区,所以用户安装的程序依然存在。

为了进一步看清系统运行时挂载情况,执行mout命令:
$ export PATH=/data/local/bin:$PATH

$su

# mount

rootfs on / type rootfs (ro,relatime)

tmpfs on /dev type tmpfs (rw,relatime,mode=755)

devpts on /dev/pts type devpts (rw,relatime,mode=600)

proc on /proc type proc (rw,relatime)

sysfs on /sys type sysfs (rw,relatime)

none on /acct type cgroup (rw,relatime,cpuacct)

tmpfs on /mnt/asec type tmpfs (rw,relatime,mode=755,gid=1000)

tmpfs on /mnt/obb type tmpfs (rw,relatime,mode=755,gid=1000)

none on /dev/cpuctl type cgroup (rw,relatime,cpu)

/dev/block/mmcblk0p25 on /system type ext4 (ro,relatime,barrier=1,data=ordered)

/dev/block/mmcblk0p26 on /data type ext4 (rw,nosuid,nodev,noatime,barrier=1,data=ordered,noauto_da_alloc)

/dev/block/mmcblk0p27 on /cache type ext4 (rw,nosuid,nodev,noatime,barrier=1,data=ordered)

/data/d on /data/d type debugfs (rw,relatime)

/sys/kernel/debug on /sys/kernel/debug type debugfs (rw,relatime)

/dev/block/vold/179:65 on /mnt/sdcard type vfat(rw,dirsync,nosuid,nodev,noexec,relatime,uid=1000,gid=1015,fmask=0602,dmask=0602,allow_utime=0020,codepage=cp437,iocharset=iso8859-1,shortname=mixed,utf8,errors=remount-ro)

/dev/block/vold/179:65 on /mnt/secure/asec type vfat (rw,dirsync,nosuid,nodev,noexec,relatime,uid=1000,gid=1015,fmask=0602,dmask=0602,allow_utime=0020,codepage=cp437,iocharset=iso8859-1,shortname=mixed,utf8,errors=remount-ro)

tmpfs on /mnt/sdcard/.android_secure type tmpfs (ro,relatime,size=0k,mode=000)

#
其中rootfs,也是一种基于RAM的文件系统,可以看到Android的/是直接建立在RAM上的,在PC上,Linux系统一般是启动过程中需要rootfs,然后再切换到磁盘上的根文件系统,而Android则直接就是使用rootfs,所以速度快,但是毕竟RAM大小有限,所以根目录下不能存放太多的东西。

其他如none, proc,devpt, tmpfs等等,也都是无设备文件系统,一般都是基于内存的文件系统,具体的作用以后慢慢研究。
从上红色标记的内容可以看出,ROM分区使用的是ext4标准的Linux文件系统类型,SD卡则采用vfat这种Linux和Windows下可以识别的文件系统,便于其上面的内容被Windows桌面系统读取。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: