文件系统根目录结构分析

Android文件系统根目录结构如下:

[plain]  view plain copy
  1. # ls -l  
  2. lrwxrwxrwx root     root              2011-01-01 20:00 bcm4329_cybertan.hcd -> /etc/bluez/bcm432x/BCM4329B1_002.002.023.0389.0000_Cybertan-Foxconn_Cls2_extLNA_EDRmaxInd  
  3. lrwxrwxrwx root     root              2011-01-01 20:00 bcm4329_usi.hcd -> /etc/bluez/bcm432x/BCM4329B1_USI_WM-BN-BM-01.hcd  
  4. lrwxrwxrwx root     root              2011-01-01 20:00 bcm4329_samsung.hcd -> /etc/bluez/bcm432x/BCM4329B1_TestOnly_0237_26MHz_SEMCO_B23.hcd  
  5. dr-x------ root     root              2011-01-01 20:00 config  
  6. drwxrwx--- system   cache             2011-01-01 20:00 cache  
  7. lrwxrwxrwx root     root              2011-01-01 20:00 udisk -> /mnt/udisk/usb  
  8. lrwxrwxrwx root     root              2011-01-01 20:00 flash -> /mnt/storage  
  9. lrwxrwxrwx root     root              2011-01-01 20:00 udiskint -> /mnt/udiskint  
  10. lrwxrwxrwx root     root              2011-01-01 20:00 sdcard -> /mnt/storage/sdcard  
  11. drwxr-xr-x root     root              2011-01-01 20:00 acct  
  12. drwxrwxr-x root     system            2011-01-01 20:00 mnt  
  13. lrwxrwxrwx root     root              2011-01-01 20:00 vendor -> /system/vendor  
  14. lrwxrwxrwx root     root              2011-01-01 20:00 d -> /sys/kernel/debug  
  15. lrwxrwxrwx root     root              2011-01-01 20:00 etc -> /system/etc  
  16. -rw-r--r-- root     root         1107 1970-01-01 08:00 ueventd.rk29board.rc  
  17. -rw-r--r-- root     root         3764 1970-01-01 08:00 ueventd.rc  
  18. -rw-r--r-- root     root            0 1970-01-01 08:00 ueventd.goldfish.rc  
  19. drwxr-xr-x root     root              2013-01-21 18:12 system  
  20. drwxr-xr-x root     root              1970-01-01 08:00 sys  
  21. drwxr-x--- root     root              1970-01-01 08:00 sbin  
  22. -rwxrwxrwx root     root       115047 1970-01-01 08:00 rk29xxnand_ko.ko  
  23. dr-xr-xr-x root     root              1970-01-01 08:00 proc  
  24. -rwxr-x--- root     root           45 1970-01-01 08:00 init_battery.sh  
  25. -rwxr-x--- root     root         4223 1970-01-01 08:00 init.rk29board.rc  
  26. -rwxr-x--- root     root        15898 1970-01-01 08:00 init.rc  
  27. -rwxr-x--- root     root         1677 1970-01-01 08:00 init.goldfish.rc  
  28. -rwxr-x--- root     root        94264 1970-01-01 08:00 init  
  29. -rw-r--r-- root     root          175 1970-01-01 08:00 default.prop  
  30. drwxrwx--x system   system            2011-01-01 20:52 data  
  31. drwx------ root     root              2013-01-04 17:57 root  
  32. drwxr-xr-x root     root              2011-01-01 20:00 dev  

cache:是缓存临时文件夹,据说是除了T-mobile的OTA更新外,别无用处。

sdcard:是Android手机中SD卡的文件夹路径。

etc:指向 /system/etc ,众所周知的配置文件存放目录

sys:用于挂载 sysfs文件系统。 在设备模型中,sysfs文件系统用来表示设备的结构。将设备的层次结构形象的反应到用户空间中,用户空间可以修改sysfs中的文件属性来修改设备的属性值 。

sbin:只放了一个用于调试的adbd程序。

proc/proc 文件系统下的多种文件提供的系统信息不是针对某个特定进程的,而是能够在整个系统范围的上下文中使用。

data:存放用户安装的软件以及各种数据。

root:空。

dev:Linux系统常规文件夹,里面的文件很多都是设备模拟的文件系统,一般用户无需理会。

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

[plain]  view plain copy
  1. # cd /system/  
  2. # ls -l  
  3. drwxr-xr-x root     root              2013-01-04 19:57 fonts  
  4. drwxr-xr-x root     root              2013-01-04 19:34 framework  
  5. drwxr-xr-x root     root              2011-01-01 20:25 etc  
  6. -rw-r--r-- root     root         2038 2013-01-21 18:11 build.prop  
  7. drwxr-xr-x root     shell             2013-01-06 18:29 bin  
  8. drwxr-xr-x root     shell             2013-01-04 19:57 xbin  
  9. drwxr-xr-x root     root              2012-12-31 11:05 lib  
  10. drwxr-xr-x root     root              2013-01-04 19:57 media  
  11. drwx------ root     root              2013-01-21 18:12 lost+found  
  12. drwxr-xr-x root     root              2013-01-04 19:57 usr  
  13. drwxr-xr-x root     root              2013-01-17 17:39 app  
  14. drwxr-xr-x root     root              2013-01-04 19:57 tts  
  15.   

udisk/flash/udiskint:都是到/mnt相应目录的软链接(挂载目录)。

sqlite_stmt_journals一个根目录下的tmpfs文件系统,用于存放临时文件数据。(Android原生态系统下存在)


下面介绍非目录的文件:

runme.sh用于 SD 卡中 EXT2文件系统的自动挂载动作的脚本。

init.trout.rc,init.rc,init.goldfish.rc 是初始化文件.

init是系统启动到文件系统的时候第一个运行的程序。

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


主要来分析一下Android文件系统的/system目录的结构:

/system目录是在Android文件系统占有及其重要的位置,基本上所有的工具和应用程序都在这个目录下,我看来是一个真正的rootfs。

它在Android手机中存放在nandflash的mtd3中,是一个yaffs2文件系统,在启动时被挂载在root的/system目录下,其中包含有:

[plain]  view plain copy
  1. drwxr-xr-x root     root              2013-01-04 19:57 fonts  
  2. drwxr-xr-x root     root              2013-01-04 19:34 framework  
  3. drwxr-xr-x root     root              2011-01-01 20:25 etc  
  4. -rw-r--r-- root     root         2038 2013-01-21 18:11 build.prop  
  5. drwxr-xr-x root     shell             2013-01-06 18:29 bin  
  6. drwxr-xr-x root     shell             2013-01-04 19:57 xbin  
  7. drwxr-xr-x root     root              2012-12-31 11:05 lib  
  8. drwxr-xr-x root     root              2013-01-04 19:57 media  
  9. drwx------ root     root              2013-01-21 18:12 lost+found  
  10. drwxr-xr-x root     root              2013-01-04 19:57 usr  
  11. drwxr-xr-x root     root              2013-01-17 17:39 app  
  12. drwxr-xr-x root     root              2013-01-04 19:57 tts  

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

其它:

media/audio:这里面保存着安卓系统默认的铃声,alarms是闹铃提醒的,notification是短信或提示音,ringtones是来电铃声,而ui是一些界面音效,比如键盘敲击声。

data/data:这里是每个安装过应用的用户文件存储位置,一般为设置文件、数据库或临时缓存文件,进入后以每个软件的package name包名来命名。

mnt/sdcard/dcim或/sdcard/dcim:这个DCIM文件夹是干什么用的,这里android123提示大家,一般数码相机都有DCIM文件夹,其中进入后Camera为手机摄像头拍摄的照片或视频存放位置。


针对RAM和ROM进行分析:

    一部Android手机存在不同的存储空间类型。512MB ROM和512MB RAM,还有一个SDHC的扩展槽,标配2G内存卡,最大可支持32G内存卡。那么这些数据都是什么意思呢?

RAM:

    RAM是Random Access Memory的缩写,中文名称是随机存取存储器。对于大多数的计算机和智能手机来说,RAM可以使一个软件快速并直接地读取和写入数据。当断电的时候RAM中的内容就会丢失,比如手机关机。RAM的大小决定了你能同时运行几个程序,也决定了你最大能加载多大的文件。当RAM不足的时候就会提示“Out of memory”错误。因为Android 2.2能提前预测当需要内存的时候,哪一个程序将要被从RAM中去除,所以RAM的信息并没有显示到“设置”菜单里。Android 2.2之前的版本最大只支持256MB内存,但是Android 2.2可以支持大容量内存,比如512MB RAM。

ROM:

    ROM是Read-Only Memory的缩写。以前常用来表示一旦出厂后上面存储的数据就不能被修改,同时即使没有电,数据也不会丢失。后来,一种新型的ROM——EEPROM,代替了原来的ROM。这种EEPROM允许用高一点的电压改写数据以便用于升级。以后Flash Memory(闪存)代替了EEPROM,闪存可以很容易的修改内容。现在我们说智能手机中的ROM一般指的是Flash Memory了。

    手机中的ROM一般被分成若干区域。在Android中,有一部分被分给了操作系统,分给操作系统的这部分通常被保护起来,用户不能向里面写入数据。通常我们说Rooting指的就是获得操作系统的最高权限,因此我们可以读取和写入到这部分区域。比如替换系统默认的图片。

    另外ROM还分了一部分空间给用户作为存储数据用,用于存储下载应用程序,保存用户数据等。这部分区域已经完全脱离了“Read-Only”,不再“只读”。在Android 2.2版本中,这部分空间被挂载到/mnt/asec目录下,我们可以进入查看下载的应用程序的APK文件。这部分空间有时被称作“手机内部存储”,想一下Windows中的C盘,windows的文件夹是不可见的并且在系统分区。在我的LG Optimus中,最初有180MB可用,这些可用的空间随着安装的程序的增多而变小。我们可以通过“设置”-“SD卡和手机内存”-“手机内部存储”来查看剩余的空间大小。最后强调一点,当可用空间变得非常小的时候,就不能再下载或者安装应用程序了。

Micro SD/SDHC

    这是增加手机存储空间的唯一方法。他相当于一个计算机的外部硬盘。LG Optimus出厂的时候配置了一个2GB SD卡,我们用32GB及以下的内存卡替换掉他。SD卡目录挂载到/mnt/sdcard目录下,可以去“设置”-“SD卡和手机内存”-“SD卡”查看。

    在SD卡上,你可以存储任何的数据,电影,音乐,照片等随你。如果你喜欢你可以把手机作为一个(非常昂贵的)读卡器^_^。在Android 2.2手机中,一部分应用程序可以从手机内部存储移动到SD卡上,以便节约宝贵的内部存储空间。不过你得记住,不是所有的程序或者程序的一部分能被移动到SD卡上的。所以,如果你的手机内部存储空间几乎没有空闲,通过一味的增大SD卡的容量,并不会对你有帮助。

    当你想替换一个SD卡的时候,记得在抠下老的SD卡之前,先去“设置”-“SD卡和手机内存”-“SD卡”-“卸下SD卡”(别忘了Android是基于Linux的)。新插入的SD卡会自动的被加载。

    想要得到内存和存储卡的更详细信息,需要安装第三方相关应用程序。

更多相关文章

  1. Android 打开文件管理器 获取文件的真实路径
  2. Android 文件上传参考
  3. Android 的cpu 硬盘 内存 网络设置 系统信息 硬件信息
  4. android SD卡文件变化监控
  5. Android学习笔记(11)————Android的私人文件夹的文件读写操作
  6. android系统服务启动顺序
  7. android一种较为复杂的布局参考(xml文件)
  8. android读取工程里文件并显示在界面
  9. android获得系统时间(Handler)

随机推荐

  1. 用小鸟云服务器搭建网站常用的伪静态设置
  2. Vue 中的 .sync 修饰符stop修饰符prevent
  3. MVC架构模式思想
  4. 硬盘亮黄灯没有及时处理?服务器数据恢复案
  5. PHP初识字符串
  6. 一些小例子
  7. 聊一聊如何把SSL证书安装到小鸟云服务器
  8. 关于开发视图
  9. 小鸟云服务器 新增香港高防云服务器,抵御D
  10. VMWARE ESX SERVER虚拟化数据恢复过程总