当前位置:首页 > 编程开发

Android文件系统深入剖析

webgou16年前 (2010-08-08)编程开发126

用过Linux的朋友可能对开源的系统有一个非常好的印象。那么在日益成熟的手机操作系统中,有没有一款像Linux一样的开源系统呢?谷歌公司就退出了一款基于Linux平台的Android 操作系统来满足人们的需求。在这里大家可以先来了解一下Android文件系统的相关内容。

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命令验证:

  1. file ramdisk.img 

输出:

  1. 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,并使用命令

  1. gunzip ramdisk.img.gz 

然后新建一个文件夹,叫ramdisk吧,进入,输入命令

  1. 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缓存大小

扫描二维码推送至手机访问。

版权声明:本文由知了博客发布,如需转载请注明出处。

本文链接:https://www.webgou.info/?id=251

标签: androidos
分享给朋友:

“Android文件系统深入剖析” 的相关文章

全系列Unity4.x.x到5.6.2破解Win&Mac!

 http://blog.csdn.net/Weltraum__/article/details/74315604 Unity官网所有版本下载地址请戳: ...…

整数转换为字符串方法

方法1: #include //函数名: itoa //功 能: 把一整数转换为字符串 //用 法: char *itoa(int value, char *string, int radix); int main(void) { int number = 12345678;…

Shader 进度条/技能CD特效

用了几天弄明白了这个简单的进度条,不容易。主要是利用了三角函数反正切函数特性,在夹角范围内的值透明度设为0,不在范围内值设成1.对于shader 编辑器,可以用forge 以及amplify.贴上测试代码:// Made with Amplify Shader Editor// Available…

基于PassThru的NDIS中间层驱动程序扩展

创建时间:2006-05-02 更新时间:2006-05-05文章属性:原创文章提交:Addylee (Addylee2004_at_163.com)基于PassThru的NDIS中间层驱动程序扩展        &nb…

关于函数指针

Typedef 声明有助于创建平台无关类型,甚至能隐藏复杂和难以理解的语法。不管怎样,使用 typedef 能为代码带来意想不到的好处,通过本文你可以学习用 typedef 避免缺欠,从而使代码更健壮。 typedef 声明,简称 typedef,为现有类型创建一个新的名字。比如人们常常使用 ty…

sandy 旋转例子

以下是用sandy 1.2库编写,可以在flash lite 3.1上运行。用cs4开发.由于下载不了源码,不过可以自行新建一fla(flash源文件)文件,然后按照下面方法加载图片: 1.把相应图片导入到库中 2.然后把图片转换成影片,并导出去。 3.用导出的名字替换掉(new MovieSki…

发表评论

访客

看不清,换一张

◎欢迎参与讨论,请在这里发表您的看法和观点。