ramdisk.img system.img userdata.img 分析

来源:互联网 发布:淘宝店授权书模板 编辑:程序博客网 时间:2024/05/01 00:45

在out/target/product/generic下生成的三个镜像文 件:ramdisk.img,system.img,userdata.img以及它们对应的目录树root,system,data。 ramdisk.img是根文件系统,system.img包括了主要的包、库等文件,userdata.img包括了一些用户数据,android加载 这3个映像文件后,会把 system和 userdata分别加载到 ramdisk文件系统中的system和 data目录。

android启动时首先加载ramdisk.img镜像,并挂载到/目录下,并进行了一系列的初始化动作,包括创建各种需要的目录,初始化console,开启服务等。System.img是在init.rc中指定一些脚本命令,通过init.c进行解析并挂载到根目录下的/system目录下的。


http://blog.csdn.net/wuye110/article/details/8463820

  Android 源码编译后,在out/target/product/generic下生成的三个镜像文 件:ramdisk.img,system.img,userdata.img以及它们对应的目录树root,system,data。 ramdisk.img是根文件系统,system.img包括了主要的包、库等文件,userdata.img包括了一些用户数据,android加载 这3个映像文件后,会把 system和 userdata分别加载到 ramdisk文件系统中的system和 data目录下。

      Ramdisk镜像是采用cpio打包,gzip压缩的。用file验证:

[plain] view plain copy
 print?
  1. # file ramdisk.img      

输出:

[plain] view plain copy
 print?
  1. # ramdisk.img: gzip compressed data, from Unix   

为了便于说明问题,我们将ramdisk.img拷贝到其它一个目录,然后按以下步骤将ramdisk.img还原为目录树:

[plain] view plain copy
 print?
  1.   # mv ramdisk.img ramdisk.img.gz   
  2. # gunzip ramdisk.img.gz   
  3. # mkdir ramdisk   
  4. #cd ramdisk   
  5. # cpio i F ../ramdisk.img   
这样,就得到一个完整的ramdisk目录,与out/target/product/generic/root对比后,我们发现它们是一样的内容。 通过执行以下的操作,我们可由目录树再生成ramdisk镜像 
[plain] view plain copy
 print?
  1. # cd ramdisk   # find . | cpio -o -H newc | gzip > ../ramdisk-new.img  

        ramdisk.img其实是对root目录的打包和压缩,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缓存大

system.img userdata.img这两个镜像都属于yaffs2文件格式,生成方式是一样的。我们就以system.img为例来说明。

System.img 生成 system目录树 所需工具unyaffs

[plain] view plain copy
 print?
  1. # mkdir system   
  2. # cd system   
  3. # unyaffs ../system.img   

system目录树生成system.img 所需工具 mkyaffs2image,Android源码编译后会生成该工具,在 out/host/Linux-x86/bin 目录下。 命令格式:

[plain] view plain copy
 print?
  1. # mkyaffs2image system/ system_new.img  

system.img文件是system目录的一个映像,类似于linux的根文件系统的映像,放着android的应用程序,配置文件,字体等

        android启动时首先加载ramdisk.img镜像,并挂载到/目录下,并进行了一系列的初始化动作,包括创建各种需要的目录,初始化console,开启服务等。System.img是在init.rc中指定一些脚本命令,通过init.c进行解析并挂载到根目录下的/system目录下的。
对于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      用户文件夹,包含共享、键盘布局、时间区域文件等。 



http://blog.chinaunix.net/uid-11190335-id-3027498.html

http://tieba.baidu.com/p/2295325781



0 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 DNF拼图拼错了怎么办 p图照片有竖条怎么办 qq提示连接超时怎么办 苹果app涉赌怎么办 棋牌app涉赌怎么办 打闲来麻将老输怎么办 儿子欠老子钱不还怎么办 傲风电竞椅扶手坏了怎么办 桑蚕丝面料发黄了怎么办? 天然植物纤维面料发黄怎么办 阴阳师吸血姬血太厚了怎么办 电话被骗了钱怎么办 镇魔曲元宝被扣怎么办 镇魔曲以前的角色怎么办 镇魔曲手游转职后装备怎么办 镇魔曲个性标签任务怎么办 教师资格证申请表打不开怎么办 怎么办appstore换到日本 电脑内存太小怎么办 win10声音卡顿怎么办 录音播放卡顿怎么办 笔记本电脑玩dnf卡怎么办 龙之谷约惠码被删了怎么办 天涯明月刀马没有了怎么办 icloud照片无法同步怎么办 ipad不能下载app怎么办 ipad屏幕孔进水怎么办 ipad无法验证登录怎么办 dnf电脑配置低怎么办 淘宝直播粉丝不够怎么办 电脑页面显示不全怎么办 脸上发痒长痘怎么办 扣扣魔性表情泡泡消失怎么办 脚起小泡泡很痒怎么办 孕妇脚痒起水泡怎么办 孕妇手脚起湿疹怎么办 嘴巴破皮了怎么办 小便刺痛阴唇红肿怎么办 集成墙面挂照片怎么办 苹果电脑网页游戏打不开怎么办 苹果6plus发热怎么办