Android 10 根文件系统和编译系统(一):根文件系统目录结构

配套系列教学视频链接:

Android 10.0 AOSP源码编译:https://edu.csdn.net/course/detail/35479

Android 10.0 根文件系统和编译系统:https://edu.csdn.net/course/detail/35480 


前言

主要讲解根文件系统目录结构, 让大家在运行Android系统时, 对根目录各个目录的作用有个清晰的理解。

说明

系统:AOSP Android10.0

设备:Android模拟器

一、Android10.0 根文件系统目录结构

通过adb或者串口,进入到Android设备的根目录下, 可以看到根文件系统目录下文件如下

dr-xr-xr-x   root   root       0 2021-05-11   acct
drwxr-xr-x   root   root     280 2021-05-11  apex
lrw-r--r--   root   root      11 2021-05-06   bin -> /system/bin
lrw-r--r--   root   root      50 2021-05-06   bugreports -> /data/user_de/0/com.android.shell/files/bugreports
drwxrwx---   system cache   4096 2021-04-28  cache
lrw-r--r--   root   root      19 2021-05-06  charger -> /system/bin/charger
drwxr-xr-x   root   root       0 2021-05-11  config
lrw-r--r--   root   root      17 2021-05-06   d -> /sys/kernel/debug
drwxrwx--x   system system  4096 2021-05-11  data
drwxr-xr-x   root   root    4096 2021-04-28  debug_ramdisk
lrw-------   root   root      23 2021-05-06  default.prop -> system/etc/prop.default
drwxr-xr-x   root   root    1400 2021-05-11  dev
lrw-r--r--   root   root      11 2021-05-06  etc -> /system/etc
lrwxr-x---   root   shell     16 2021-05-06  init -> /system/bin/init
-rwxr-x---   root   shell   1653 2021-04-28  init.environ.rc
-rwxr-x---   root   shell  33692 2021-04-28  init.rc
-rwxr-x---   root   shell   7690 2021-04-28  init.usb.configfs.rc
-rwxr-x---   root   shell   5649 2021-04-28  init.usb.rc
-rwxr-x---   root   shell    563 2021-04-28  init.zygote32.rc
-rwxr-x---   root   shell    959 2021-04-28  init.zygote32_64.rc
-rwxr-x---   root   shell    981 2021-04-28  init.zygote64_32.rc
drwx------   root   root   16384 2021-05-06  lost+found
drwxr-xr-x   root   root    4096 2021-04-28  metadata
drwxr-xr-x   root   system   260 2021-05-11  mnt
drwxr-xr-x   root   root    4096 2021-04-28  odm
drwxr-xr-x   root   root    4096 2021-04-28  oem
dr-xr-xr-x 1 root   root       0 2021-05-11  proc
lrw-r--r--   root   root      15 2021-05-06  product -> /system/product
lrw-r--r--   root   root      24 2021-05-06  product_services -> /system/product_services
drwxr-xr-x   root   root    4096 2021-04-28  res
drwxr-x---   root   shell   4096 2021-04-28  sbin
lrw-r--r--   root   root      21 2021-05-06  sdcard -> /storage/self/primary
drwxr-xr-x   root   root      60 2021-05-11  storage
dr-xr-xr-x   root   root       0 2021-05-11  sys
drwxr-xr-x   root   root    4096 2021-05-06  system
-rw-r--r--   root   root    2608 2021-04-28  ueventd.rc
drwxr-xr-x   root   root    4096 2021-04-28  vendor   

二、根文件系统目录讲解

1.顶层目录

apex

apex文件安装路径, android10引进的技术, Android Pony EXpress (APEX) , APEX和APK类似,它原来存在于只读系统分区的功能模块搞成一个个可更新升级的模块,然后可以单独升级这些模块,这样就没必要升级整个系统。其apex就是一个压缩包,后缀名叫.apex,apex中独立配置运行时的加载的java库, c库等信息。apex文件安装的时候会通过关联loop设备挂载在/apex/xxx目录下

acct

Android Cgroup的挂载点, Cgroup是control group的缩写。这是一个Linux内核的特性。用来对组内进程所使用的资源(如CPU、内存、磁盘输入输出等)进行限制、统计与隔离

charger

charger -> /system/bin/charger, 软连接, 充电模式下系统显示的图标进程。

config

用于配置系统某些子模块的入口

d -> /sys/kernel/debug

debugfs 文件系统是用于(输出)内核级的调试信息的。驱动以及类似的子系统可以自由地把驱动的调试信息转储到这个文件系统中

debug_ramdisk

用于在兼容性测试时挂载ramdisk的。

default.prop

系统默认属性文件,init进程启动时会读取该文件。

res

资源图片,比如存放充电时的图标。

sdcard

一个符号链接,一般指向外部存储的挂载点。

storage

外部SD卡所在目录。

cache

在系统升级的过程中使用 /cache 分区的。系统升级包会被下载到这。

bin

为android系统提供各种命令, 如cp, ls, input, dumpsys等。当然还包括各种android的本地进程对应的二进制文件, 如app_process,netd等

dev

设备节点存放路径,内存文件系统, 掉电消失,开机重新创建

proc

Procfs文件系统挂载点,记录系统信息,如cpuinfo, meminfo, filesystem, interrupt等。

sys

syscfs文件系统挂载点,记录驱相关信息,如class, bus, kernel等。

etc

系统配置文件, 包括部分硬件。

data

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

init

Andrid祖先进程,第一个用户空间进程。

Init.rc

Init进程的启动脚本, 里面设置了init进程启动之后还需要做什么事情。

mnt

子目录中包含内部和外部存储的挂载路径,同时还是其他文件系统的挂载点。/mnt/asec 目录是一个 tmpfs 文件系统的挂载点,它是 Android 安全机制的一部分。/mnt/obb 目录是一个 tmpfs 文件系统的挂载点,它用来存储应用程序文件超出 50MB 后的扩展文件。/mnt/secure 目录是 Android 安全机制的另外一个组件。你也可以看到一个或多个 USB 设备的挂载点。

odm

ODM相关定制,主要包括lib, bin, jar等

oem

和product类似。

vendor

硬件厂商相关定制, 主要包括lib, bin, jar等。

product

OEM相关定制,主要包括Apps,产品sysprops等

system

系统核心目录, 包含各种lib, bin, framework库。

uevent.rc

设备创建或者热拔插时,设备的配置规则,如权限等。

2. /data目录重要的文件

anr

应用发生无响应时,系统存放无响应的先关记录。

app

用户自己安装的应用,下载下来的 .apk 文件都可以在这里被找到。

app-lib

应用(不论是系统应用还是用户自己安装的应用)的 JNI 库都可以在这里被找到。

app-private

OEM相关定制,主要包括Apps,产品sysprops等

dalvik-cache

用于存放优化过的系统应用手日用户安装的应用的 classes.dex 。每个应用的 dex 文件名都是它 apk 包的存放路径,并用“@”替换掉了路径分隔符。

data

各个己安装应用的数据目录。

misc

供各个组件存放“各式各样的”数据和配置文件的目录。如adb存储可信的允许进行 ADB 连接的电脑的公钥,sensors用于存储传感器调试数据, sms存储短信(sms) codes 数据库, wifi用于存储 Wi-Fi 子系统的配置文件(比如:wpa_supptdcant.conf)和套接字(socket)

property

存放持久性属性。

system

存放了大量系统配置文件,目录中含有对维护设备状态非常重要的文件,访问该目录需要 root 权限。

如packages.list用于PackageManager 列出所有安装在系统中的包(APK)

tombstones

用于存放由 debuggerd 生成的应用崩溃报告。。

user

不同的用户会把各自的数据和应用存储/安装在 /data/user/用户号/(用户号从 0 开始顺序编号,0 ,1...)下的各个目录中,系统运行时,把 /data/data 下的对应目录做符号链接,使之指向 /data/user/用户号/ 下的对应目录,以这种方式让 Android 系统能支持“多用户”。在一个单用户系统中, /data/data 会被直接指向 /data/user/0符。

data

各个己安装应用的数据目录。


3. /etc目录重要的文件

其实是一个软连接, 链接到了/system/etc

asound.conf

设备 ALSA ( Advanced Linux Sound Architecture )的配置文件,它会在某些设备上被使用。

event-log-tags

各个不同 Android 系统组件的日志 tag(被 android.util.EventLog 使用)。

gps.conf

GPS 配置文件。

media_codecs.xml

列出了 Stage Fright 所支持的所有 codec(编码/译码器)。

permissions

存放了多个 XML 文件,每个 XML 文件规定了个内置应用(不论是 AOSP 的还是厂商提供的〕的权限,它会被 PackageManager 使用。

wifi/

WPA supplicant 适配层的配置目录,用于控制 Wi-Fi 和 Wi-Fi P2P 连接活动。

4. /system目录重要的文件

app

内置app,都是apk。

priv-app

内置特权app,都是apk

etc

系统配置文件

bin

系统命令二进制目录, 包含各种命令, 如ls, cp等

framework

Android系统框架层的java代码二进制文件,以jar文件存在, 如framework.jar, service.jar

lib

32位的系统动态库

lib6464位的系统动态库
xbin特殊命令, 如su
fonts系统字体库
apex系统内置apex安装包,类似内置apk, 里面都是apex文件
usr用户配置文件, 如输入设备的kl, idc文件等

三、源码out目录生成根文件系统目录

Android的文件系统实际是通过源码编译出来的, 最后的文件都生成在out/target/product/产品名/目录下, 以下几个目录组合成了上面一章节中提到的完整根文件系统:

out/target/product/产品名/root

根目录顶层目录机构, 编译系统称为TARGET_ROOT_OUT 

out/target/product/产品名/system

系统目录,提供各种二进制程序和动态库, java框架代码二进制程序,编译系统称为TARGET_SYSTEM_OUT

out/target/product/产品名/ vendor

厂商定制目录

out/target/product/产品名/data

用户和系统应用数据目录,里面文件基本都是在系统运行中产生,编译时较少

可以对比更文件系统目录和out目录下的各个目录结构,会发现是一样的:

总结

Android根文件系系统目录是在Android系统运行的时候可以看到, 了解根文件系统目录下的子目录的作用,对于操作和开发都有很好作用。

  • 3
    点赞
  • 25
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

旗浩QH

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值