android system.img,ramdisk.img,boot.img 分析

Android 源码编译后获得system.img,ramdisk.img,userdata.img映像文件。其中, ramdisk.img是emulator的 文件系统,system.img包括了主要的包、库等文件,userdata.img包括了一些用户数据,emulator负责加载这3个映像文件后,会 把system.img和userdata.img分别加载到 ramdisk文件系统中的system和 userdata目录下(会发觉有类似性)。linux

咱们会发觉编译生成的root文件夹内容与android运行时根目录内容类似,ramdisk根文件系统中包含一些对于启动android的很重要的文 件,好比内核启动完后加载的第一个进程init、一些重要的配置文件等,总之它控制着整个android的启动。根据 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


以下图是ramdisk.img解压出来的文件,其直接挂载在根目录下,在它的分区下只有只读权限,后面system.img userdata.img从新挂载在system和data目录下后从新配置了权限,因此想init init.rc sbin目录都是只要只读权限,好比想要修改sbin下的healthd就只能从新烧ramdisk.img了sql

 

 

生成的system.img,ramdisk.img,userdata.img映像文件是采用cpio打包、gzip压缩的,能够经过file命令验 证:
file ramdisk.img,输出: ramdisk.img: gzip compressed data, from Unix, last modified: Wed Mar 18 17:16:10 2009 ,咱们能够学习怎么样把 ramdisk.img解压出来。将ramdisk.img复制一份到任何其余目录下,将其名称改成 ramdisk.img.gz,并使用命令
gunzip ramdisk.img.gz,而后新建一个文件夹,叫ramdisk吧,进入,输入 命令cpio -i -F ../ramdisk.img,这下,你就能看见并操做ramdisk里面的内容了。而后把Android源码编译后生成的system和 userdata里的文件复制到 ramdisk/system和ramdisk/userdata下。这样就获得一个文件系统了。缓存

还会发现,根文件系统下的sys就是一个Linuxapp

=============================================================框架

在android 1.5 模拟器上加载 android 2.1 的系统:布局

本 文编译出来的3个img文件是2.1版的。能够用system.img和ramdisk.img 替换1.5的版本:学习

命 令以下:字体

打 开android 1.5的模拟器 ,同时加载system.img和ramdisk.img.net

emlator -avd sdk_1_5 -ramdisk [ramdisk.img路径] -system [system.img的路径]

启 动后能够看到设置中的手机版本变成了2.1版。

=============================================================

对于android系统文件夹,好比out/target/prod t/smdk6410/system目录,说明以下:

system/app 这个里面主要存放的是常规下载的应用程序,能够看到都是以APK格式结尾的文件。在这个文件夹下的程序为系统默认的组件,本身安装的软件将不会出如今这 里,而是/data/文件夹中。

system/bin 这个目录下的文件都是系统的本地程序,从bin文件夹名称能够看出是binary二进制的程序,里面主要是linux系统自带的组件。

system/etc 从文件夹名称来看保存的都是系统的配置文件,好比APN接入点设置等核心配置。

system/fonts 字体文件夹,除了标准字体和粗体、斜体外能够看到文件体积最大的多是中文字库,或一些unicode字库。

system/framework 主要是一些核心的文件,从后缀名为jar能够看出是是系统平台框架。

system/lib lib目录中存放的主要是系统底层库,如平台运行时库。

system/media 铃声音乐文件夹,除了常规的铃声外还有一些系统提示事件音

system/usr 用户文件夹,包含共享、键盘布局、时间区域文件等。

相关文章
相关标签/搜索