`
byebyegov5qq
  • 浏览: 1216428 次
文章分类
社区版块
存档分类
最新评论

Android的文件系统结构

 
阅读更多
<style type="text/css"> <!-- @page {margin:2cm} h1 {margin-top:0.49cm; margin-bottom:0.49cm; text-align:left; widows:2; orphans:2; page-break-after:auto} h1.western {font-family:"宋体","SimSun"} h1.cjk {font-family:"DejaVu Sans Light"} h1.ctl {font-family:"宋体","SimSun"} p {margin-bottom:0.21cm} --> </style>

/********************************************************************************************
* author:conowen@大钟
* E-mail:conowen@hotmail.com
* http://blog.csdn.net/conowen
* 注:本文为原创,仅作为学习交流使用,转载请标明作者及出处。

********************************************************************************************/


1、Android文件系统的结构

官方android源码编译后得到的文件如下:

其中有system.img,ramdisk.img,userdata.img三个映像文件。其中,ramdisk.img文件系统,system.img包括了主要的包、库等文件,userdata.img包括了一些用户数据,当emulator加载这3个映像文件后,会把system.imguserdata.img分别加载到ramdisk文件系统中的systemuserdata目录下。

2
、分离组建Android文件系统
system.img,ramdisk.img,userdata.img
映像文件是采用cpio打包、gzip压缩的,可以通过file命令验证:
filer amdisk.img
,输出:

其中ramdisk.img是一个分区映像文件,即是一个文件系统(root file system),,kernel启动时,ramdisk负责init,system.img包括了主要系统,系统app等,挂载于文件系统下的system文件夹, userdata.img包括了一些用户数据,被挂载到文件系统下的data文件夹下。

另外Android源码编译后还有root、system、data三个文件夹,其实就是上述三个img解压之后的内容而已,root文件夹里面的内容就是ramdisk.img解压后的内容,即是一个文件系统,包括system、data、bin、dev等目录。而system与data则对应着system.img与userdata.img的解压后的内容。

验证一下就行了,ramdisk.img复制一份到任何其他目录下,将其名称改为ramdisk.img.gz,并使用命令

然后新建一个名为ramdisk的文件夹,转到ramdisk目录,输入命令


这下,就能看见ramdisk里面的内容与root文件夹一样的了。然后把Android源码编译后生成的systemuserdata里的文件复制到ramdisk/systemramdisk/userdata下。这样就得到一个完整的文件系统了。

=====================================================================================================

附:Android文件系统(rootfs)(以下内容为转载)

Android的文件系统根目录的结构

Android的文件系统根目录的结构:



sqlite_stmt_journals:一个根目录下的tmpfs文件系统,用于存放临时文件数据。

cache: 是缓存临时文件夹,据说是除了T-mobile的OTA更新外,别无用处。
sdcard:是SD卡中的FAT32文件系统挂载的目录
etc:指向 /system/etc ,众所周知的配置文件存放目录

system:是一个很重要的目录,系统中的大部分东西都在这里了。

sys:用于挂载 sysfs文件系统。 在设备模型中,sysfs文件系统用来表示设备的结构.将设备的层次结构形象的反应到用户空间中.用户空间可以修改sysfs中的文件属性来修改设备的属性值sbin: 只放了一个用于调试的adbd程序

proc/proc文件系统下的多种文件提供的系统信息不是针对某个特定进程的,而是能够在整个系统范围的上下文中使用。
data:存放用户安装的软件以及各种数据。

root:什么都没有。

dev:不用多说了,设备节点文件的存放地。

下面介绍非目录的文件:

runme.sh用于 SD 卡中 EXT2文件系统的自动挂载动作的脚本。
init.trout.rc,init.rc,init.goldfish.rc 是初始化文件.
init是系统启动到文件系统的时候第一个运行的程序。


从以上的根目录分析来看,Android的根文件系统并非标准的Linux文件系统,所以以后还得仔细分析一下启动过程,才能认识Android系统。
今天要来分析一下Android文件系统的/system目录的结构。



着重介绍一下/system目录

/system目录是在Android文件系统占有及其重要的位置,基本上所有的工具和应用程序都在这个目录下,我看来是一个真正rootfs。他在Android手机中存放在nandflash的mtd3中,是一个yaffs2文件系统,在启动时被挂载在root的/system目录下,其中包含有:

下面逐个分析其中的目录:





xbin :下放了很多系统管理工具,这些工具不是到toolbox的链接,每个都是可执行程序。如果你看 到这些命令你会发现他们根本 不常用,他们都是为系统管理员准备的,是一些系统管理和配置工具。这个文件夹的作用相当于标准Linux文件系统中的 /sbin。我的手机此目录下有busybox,肯定是改过的,应该是破解者加上的。
modules:使用来存放内核模块(主要是fs和net)和模块配置文件的地方。
framework: 是JAVA平台的一些核心文件,属于JAVA平台系统框架文件。里面的文件都是.jar和.odex文件。
备注:什么是odex文件? odex是被优化过的JAVA程序文件,体积通常是.jar的4倍左右。执行效率比.jar高。
fonts :很显然,这是字体库文件的存放目录。
etc :这里存放了系统中几乎所有的配置文件,根目录下的/etc就链结于此。
build.prop:是一个属性文件,在Android系统中.prop文件很重要,记录了系统的设置和改变,类似于/etc中的文件。
media :里面主要是存放了系统的铃声的,分为 notifications(通知)、ui(界面)、alarms(警告)和ringtones(铃声),里面都是.ogg音频文件。
bin :众所周知,是存放用户常用的工具程序的,其中大部分是到toolbox的链接(类似嵌入式Linux中的busybox)。toolbox应该是google简化版的busybox,我还没深入研究过。
usr :用户的配置文件,如键盘布局、共享、时区文件等等。您可以cat 来看看。
app :顾名思义,存放的是Android系统自带的JAVA应用程序。
lost+found:yaffs文件系统固有的,类似回收站的文件夹,只有是yaffs文件系统都会有。
lib :存放几乎所有的共享库(.so)文件。
sd SD卡中的EXT2分区的挂载目录
init.rc :一个初始化脚本,用于将/system/modules和/system/xbin挂载为cramfs,避免系统被无意破坏。








  


  
分享到:
评论

相关推荐

    Android的文件系统结构及其引导过程的理解

    对Android的文件系统结构进程初步梳理,并初步分析其引导过程

    android的文件系统结构及其引导过程的初步理解

    android的文件系统结构及其引导过程的初步理解

    android系统文件结构

    Android系统文件夹结构解析,手机端部分命令。非常不错的系统文件结构解析。

    android文件系统

    经过这几天在网上搜索关于Android文件系统的相关资料,发现已经有很多高手分析了Android的文件系统,这些高手多从不同的方面分析了其文件系统的结构和运行原理。我这里就写一下自己的理解。 首先是Android的文件系统...

    Android12系统资源目录分析树状图pdf(使用xmind思维导图软件绘画,导出pdf文件,此是压缩包文件,需解压)

    自己整理的Android12版本的系统资源目录分析,包括各个目录对应的分支 art: Android Runtime,一种App运行模式,区别于传统的Dalvik虚拟机,旨在提高Android系统的流畅性.PDF...system:底层文件系统库、应用和组件.pdf

    Android文件操作

    system目录是在Android文件系统占有及其重要的位置,基本上所有的工具和应用程序都在这个目录下,我看来是一个真正的rootfs。他在Android手机中存放在nandflash的 mtd3中,是一个yaffs2文件系统,在启动时被挂载在...

    android 源代码结构

    Android 2.1 |-- Makefile |-- bionic (bionic C库) |-- bootable (启动引导相关代码) |-- build (存放系统编译规则及generic等基础开发包配置) |-- cts (Android兼容性测试套件标准) |-- dalvik (dalvik ...

    Android源代码结构分析.pdf

    Android源代码结构分析.pdf

    树形结构文件系统 基于android的文件管理系统

    基于Android的文件管理器的设计.。。。。。。。。。。。。。。。。。。。。。。

    android系统原理及开发要点详解

     第9章“Android的多媒体系统”,介绍Android的多媒体系统的核心部分,包括Android中多媒体系统的业务、结构、多媒体系统的核心框架、OpenCore系统结构和使用等内容。  第10章“Android的电话部分”,介绍Android...

    构建嵌入式android系统

    你想要把Android移植到其他嵌入式系统平台上吗?《构建嵌入式Android系统》将告诉你...了解Android的本地用户空间,包括根文件系统的布局、adb工具,以及Android的命令行。了解如何与Android框架进行交互或进行定制。

    安卓系统文件夹结构及其文件解析(详细)

    打开Android文件管理器,会发现里面数十个英文名称命名的文件夹罗列其中,很多功能我们可以从其名字上略有所知,内部大批量的文件却让我们有些一头雾水。这些文件是什么?有什么用?我们能不能删?这些都是我们脑中充满...

    Android购物商城app

    Android客户端可以直接安装在Android虚拟机上,也可以直接在手机中安装apk文件,apk文件在Ordering用户客户端和OrderManager管理员客户端的bin目录下,手机和服务器需要在一个局域网内,(需要在String.xml中修改...

    android手机短信管理系统论文 完整版

    第3章 android应用程序结构剖析 9 3.1 Android的API 9 3.2 Android应用程序结构解析 10 3.2.1 活动 10 3.2.2 意图接收器 11 3.2.3 服务 11 3.2.4 内容提供者 11 3.3 Intent的详细解析 12 3.3.1 Intent的抽象描述 12 ...

    Android驱动开发权威指南

    第2章Android体系结构 2.1四层空间基本结构 2.1.1 Android系统底层开发 2.1.2应用程序开发 2.2 Android代码目录结构 2.3 Android开发环境搭建 第二篇 勿于浮砂筑高台——Linux驱动基础篇 第3章Linux内核综述 3.1 OS...

    基于Android的家庭理财系统的设计与实现.rar(毕业论文设计+程序源码) android studio导入可直接打开

    2.1 Android平台的系统框架 2.2Android平台的特征 2.3Android平台的优势 2.4相关概念与技术 13 2.4.1资源文件与XML 13 2.4.2 SQLite 数据库 14 2.4.3图形用户界面与组件 14 2.4.4 Binder 机制 15 2.5本章小结 16 ...

    安卓Android开发电子书大全 2018 (1/4)

    Android嵌入式智能操作系统是基于Linux内核和驱动的,对于HTC、华为等公司开发Android操作系统时,...Android系统文件夹结构解析.doc Google.Android.SDK开发范例大全.第2版.rar Google.Android开发入门与实战.rar

    Android技术内幕.系统卷(扫描版)

    《android技术内幕:系统卷》 前言 第1章 准备工作 /1 1.1 深入认识android /2 1.1.1 android的系统构架 /2 1.1.2 android的初始化流程 /5 1.1.3 各个层次之间的相互关系 /8 1.1.4 android系统开发(移植)和应用...

    安卓系统文件夹结构及其文件解析

    安卓系统文件夹结构及其文件解析详细版本,现在将Android手机内部文件夹的架构和各文件的功能描述介绍给大家,让大家自己手机的内部资源有个比较透彻的理解,同时也避免了用户误删造成的数据丢失和系统崩溃。

Global site tag (gtag.js) - Google Analytics