配套系列教学视频链接:

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位的系统动态库

lib64 64位的系统动态库
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系统运行的时候可以看到, 了解根文件系统目录下的子目录的作用,对于操作和开发都有很好作用。

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

  1. Android 10 根文件系统和编译系统(四):Android源码目录结构

    配套系列教学视频链接: Android 10.0 AOSP源码编译: https://www.100ask.net/detail/p_60a1e037e4b0adb2d864c6d8/6 Androi ...

  2. android根文件系统目录结构

    1.Android系统分区 2.根文件系统目录结构 cache :是缓存临时文件夹, etc :指向 /system/etc ,众所周知的配置文件存放目录 system :是Android根文件系统中 ...

  3. linux根文件系统目录结构

    一.介绍 linux根文件系统也就是我们平时所说的rootfs,所有的文件都要在文件系统下才能被识别,包括所有的配置文件,这里介绍一下根文件系统目录结构 二.总统结构 /bin:linux的常用命令 ...

  4. 文件系统(文件系统目录结构、磁盘分区、虚拟文件系统)、linux内核结构框图

    什么是文件系统? 常规认知就是根目录下那些文件,但其实并不是那样.文件系统是操作系统用于明确存储设备(常见的是磁盘,也有基于NAND Flash的固态硬盘)或分区上的文件的方法和数据结构:即在存储设备 ...

  5. 根文件系统制作一制作根文件系统树

    完成了u-boot移植后就是内核移植然后是根文件系统制作,这次分为这几部分书写:根文件系统树.文件系统initramfs.jaffs2.ubifs 有必要了解一些存储系统和文件系统的知识 Norfla ...

  6. linux 0.11根文件系统,linux内核与根文件系统之间的关联的理解

    学者 于 2011-10-19 12:46:08发表: 哦,原来还有一个initrd镜像,后缀名为".img",我一直以为只有一个内核镜像呢: 还有引导程序的路径表示与系统不同啊! ...

  7. Linux 根文件系统目录结构与功能,4.Linux根文件系统和目录结构及bash特性

    4.1Linux目录结构和根文件系统全面讲解 Linux文件系统: Linux:glibc 程序编译方式: 动态链接 静态编译 进程的类型: 终端:硬件设备, 关联一个用户接口 与终端相关:通过终端启 ...

  8. Android 10 根文件系统和编译系统(十八):Android.bp语法

    配套系列教学视频链接: 安卓系列教程之ROM系统开发-百问100ask 说明 系统:AOSP Android10.0 设备:Android x86模拟器 前言 由于make在编译时表现出效率不够高.增 ...

  9. linux文件系统目录结构采用的是,在Linux中,文件系统的目录结构采用的是()。...

    在Linux中,文件系统的目录结构采用的是(). 更多相关问题 徒长枝属于以下哪种一年生枝条类别中的一种() 以下对得房率描述正确的是() 用拉伸试验的方法,可测定金属材料的(). 以下对得房率描述正 ...

最新文章

  1. Fiber 为什么做并发IO的时候更加高效
  2. 计算机视觉之OpenCV教程 ---Mat类基础(一)
  3. robot1,Mechanical structure
  4. Android开发学习之路-Git的极简教程?
  5. PAT_B_1004_Java(20分)
  6. C++11的for循环使用auto的新用法
  7. 最简单的基于FFmpeg的封装格式处理:视音频分离器(demuxer)
  8. 1至100之和用c语言表达方式,C语言菜鸟基础教程之求1到100的和
  9. mysql针对特定表不做binlog_MySQL笔记--主从复制
  10. Java基础强化训练——开发工具及输出语句训练
  11. Linux学习笔记Day01-02 Xshell下载安装过程
  12. 强推win10损害用户利益?这锅微软不背
  13. 常见的物联通讯协议(一)
  14. dnf鹰犬boss机器人_鹰犬boss_兰蒂卢斯和皇女_兰蒂卢斯的鹰犬-Guide信息网
  15. 二分查找的相关内容(详细)
  16. Teradata到GBase 8a迁移总结
  17. 战队口号霸气押韵8字_校园运动会加油霸气押韵口号文案 2020最有特色的运动会口号...
  18. 微软新一代操作系统win10X已经编译完毕
  19. 易优CMS:uichannel的基础用法
  20. 在哪里能看到计算机缓存大小,win10系统查看电脑硬盘缓存大小的办法

热门文章

  1. 手机端使用tasker实现上下班自动打卡(免root)
  2. Python系列之简单算法分析
  3. 阿里云EMR 2.0:兼容开源,贡献开源,超越开源
  4. Gateway-路由、过滤器配置
  5. 商业经营的税费有哪些?
  6. 自动化测试脚本--测试百度搜索Selenium
  7. CFTC前主席:如果美国没有CBDC ,就会成为一潭死水
  8. Trafodion CQD-number_of_countstar_rows_parallel_threshold
  9. 卸载CUDA9安装CUDA8
  10. zabbix监控系列——自定义一个监控项并触发告警