android系统映像文件

android源码编译后得到system.img,ramdisk.img,userdata.img映像文件。其中,ramdisk.img是emulator(模拟器)的文件系统,system.img包括了主要的包、库等文件,userdata.img包括了一些用户数据,emulator负责加载这3个映像文件。

 

下面我们来简要分析一下这三个镜像文件。

如下图所示是编译之后生成的相关文件。


  其中三个镜像对应的文件夹上图也很明了了。android系统启动后,会把system.img和userdata.img分别加载到 ramdisk文件系统中的system和 userdata目录下。

 

init.rc的部分内容截图

这里要着重强调一下,从名字上就可以看出来ramdisk文件系统是一个基于内存的文件系统,所以利用adb shell等修改其内容后,

一旦系统重启,修改的内容都会被还原的。

前面说了ramdisk.img就是root文件夹,和在Linux下利用busybox制作的文件系统一样,init.rc是要被首先解析的一个配置文件,

里面包含了文件夹的创建,权限,以及启动android重要服务的规则。要想修改init.rc里面的内容,那么在修改之后要重新打包镜像。

 

 

下面是编译这些镜像时的编译命令:

1.system.img

make systemimage

2.userdata.img

make userdataimage

3.ramdisk.img

make ramdisk

4.boot.img

make bootimage

5.system打包

make snod

这个不检查依赖关系,只是把 out\target\product\XXX\system 目录打包成system.img,用于简单替换文件时打包。

 

当然执行make命令会生成所有的系统镜像,另外说一下boot.img其实是将ramdisk.img和Kernel打成的一个镜像,在真实产品中会有这个镜像,模拟器中不需要这个镜像。

 

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。