android ramdisk

1、android文件系统的结构
android源码编译后得到system.img,ramdisk.img,userdata.img映像文件。其中, ramdisk.img是emulator的文件系统,system.img包括了主要的包、库等文件,userdata.img包括了一些用户数 据,emulator加载这3个映像文件后,会把 system和 userdata分别加载到 ramdisk文件系统中的system和 userdata目录下。因此,我们可以把ramdisk.img里的所有文件复制出来,system.img和userdata.img分别解压到 ramdisk文件系统中的system和 userdata目录下。

2、分离android文件系统出来
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 
Android源码编译后除了生成system.img,userdata.img之外还生成system和 userdata文件夹,因此不需要解压它们。Android源码编译后还生成root文件夹,其实root下的文件与 ramdisk.img 里的文件是一样的,不过这里还是介绍怎样把 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下。这样就得到一个文件系统了。

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系统编译完后,在out/target/product/generic/目录下产出了三个文件:system.img、ramdisk.img、userdata.img。

  • system.img:android系统的文件系统,里面包含了android系统的应用程序(apk),系统用到的各种库(jar, so)和资源,配置文件(etc目录下),系统命令(bin,usr/bin, xbin),该映像文件是由out/target/product/generic/system目录打包生成的,我们可以对这个目录里的东西进行定制化,比如,你要想让android系统默认安装一个应用程序,那么可以将要安装的apk文件拷贝到out/target/product/generic/system/app目录下。
  • userdata.img:用户数据映像,里面包含有程序安装信息等,好比如是windows的C:/Program Files/目录。
  • ramdisk.img:内存磁盘映像。linux内核启动起来,要挂载一个文件系统作为自己的根文件系统,里面含有Linux内核启动过程中依赖的一些程序和配置文件。ramdisk.img就是一个最小化的根文件系统,它被加载到内存中作为Android的根文件系统。该映像是由out/target/product/generic/root目录打包生成的。前面所述的userdata.img和system.img映像,在linux系统启动起来后挂载到ramdisk.img中的data,system目录下。

转载于:https://www.cnblogs.com/Ph-one/p/4305187.html

android ramdisk相关推荐

  1. Android ramdisk.img system.img userdata.img 介绍与使用

    android源码编译后得到system.img,ramdisk.img,userdata.img映像文件.其中, ramdisk.img是emulator的文件系统,system.img包括了主要的 ...

  2. android ramdisk.img 编译,韦东山-tiny4412(android 5.0.2)编译生成的 ramdisk.img 无法启动 - 百问网嵌入式问答社区...

    tiny4412(android 5.0.2)编译生成的 ramdisk.img 无法启动 [    3.760726] dm962x:  [Analysis.2] 0xF2, D[5] 0 EP1: ...

  3. 处理硬件设备访问权限问题

    在硬件抽象层模块中,我们是调用open函数来打开对应的设备文件的.例如,在2.3.2小节中开发的硬件抽象层模块freg中,函数freg_device_open调用open函数来打开设备文件/dev/f ...

  4. Android系统源码学习——ramdisk.img、system.img、userdata.img三个文件介绍

    2019独角兽企业重金招聘Python工程师标准>>> Android源码编译后,在out/target/product/generic下生成的三个镜像文件:ramdisk.img, ...

  5. android 自编译 img,android源码编译生成ramdisk.img和system.img解压和使用(基于海天雄A9+android2.3.3)...

    bin.tar.gz里有simg2img和make_ext4fs两个工具. 一.解压和打包system.img ./simg2img system.img system.img.ext4 生成ext4 ...

  6. Android 的 ramdisk.img、system.img、userdata.img 作用说明,以及UBoot 系统启动过程

    首先通過編譯,先將android內核編譯成功.正常情況下,在目錄out/target.product/generic/(但是有的就沒有generic文件,如freescale和iriver:但是lon ...

  7. Android构建boot.img(一):root目录与ramdisk.img的生成

    以TCC88XX为例,当在Android顶层源码目录使用make编译完成后,会生成这样一个目录: out/target/product/tcc8800,该目录内部有我们需要的boot.img和syst ...

  8. android 修改ramdisk.img和init.rc android启动后设置/data权限为770

    有时候希望在启动后做点事情,比如在sdcard上建立目录,修改/data的访问权限等,这些都可以放在init.rc中去完成,那么如何来完成呢,最近由于工作的需要,在这方面进行了一些研究,特写于此,供大 ...

  9. Android构建boot.img:root目录与ramdisk.img的生成

    以TCC88XX为例,当在Android顶层源码目录使用make编译完成后,会生成这样一个目录: out/target/product/tcc8800,该目录内部有我们需要的boot.img和syst ...

最新文章

  1. proxmox 宕机转义_Proxmox+Ceph的HCI环境搭建
  2. 高斯混合模型Gaussian Mixture Model (GMM)——通过增加 Model 的个数,我们可以任意地逼近任何连续的概率密分布...
  3. zabbix_get 命令介绍
  4. 【数组】—冒泡排序选择排序---【巷子】
  5. [转载] Python 递归 深入理解递归 Python递归剖析,绝对让你看懂!
  6. 把变量赋值给寄存器_阻塞赋值和非阻塞赋值的区别与记忆
  7. lightslider-支持移动触摸的轻量级jQuery幻灯片插件
  8. python代码如何做成应用程序_如何发布你的Python应用程序
  9. EdgeGallery — MEP — APIs
  10. 常用Jquery插件整理大全
  11. 软件测试工程师职业规划怎么写,软件测试工程师的职业生涯规划
  12. java课程设计动态祝福卡_巧用代码制作动态图文贺卡【平安夜祝福】
  13. android 手机左右移动图片轮播,js实现支持手机滑动切换的轮播图片效果实例
  14. docker使用和部署
  15. Linux定时任务工具crontab详解及系统时间同步
  16. iOS 9:四、设置信任
  17. 语义分割各种评价指标实现
  18. 舒亦梵:这十个小技巧,教你炒黄金长久获利
  19. (纪中)2246. 恐怖分子(gun)
  20. PCIE ARI技术

热门文章

  1. Objective-C 工厂方法
  2. VQEG(视频质量专家组)
  3. 无关技术,关于香港对我的影响
  4. 删除U盘作为启动盘的隐藏启动分区
  5. 【原创】2009个性签名和流行语搜集
  6. Mac OS X连载-1。启动模式小技巧
  7. Mybatis与Spring整合之配置文件方式
  8. Flutter混合开发:Android中如何启动Flutter
  9. 【python】装饰器
  10. 以太坊源码分析——BlockChain