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

网友投稿 2162 2022-11-22

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

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

前言

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

说明

系统:AOSP Android10.0

设备:Android模拟器

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

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

dr-xr-xr-x root root 0 2021-05-11 acctdrwxr-xr-x root root 280 2021-05-11 apexlrw-r--r-- root root 11 2021-05-06 bin -> /system/binlrw-r--r-- root root 50 2021-05-06 bugreports -> /data/user_de/0/com.android.shell/files/bugreportsdrwxrwx--- system cache 4096 2021-04-28 cachelrw-r--r-- root root 19 2021-05-06 charger -> /system/bin/chargerdrwxr-xr-x root root 0 2021-05-11 configlrw-r--r-- root root 17 2021-05-06 d -> /sys/kernel/debugdrwxrwx--x system system 4096 2021-05-11 datadrwxr-xr-x root root 4096 2021-04-28 debug_ramdisklrw------- root root 23 2021-05-06 default.prop -> system/etc/prop.defaultdrwxr-xr-x root root 1400 2021-05-11 devlrw-r--r-- root root 11 2021-05-06 etc -> /system/etclrwxr-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.rcdrwx------ root root 16384 2021-05-06 lost+founddrwxr-xr-x root root 4096 2021-04-28 metadatadrwxr-xr-x root system 260 2021-05-11 mntdrwxr-xr-x root root 4096 2021-04-28 odmdrwxr-xr-x root root 4096 2021-04-28 oemdr-xr-xr-x 1 root root 0 2021-05-11 proclrw-r--r-- root root 15 2021-05-06 product -> /system/productlrw-r--r-- root root 24 2021-05-06 product_services -> /system/product_servicesdrwxr-xr-x root root 4096 2021-04-28 resdrwxr-x--- root shell 4096 2021-04-28 sbinlrw-r--r-- root root 21 2021-05-06 sdcard -> /storage/self/primarydrwxr-xr-x root root 60 2021-05-11 storagedr-xr-xr-x root root 0 2021-05-11 sysdrwxr-xr-x root root 4096 2021-05-06 system-rw-r--r-- root root 2608 2021-04-28 ueventd.rcdrwxr-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系统运行的时候可以看到, 了解根文件系统目录下的子目录的作用,对于操作和开发都有很好作用。

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:P2663 越越的组队 思维01背包
下一篇:android jni的编写, 控制led灯
相关文章

 发表评论

暂时没有评论,来抢沙发吧~