• Android平台根目录文件


    > 系统分区

    # adb shell

    # mount

    rootfs / rootfs ro 0 0
    tmpfs /dev tmpfs rw,mode=755 0 0
    devpts /dev/pts devpts rw,mode=600 0 0
    proc /proc proc rw 0 0
    sysfs /sys sysfs rw 0 0
    none /acct cgroup rw,cpuacct 0 0
    tmpfs /mnt/asec tmpfs rw,mode=755,gid=1000 0 0
    none /dev/cpuctl cgroup rw,cpu 0 0
    /dev/block/mtdblock0 /system yaffs2 ro 0 0
    /dev/block/mtdblock1 /data yaffs2 rw,nosuid,nodev 0 0
    /dev/block/mtdblock2 /cache yaffs2 rw,nosuid,nodev 0 0
    /dev/block/vold/179:0 /mnt/sdcard vfat rw,dirsync,nosuid,nodev,noexec,uid=1000,gid=1015,fmask=0702,dmask=0702,allow_utime=0020,codepage=cp437,iocharset=iso8859-1,shortname=mixed,utf8,err  ors=remount-ro 0 0
    /dev/block/vold/179:0 /mnt/secure/asec vfat rw,dirsync,nosuid,nodev,noexec,uid=1000,gid=1015,fmask=0702,dmask=0702,allow_utime=0020,codepage=cp437,iocharset=iso8859-1,shortname=mixed,utf  8,errors=remount-ro 0 0
    tmpfs /mnt/sdcard/.android_secure tmpfs ro,size=0k,mode=000 0 0

      以上就是 Android 系统的分区结构,可见其挂载方式和 Linux 非常类似,熟悉 Linux 的朋友应该能很容易的看出这些分区的作用大概是什么。

    其中需要说明一下的可能是 /dev/block/mtdblock* 这几个核心分区(写入 ROM 的),他们都是使用 yaffs2 文件系统(基于 FLASH 存储),

    其中是 /system 这个分区只有特殊的 ro 只读权限,由此可见 Android 在安全性设计方面所下的一些功夫。另外 /dev/block/vold 据说是设计

    来替代 udev 的功能,主要用于支持一些热插拔设备。

    > 目录概览

    # ls -l

    dr-x------ root     root              2011-08-18 10:36 config
    drwxrwx--- system   cache             2011-06-21 05:32 cache
    lrwxrwxrwx root     root              2011-08-18 10:36 sdcard -> /mnt/sdcard
    drwxr-xr-x root     root              2011-08-18 10:36 acct
    drwxrwxr-x root     system            2011-08-18 10:36 mnt
    lrwxrwxrwx root     root              2011-08-18 10:36 d -> /sys/kernel/debug
    lrwxrwxrwx root     root              2011-08-18 10:36 etc -> /system/etc
    drwxr-xr-x root     root              2010-06-30 21:06 system
    drwxr-xr-x root     root              1970-01-01 00:00 sys
    drwxr-x--- root     root              1970-01-01 00:00 sbin
    dr-xr-xr-x root     root              1970-01-01 00:00 proc
    -rwxr-x--- root     root        12995 1970-01-01 00:00 init.rc
    -rwxr-x--- root     root         1677 1970-01-01 00:00 init.goldfish.rc
    -rwxr-x--- root     root       107412 1970-01-01 00:00 init
    -rw-r--r-- root     root          118 1970-01-01 00:00 default.prop
    drwxrwx--x system   system            2011-08-12 06:54 data
    drwx------ root     root              2010-01-28 00:59 root
    drwxr-xr-x root     root              2011-08-18 10:36 dev

      以上是 Android 根目录下文件目录,根据之前的分区结构可以大致看出每个目录的所处位置和大致功能,

    以下是几个重要目录/文件的说明:

      1、mnt                挂载点目录

      2、etc                系统主要配置文件

      3、system            Android 系统文件

      4、sys                Linux 内核文件

      5、proc                运行时文件

      6、init.rc            启动脚本

      7、default.prop        系统属性配置文件

      8、data                用户程序目录

      9、dev                设备文件

     

    system目录:

    # ls -l /system

    drwxr-xr-x root     root              2010-06-30 21:03 usr
    drwxr-xr-x root     root              2010-06-30 21:07 app
    drwxr-xr-x root     root              2010-06-30 21:05 lib
    drwxr-xr-x root     root              2010-06-30 21:07 etc
    drwxr-xr-x root     root              2010-06-30 21:06 framework
    -rw-r--r-- root     root         1532 2010-06-30 20:58 build.prop
    drwxr-xr-x root     shell             2010-06-30 21:04 xbin
    drwxr-xr-x root     root              2010-06-30 21:00 tts
    drwxr-xr-x root     root              2010-06-30 21:00 media
    drwxr-xr-x root     root              2010-06-30 21:00 fonts
    drwxr-xr-x root     shell             2010-06-30 21:04 bin
    drw-rw-rw- root     root              2011-08-18 10:36 lost+found

    以上是 system 目录下面的主要文件目录下面也简单介绍一下:

      1、usr            用户文件夹,包含共享、键盘布局、时间区域文件等

      2、app            常规下载的应用程序,这些 apk 包都是受保护的哦

      3、lib            系统底层库,如平台运行时库等

      4、etc            系统的配置文件,比如APN接入点设置等核心配置等

      5、framework    Android 系统平台核心 framework 的文件

      6、build.prop    Android 系统属性配置文件

      7、xbin            常用开发工具,比如 tcpdump/sqlite3 等

      8、bin            系统工具,比如 ps/cp/pm 等

     

    data目录:

    # ls -l /data

    drwx------ root     root              2011-06-22 02:32 property
    drwxrwx--t system   misc              2011-06-21 05:32 misc
    drwxrwx--x shell    shell             2011-06-21 05:32 local
    drwxrwx--x system   system            2011-06-21 05:32 app-private
    drwx------ system   system            2011-06-21 05:33 backup
    drwxrwxr-x system   system            2011-08-12 06:54 anr
    drwxrwx--x system   system            2011-08-20 06:50 app
    drwxrwx--x system   system            2011-08-20 06:50 data
    drwxr-x--- root     log               2011-06-21 05:32 dontpanic
    drwxrwx--x system   system            2011-08-20 06:50 dalvik-cache
    drwxrwxr-x system   system            2011-08-22 06:40 system
    drwxrwx--- root     root              2011-06-21 05:32 lost+found 

      可以看到 /data 目录下结构都和应用有关,平时安装的用户应用/游戏程序,对应APP的数据,

    都被安装在 /data/app 下就可以了。

    查看系统变量:

    # set

    ANDROID_ASSETS=/system/app
    ANDROID_BOOTLOGO=1
    ANDROID_DATA=/data
    ANDROID_PROPERTY_WORKSPACE=9,32768
    ANDROID_ROOT=/system
    ASEC_MOUNTPOINT=/mnt/asec
    BOOTCLASSPATH=/system/framework/core.jar:/system/framework/ext.jar:/system/framework/framework.jar:/system/framework/android.policy.jar:/system/framework/services.jar
    EXTERNAL_STORAGE=/mnt/sdcard
    IFS='
    '
    LD_LIBRARY_PATH=/system/lib
    OPTIND=1
    PATH=/sbin:/system/sbin:/system/bin:/system/xbin
    PS1='# '
    PS2='> '
    PS4='+ '
    PWD=/
    _=/system/xbin

    从系统变量我们也可以看到一些系统使用中的重要目录。

    > 进程分析

    # ps

    USER     PID   PPID  VSIZE  RSS     WCHAN    PC         NAME
    root      1     0     312    220   c009b74c 0000ca4c S /init
    root      2     0     0      0     c004e72c 00000000 S kthreadd
    root      3     2     0      0     c003fdc8 00000000 S ksoftirqd/0
    root      4     2     0      0     c004b2c4 00000000 S events/0
    ... ...
    root      27    1     740    196   c0158eb0 afd0d8ac S /system/bin/sh
    system    28    1     808    204   c01a94a4 afd0db4c S /system/bin/servicemanager
    root      29    1     3736   372   ffffffff afd0e1bc S /system/bin/vold
    root      30    1     3716   336   ffffffff afd0e1bc S /system/bin/netd
    ... ...
    system    59    33    183396 25580 ffffffff afd0db4c S system_server
    app_0     108   33    134184 14876 ffffffff afd0eb08 S com.android.inputmethod.pinyin
    radio     112   33    147300 15804 ffffffff afd0eb08 S com.android.phone
    app_25    122   33    149408 19932 ffffffff afd0eb08 S com.android.launcher
    system    124   33    136708 13172 ffffffff afd0eb08 S com.android.settings
    app_0     148   33    148892 18044 ffffffff afd0eb08 S android.process.acore

      从这里我们可以看出和 Linux 一样所有进程的入口都是 init,接下来的系统进程也和 Linux 类似,

    再接下来就是一些系统的守护程序(Native Service),最后是系统重要的应用程序。

    通过这个列表大家也可以看出 Android 启动过程的一些端倪。

      来自:http://blog.csdn.net/shagoo/article/details/6709430

  • 相关阅读:
    LINQ用于数据库访问的基本方法示例
    设计模式代码示例
    [文档].Altera PLL(锁相环)宏用户指导
    [文档]. Xilinx 编写有效的Testbenches
    [笔记].怎样正确插拔FPGA开发板的JTAG仿真器,如USBBlaster等?
    [连载计划][大家一起学FPGA/SOPC]
    [文档].Altera – SOPC Builder组件开发攻略
    [原创].图解一招搞定UCWEB@Nokia S60v5无法在博客园手机版发闪存的问题
    [文档].Altera – SOPC Builder存储子系统开发攻略
    [笔记].开发SOPC Buider中的自定义IP所必备资料
  • 原文地址:https://www.cnblogs.com/bastard/p/2793008.html
Copyright © 2020-2023  润新知