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位的系统动态库 |
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 根文件系统和编译系统(一):根文件系统目录结构相关推荐
- Android 10 根文件系统和编译系统(四):Android源码目录结构
配套系列教学视频链接: Android 10.0 AOSP源码编译: https://www.100ask.net/detail/p_60a1e037e4b0adb2d864c6d8/6 Androi ...
- android根文件系统目录结构
1.Android系统分区 2.根文件系统目录结构 cache :是缓存临时文件夹, etc :指向 /system/etc ,众所周知的配置文件存放目录 system :是Android根文件系统中 ...
- linux根文件系统目录结构
一.介绍 linux根文件系统也就是我们平时所说的rootfs,所有的文件都要在文件系统下才能被识别,包括所有的配置文件,这里介绍一下根文件系统目录结构 二.总统结构 /bin:linux的常用命令 ...
- 文件系统(文件系统目录结构、磁盘分区、虚拟文件系统)、linux内核结构框图
什么是文件系统? 常规认知就是根目录下那些文件,但其实并不是那样.文件系统是操作系统用于明确存储设备(常见的是磁盘,也有基于NAND Flash的固态硬盘)或分区上的文件的方法和数据结构:即在存储设备 ...
- 根文件系统制作一制作根文件系统树
完成了u-boot移植后就是内核移植然后是根文件系统制作,这次分为这几部分书写:根文件系统树.文件系统initramfs.jaffs2.ubifs 有必要了解一些存储系统和文件系统的知识 Norfla ...
- linux 0.11根文件系统,linux内核与根文件系统之间的关联的理解
学者 于 2011-10-19 12:46:08发表: 哦,原来还有一个initrd镜像,后缀名为".img",我一直以为只有一个内核镜像呢: 还有引导程序的路径表示与系统不同啊! ...
- Linux 根文件系统目录结构与功能,4.Linux根文件系统和目录结构及bash特性
4.1Linux目录结构和根文件系统全面讲解 Linux文件系统: Linux:glibc 程序编译方式: 动态链接 静态编译 进程的类型: 终端:硬件设备, 关联一个用户接口 与终端相关:通过终端启 ...
- Android 10 根文件系统和编译系统(十八):Android.bp语法
配套系列教学视频链接: 安卓系列教程之ROM系统开发-百问100ask 说明 系统:AOSP Android10.0 设备:Android x86模拟器 前言 由于make在编译时表现出效率不够高.增 ...
- linux文件系统目录结构采用的是,在Linux中,文件系统的目录结构采用的是()。...
在Linux中,文件系统的目录结构采用的是(). 更多相关问题 徒长枝属于以下哪种一年生枝条类别中的一种() 以下对得房率描述正确的是() 用拉伸试验的方法,可测定金属材料的(). 以下对得房率描述正 ...
最新文章
- Fiber 为什么做并发IO的时候更加高效
- 计算机视觉之OpenCV教程 ---Mat类基础(一)
- robot1,Mechanical structure
- Android开发学习之路-Git的极简教程?
- PAT_B_1004_Java(20分)
- C++11的for循环使用auto的新用法
- 最简单的基于FFmpeg的封装格式处理:视音频分离器(demuxer)
- 1至100之和用c语言表达方式,C语言菜鸟基础教程之求1到100的和
- mysql针对特定表不做binlog_MySQL笔记--主从复制
- Java基础强化训练——开发工具及输出语句训练
- Linux学习笔记Day01-02 Xshell下载安装过程
- 强推win10损害用户利益?这锅微软不背
- 常见的物联通讯协议(一)
- dnf鹰犬boss机器人_鹰犬boss_兰蒂卢斯和皇女_兰蒂卢斯的鹰犬-Guide信息网
- 二分查找的相关内容(详细)
- Teradata到GBase 8a迁移总结
- 战队口号霸气押韵8字_校园运动会加油霸气押韵口号文案 2020最有特色的运动会口号...
- 微软新一代操作系统win10X已经编译完毕
- 易优CMS:uichannel的基础用法
- 在哪里能看到计算机缓存大小,win10系统查看电脑硬盘缓存大小的办法