当前位置: 首页 > news >正文

android ramdisk

android ramdisk  

 

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

3、使用网络文件系统方式挂载android文件系统
因此,我们需要建立/nfsroot目录,再建立/nfsroot/androidfs目录,把刚才的android文件系统改名为androidfs,并链接到/nfsroot/androidfs

4android内核引导文件系统
android内核挂载/nfsroot/androidfs之后,根据init.rc,init.goldfish.rc来初始化并装载系统库、程序等直到开机完成。init.rc脚本包括了文件系统初始化、装载的许多过程。init.rc的工作主要是:
1)设置一些环境变量
2)创建systemsdcarddatacache等目录
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

相关文章:

  • Ubuntu 12.04下安装QQ 2012 Beta3
  • arm交叉编译器gnueabi、none-eabi、arm-eabi、gnueabihf、gnueabi区别
  • 照片宽252*高312像素是几寸照片
  • LCD1602
  • HAL编译问题
  • Android中C可执行程序编译问题
  • JNI层问题
  • win7下制作ubuntu系统安装启动盘和U盘安装ubuntu全过程
  • 怎样在Ubuntu系统安装可用的QQ
  • linux硬件驱动层
  • mmm hardware/libhardware_legacy/power/
  • 如何在ubuntu下安装合适的翻译词典
  • DHT11温湿度传感器
  • 编译android出错
  • 复位电路工作原理
  • IE9 : DOM Exception: INVALID_CHARACTER_ERR (5)
  • [rust! #004] [译] Rust 的内置 Traits, 使用场景, 方式, 和原因
  • 【刷算法】从上往下打印二叉树
  • Apache Pulsar 2.1 重磅发布
  • JavaScript对象详解
  • JavaScript服务器推送技术之 WebSocket
  • Promise初体验
  • Python学习之路16-使用API
  • SAP云平台里Global Account和Sub Account的关系
  • Spring声明式事务管理之一:五大属性分析
  • 从输入URL到页面加载发生了什么
  • 基于遗传算法的优化问题求解
  • ------- 计算机网络基础
  • 全栈开发——Linux
  • 这几个编码小技巧将令你 PHP 代码更加简洁
  • 选择阿里云数据库HBase版十大理由
  • ​【C语言】长篇详解,字符系列篇3-----strstr,strtok,strerror字符串函数的使用【图文详解​】
  • ​2020 年大前端技术趋势解读
  • ### Error querying database. Cause: com.mysql.jdbc.exceptions.jdbc4.CommunicationsException
  • #Linux(Source Insight安装及工程建立)
  • (4)事件处理——(2)在页面加载的时候执行任务(Performing tasks on page load)...
  • (SpringBoot)第二章:Spring创建和使用
  • (附源码)计算机毕业设计SSM智慧停车系统
  • (心得)获取一个数二进制序列中所有的偶数位和奇数位, 分别输出二进制序列。
  • (转)AS3正则:元子符,元序列,标志,数量表达符
  • (转)mysql使用Navicat 导出和导入数据库
  • (转)nsfocus-绿盟科技笔试题目
  • (转载)Google Chrome调试JS
  • ***linux下安装xampp,XAMPP目录结构(阿里云安装xampp)
  • ***测试-HTTP方法
  • ./configure,make,make install的作用(转)
  • ./和../以及/和~之间的区别
  • .NET CORE Aws S3 使用
  • .net core 微服务_.NET Core 3.0中用 Code-First 方式创建 gRPC 服务与客户端
  • .NET6使用MiniExcel根据数据源横向导出头部标题及数据
  • .NetCore部署微服务(二)
  • //解决validator验证插件多个name相同只验证第一的问题
  • ?php echo ?,?php echo Hello world!;?
  • @EventListener注解使用说明
  • @KafkaListener注解详解(一)| 常用参数详解