`
liujianguangaaa
  • 浏览: 237150 次
  • 性别: Icon_minigender_1
  • 来自: 湖南
社区版块
存档分类
最新评论

Android 根文件系统分析

阅读更多
经过这几天在网上搜索关于Android 文件 系统 的相关资料,发现已经有很多高手 分析了Android的文件系统,这些高手多从不同的方面分析了其文件系统的结构和运行原理。我这里就写一下自己的理解。
首先是Android的文件系统根目录的结构:
# pwd && ls -a -l
/
drwxrwxrwt root      root              2009-06-10 09:53 sqlite_stmt_journals
drwxrwx--- system   cache             2008-09-06 22:51 cache
d---rwxrwx system   system            1970-01-01 08:00 sdcard
lrwxrwxrwx root     root              2009-06-09 22:11 etc -> /system/etc
drwxr-xr-x root     root              2008-09-06 22:45 system
drwxr-xr-x root     root              1970-01-01 08:00 sys
drwxr-x--- root     root              1970-01-01 08:00 sbin
-rw-r--r-- root     root          117 1970-01-01 08:00 runme.sh
dr-xr-xr-x root     root              1970-01-01 08:00 proc
-rwxr-x--- root     root         1704 1970-01-01 08:00 init.trout.rc
-rwxr-x--- root     root         9329 1970-01-01 08:00 init.rc
-rwxr-x--- root     root         1677 1970-01-01 08:00 init.goldfish.rc
-rwxr-x--- root     root       106636 1970-01-01 08:00 init
-rw-r--r-- root     root          118 1970-01-01 08:00 default.prop
drwxrwx--x system   system            2008-09-06 22:51 data
drwx------ root     root              2009-06-07 16:29 root
drwxr-xr-x root     root              2009-06-09 22:11 dev
sqlite_stmt_journals :一个根目录下的tmpfs文件系统,用于存放临时文件数据。
cache : 是缓存临时文件夹,据说是除了T-mobile的OTA更新外,别无用处。
sdcard :是SD卡 中的FAT32文件系统挂载的目录
etc   :指向 /system/etc ,众所周知的配置文件存放目录
system :是一个很重要的目录,系统中的大部分东西都在这里了,以下是目录结构:
# ls -a -l /system
drwxr-xr-x root     208               1970-01-01 08:00 xbin
drwxr-xr-x root     root              1970-01-01 08:00 modules
drwxr-xr-x root     root              2008-08-01 20:00 framework
drwxr-xr-x root     root              2008-08-01 20:00 fonts
drwxr-xr-x root     root              2008-08-01 20:00 etc
-rw-r--r-- root     root         2197 2008-08-01 20:00 build.prop
drwxr-xr-x root     root              2008-08-01 20:00 media
drwxr-xr-x root     shell             2008-08-01 20:00 bin
drwxr-xr-x root     root              2008-08-01 20:00 usr
drwxr-xr-x root     root              2008-08-01 20:00 app
drwxr-xr-x root     root              2008-09-06 22:45 lost+found
drwxr-xr-x root     root              2008-08-01 20:00 lib
drwxr-xr-x root     root              2008-08-01 20:00 sd
-rw-r--r-- root     root          145 2008-08-01 20:00 init.rc

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目录是在Android文件系统占有及其重要的位置,基本上所有的工具 和应用程序 都在这个目录下,我看来是一个真正的root fs。他在Android手机 中存放在nandflash的mtd3中,是一个yaffs2文件系统,在启动时被挂载在root的/system目录下,其中包含有:
# pwd && ls -a -l
/system
drwxr-xr-x root     208               1970-01-01 08:00 xbin
drwxr-xr-x root     root              1970-01-01 08:00 modules
drwxr-xr-x root     root              2008-08-01 20:00 framework
drwxr-xr-x root     root              2008-08-01 20:00 fonts
drwxr-xr-x root     root              2008-08-01 20:00 etc
-rw-r--r-- root     root         2197 2008-08-01 20:00 build.prop
drwxr-xr-x root     root              2008-08-01 20:00 media
drwxr-xr-x root     shell             2008-08-01 20:00 bin
drwxr-xr-x root     root              2008-08-01 20:00 usr
drwxr-xr-x root     root              2008-08-01 20:00 app
drwxr-xr-x root     root              2008-09-06 22:45 lost+found
drwxr-xr-x root     root              2008-08-01 20:00 lib
drwxr-xr-x root     root              2008-08-01 20:00 sd
-rw-r--r-- root     root          145 2008-08-01 20:00 init.rc
下面逐个分析其中的目录:

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,避免系统被无意破坏。

好了,/system目录的结构的结构就简单分析到这里.


明天开始分析Android文件系统的启动过程。

 

 原文地址 http://www.hiapk.com/bbs/thread-6386-1-1.html

分享到:
评论

相关推荐

    android根文件系统分析总结

    ### Android根文件系统分析总结 #### 一、Android源代码文件系统部分介绍 在深入了解Android根文件系统的构建之前,我们先来简要回顾一下Android源代码的组织结构。当从Google获取到完整的Android源代码后,经过在...

    Android 根文件系统分析.doc

    本文将深入分析Android根文件系统的结构及其主要组件。 首先,Android根目录下包含了多个关键目录和文件。如`/sqlite_stmt_journals`是一个临时文件系统,用于存储SQLite数据库执行过程中产生的临时数据。`/cache`...

    linux 内核启动过程以及挂载android 根文件系统的过程

    ### Linux内核启动过程及Android根文件系统的挂载 #### Linux内核启动流程概览 Linux内核的启动过程是一个复杂而有序的过程,涉及到多个关键步骤。为了更好地理解这一过程,我们将从架构特定的启动代码开始,逐步...

    基于android系统的文件浏览器

    Android系统采用Linux内核,因此其文件系统与传统的Linux文件系统类似,主要由以下几个部分组成: 1. /system:包含系统核心文件,如库、框架和预装应用。 2. /data:存储应用程序数据,如数据库、缓存和用户配置...

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

    2. **ramdisk.img**:作为初始的只读文件系统,ramdisk.img在内核启动时加载,用于执行初始化脚本(如/init),并帮助挂载真正的根文件系统。它包含了一些基本的工具和配置文件,是系统启动的第一步。 3. **...

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

    在本文中,我们将深入探讨“树形结构文件系统”以及基于Android的文件管理系统的设计与实现。树形结构文件系统是计算机科学中的基本概念,它用于组织和存储数据,尤其是在操作系统中。在Android平台上,文件管理器是...

    Android应用源码可以管理U盘的文件管理器

    在管理U盘文件时,需要确保正确处理文件路径,因为U盘的根目录通常不同于手机内部存储或SD卡。 设计用户界面(UI)是另一个关键点。一个良好的文件管理器应提供浏览、创建、删除、重命名、复制和移动文件的功能。你...

    Android驱动开发热门资料.zip

    《Android核心技术与实例详解》PPT ...Android根文件系统分析总结.pdf Android入门之HelloWorld.pdf Android系统开发--HAL层开发基础(1).doc Android硬件驱动开发关键技术和HAL移植要领.pdf HAL_sensor模型分析.doc

    android 文件浏览器

    1. Android文件系统:Android采用Linux内核,因此其文件系统与传统的Linux文件系统类似,包括根目录、挂载点、文件和目录等。 2. Android存储空间:Android设备通常有两种存储方式,内部存储(Internal Storage)和...

    android文件选择对话框

    Android设备的文件系统分为不同的分区,如内部存储和外部存储(SD卡)。用户文件通常存储在`Android/data/your_package_name/files`或`Android/media/your_package_name`等路径下。在处理文件选择时,我们需要获得...

    Android系统源代码情景分析光盘

    Android系统源代码情景分析光盘资料 目录 第1篇初识Android系统 第1章 准备知识................................................................ 2 1.1 Linux内核参考书籍......................................

    《Android系统源代码情景分析》

    《Android系统源代码情景分析》随书光盘内容(源代码) 目录如下: 第1篇 初识Android系统 第1章 准备知识 1.1 Linux内核参考书籍 1.2 Android应用程序参考书籍 1.3 下载、编译和运行Android源代码 ...

    android init全过程分析

    通过 `adb` 命令,我们可以将模拟器中的数据目录复制到本地,然后覆盖到目标设备的根文件系统中。在某些情况下,可能需要修改 `init.rc` 文件以适应特定的文件系统格式,例如取消对非当前使用的文件系统的挂载。 ...

    Android文件管理器源代码

    通过分析和学习这个源代码,你可以掌握Android应用开发的基本技巧,了解如何与文件系统交互,并提升在实际项目中的应用能力。同时,这也是一个锻炼面向对象编程、用户界面设计和系统级编程的绝佳实例。

    Android 文件管理器源码.zip

    Android文件管理器通常基于Android的文件系统结构,如Linux的EXT4文件系统,这包括根目录、内部存储、外部存储(SD卡)等。源码会展示如何遍历这些目录,并显示在UI上。在Android中,文件和目录的访问通常通过`java....

    android读取Excel文件(Android studio开发环境)

    在Android平台上,读取Excel文件是一项常见的需求,例如在数据导入、数据分析或报表展示等场景。本项目将探讨如何在Android Studio开发环境中实现这一功能。首先,我们需要了解Android对文件操作的基本方法,以及...

    [转]Android文件管理器介绍

    首先,我们需要了解Android的文件系统结构。Android采用Linux内核,因此其文件系统基于POSIX标准,主要包括以下部分: 1. `/`: 根目录,包含系统的主要分区,如系统分区(`/system`),数据分区(`/data`)等。 2. `/...

    android 存储简要分析

    本文将对“android 存储简要分析”这一主题进行深入探讨,基于提供的博客链接(尽管未给出具体内容,但我们将根据一般知识进行讲解)以及文件“android存储的学习.txt”的暗示,来详细解析Android中的存储机制。...

    Android文件浏览器

    1. **文件系统结构**:Android基于Linux内核,因此其文件系统遵循Unix-like的目录结构,包括根目录(/)、系统目录(如/system、/data等)、用户数据目录(/data/data)和外部存储(/storage/emulated/0)等。...

    Android系统源代码情景分析-罗升阳-源码

    《Android系统源代码情景分析》随书光盘内容(源代码) 目录如下: 第1篇 初识Android系统 第1章 准备知识 1.1 Linux内核参考书籍 1.2 Android应用程序参考书籍 1.3 下载、编译和运行Android源代码 1.3.1 下载...

Global site tag (gtag.js) - Google Analytics