Android的文件系统结构

1、Android文件系统的结构

官方android源码编译后得到的文件如下:Android的文件系统结构

其中有system.img,ramdisk.img,userdata.img三个映像文件。其中,ramdisk.img文件系统,system.img包括了主要的包、库等文件,userdata.img包括了一些用户数据,当emulator加载这3个映像文件后,会把system.imguserdata.img分别加载到ramdisk文件系统中的systemuserdata目录下。

2
、分离组建Android文件系统
system.img,ramdisk.img,userdata.img
映像文件是采用cpio打包、gzip压缩的,可以通过file命令验证:
file ramdisk.img

  1. ramdisk.img:gzip compressed data, from Unix, last modified:  

其中ramdisk.img是一个分区映像文件,即是一个文件系统(root file system),,kernel启动时,ramdisk负责init,system.img包括了主要系统,系统app等,挂载于文件系统下的system文件夹, userdata.img包括了一些用户数据,被挂载到文件系统下的data文件夹下。

另外Android源码编译后还有root、system、data三个文件夹,其实就是上述三个img解压之后的内容而已,root文件夹里面的内容就是ramdisk.img解压后的内容,即是一个文件系统,包括system、data、bin、dev等目录。而system与data则对应着system.img与userdata.img的解压后的内容。

将ramdisk.img复制一份到任何其他目录下,将其名称改为ramdisk.img.gz,并使用命令

  • gunzip ramdisk.img.gz 

然后新建一个文件夹,叫ramdisk吧,进入,输入命令

  • cpio -i -F ../ramdisk.img 

这下,你就能看见并操作ramdisk里面的内容了。

然后把Android源码编译后生成的system和 userdata里的文件复制到 ramdisk/system和 ramdisk/userdata下。这样就得到一个文件系统了。
3、使用网络文件系统方式挂载Android文件系统
因此,我们需要建立/nfsroot目录,再建立/nfsroot/Androidfs目录,把刚才的Android文件系统改名为Androidfs,并链接到/nfsroot/Androidfs
4、Android文件系统内核引导文件系统
Android内核挂载/nfsroot/Androidfs之后,根据init.rc,init.goldfish.rc来初始化并装载系统库、程序等直到开机完成。init.rc脚本包括了文件系统初始化、装载的许多过程。init.rc的工作主要是:
1)设置一些环境变量
2)创建system、sdcard、data、cache等目录
3)把一些文件系统mount到一些目录去,如,mount tmpfs tmpfs /sqlite_stmt_journals
4)设置一些文件的用户群组、权限
5)设置一些线程参数
6)设置TCP缓存大小


你可能感兴趣的:(Android的文件系统结构)