Android文件系统深入剖析

转载 2011年01月23日 13:44:00
  • Android文件系统具有什么样的结构?我们如何才能将这一文件系统分离出来?又能以何种方式挂载文件系统呢?这些问题都会在文中找到具体的解决答案。

 

用过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缓存大小

《深入剖析tomcat》读书笔记2

《深入剖析tomcat》读书笔记准备写四篇,这篇是第二篇,分析默认连接器,对应书籍的第四章。第三篇分析容器,第四篇来个纵向总结,顺便回答第一篇开头提出的问题。 第四章  Tomcat默认连接器 ...
  • randyjiawenjie
  • randyjiawenjie
  • 2013年03月23日 17:11
  • 1879

深入剖析Tomcat-第一章

--开始学习Tomcat服务器,学习代码,自己注释一下。 import java.io.File; import java.io.IOException; import java.io.Input...
  • u011345136
  • u011345136
  • 2015年04月24日 20:17
  • 735

Android文件系统深入剖析

来自:http://www.webgou.info/content/programming/251/ 用过Linux的朋友可能对开源的系统有一个非常好的印象。那么在日益成熟的手机操作系统中,有没...
  • a343315623
  • a343315623
  • 2016年05月16日 18:28
  • 102

深入剖析 mybatis 原理(一)

# 前言在java程序员的世界里,最熟悉的开源软件除了 Spring,Tomcat,还有谁呢?当然是 Mybatis 了,今天楼主是来和大家一起分析他的原理的。...
  • qq_38182963
  • qq_38182963
  • 2017年12月17日 13:13
  • 34

[深入剖析Tomcat]一个简单的servlet容器实现

本文为读《深入剖析Tomcat》第2章做的笔记、写的代码、做的分析。作者是菜鸟,谨慎参考 实现流程图 HttpServer类: public class HttpServer1 { priva...
  • tzh476
  • tzh476
  • 2017年04月02日 04:38
  • 714

深入解析HTTP与HTTPS

转载自: http://www.mahaixiang.cn/internet/1233.html 超文本传输协议HTTP协议被用于在Web浏览器和网站服务器之间传递信息,HTTP协议以明文方式...
  • qq_28385797
  • qq_28385797
  • 2016年12月07日 12:23
  • 176

Linux内核sys_poll实现原理

poll的功能: 可以监视多个文件描述符,一旦某个文件描述符就绪(一般是读就绪或者写就绪),就能够通知应用程序进行相应的读写操作。 poll核心代码:for (;;) { struct po...
  • u011673554
  • u011673554
  • 2015年09月04日 01:28
  • 845

新书上市《深入解析Android 5.0系统》

《深入解析Android 5.0系统》详细剖析了最新Android 5.0 系统主要框架的原理和具体实现。本书共24章,覆盖了Android 5.0 系统中、下层重要的模块,对于每个模块都详细介绍了它...
  • u013234805
  • u013234805
  • 2015年05月02日 10:38
  • 3422

深入剖析Tomcat 第八章 载入器

tomcat
  • zxd1435513775
  • zxd1435513775
  • 2017年03月28日 15:57
  • 161

printf函数实现的深入剖析

http://blog.tianya.cn/blogger/post_show.asp?BlogID=462085&PostID=8363874研究printf的实现,首先来看看printf函数的函数...
  • ztguang
  • ztguang
  • 2016年03月30日 10:19
  • 255
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Android文件系统深入剖析
举报原因:
原因补充:

(最多只允许输入30个字)