社区应用 最新帖子 精华区 社区服务 会员列表 统计排行
  • 27881阅读
  • 0回复

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

楼层直达
z3960 
级别: 茶馆馆主
发帖
770867
飞翔币
207694
威望
215657
飞扬币
2511641
信誉值
8


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桌面系统读取。
————————————————
版权声明:本文为CSDN博主「smstong」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/smstong/article/details/6935853
关键词: 手机 系统 软件
 
我不喜欢说话却每天说最多的话,我不喜欢笑却总笑个不停,身边的每个人都说我的生活好快乐,于是我也就认为自己真的快乐。可是为什么我会在一大群朋友中突然地就沉默,为什么在人群中看到个相似的背影就难过,看见秋天树木疯狂地掉叶子我就忘记了说话,看见天色渐晚路上暖黄色的灯火就忘记了自己原来的方向。