这篇文章上次修改于 1609 天前,可能其部分内容已经发生变化,如有疑问可询问作者。
root 文件系统
目录或文件 | 功能解释 |
---|---|
acct | acct cgroup(control group)的挂载点 |
apex | Android 10 模块化了一些Android系统组件,使其能在 Android 大版本升级之外进行独立升级,即系统组件模块化(Modular System Components)。这些模块化的系统组件打包到一起,可以通过 OTA 方式推送给终端用户进行升级。 |
cache | 缓存的大小被限制为这个分区的大小。 |
d | /sys/kernel/debug 的一个符号链接。 |
data | 存放用户安装的软件以及各种数据。 |
default.prop | 其中记录的是编译时 /build/core/main.mk 中 ADDITIONAL_DEFAULT_PROPERTIES 变量中的值, init 将根据它(的内容)去加载其他系统范围内的属性文件(property)。加载只读的属性文件有利于强制执行安全保护 |
dev | tmpfs 文件系统的挂载点,定义了应用程序可用的设备。/dev/cpuctl 目录是 cpuctl 控制组的挂载点,使用 cgroup 伪文件系统。 |
etc | /system/etc 的一个符号链接。与 Linux 功能一致,存放配置文件 |
init | 处理 init.rc 文件的一个二进制程序。init.rc 文件引入其他 init.*.rc 文件。Android 启动时,内核会在启动进程的最后运行 init 程序。init.rc 文件值得一读,它告诉我们一些 Android 设备配置的事情。由于 Android 不支持 /etc/sysctl.conf,所以 /proc/sys/kernel 参数的更新就成为了 init.rc 文件的一部分。除非你对 Linux 内核的内部工作机制有一个好的理解,最好不要修改这些参数。对 /dev/cpuctl 的参数也是一样的道理。 |
mnt | 除了挂载内部和外部SD卡,这个目录还是其他文件系统的挂载点。/mnt/asec 目录是一个 tmpfs 文件系统的挂载点,它是 Android 安全机制的一部分。/mnt/obb 目录是一个 tmpfs 文件系统的挂载点,它用来存储应用程序文件超出 50MB 后的扩展文件。/mnt/secure 目录是 Android 安全机制的另外一个组件。你也可以看到一个或多个 USB 设备的挂载点。 |
proc | procfs 文件系统的挂载点,用来提供对内核数据结构的访问。 |
sbin | 比标准 Linux 发行版中的 /sbin 目录小很多,但它确实包含了几个重要守护进程的二进制文件。 |
sdcard | /mnt/sdcard 的一个符号链接。 |
storage | 外部SD卡所在目录 |
sys | sysfs 伪文件系统的挂载点,sysfs 伪文件系统是内核的设备对象结构的反映。这个目录下有很多信息,但它需要理解内核设备模型。简而言之,这些目录表示内核对象,而文件是这些对象的属性。 |
system | 这个目录下就是你通常在标准 Linux 发行版中 root 目录下看到的目录。这些目录包括 bin、etc、lib、usr和xbin。 |
ueventd.rc | 这些文件定义了/dev目录的配置规则。 |
vendor | /system/vendor 的一个符号链接。 |
init.rc | 系统初始化脚本。同样里面会引用 init.*.rc 文件。 |
/system 文件系统
存放所有谷歌或厂商提供的 Android 组件的地方,该文件系统是以只读方式 mount 的,主要是考虑了稳定性和安全性。
目录或文件 | 功能解释 |
---|---|
app | 存放系统应用,一般是系统或厂商自带应用。 |
apex | Android 10 模块化了一些Android系统组件,使其能在 Android 大版本升级之外进行独立升级,即系统组件模块化(Modular System Components)。这些模块化的系统组件打包到一起,可以通过 OTA 方式推送给终端用户进行升级。 |
bin | 存放二进制可执行文件 : 其中既有多个守护进程的二进制可执行文件,也有一些命令行 shell 的二进制可执行文件。一般是系统自带的。(大多数指向 looIbox) |
etc | 各种系统组件的配置文件 |
fonts | 存放各种字体文件 |
framework | 存放 Android 的框架(framework ) , 各个 framework 会被存放在各自对应的 .jar 文件中 |
lib | 存放运行时库文件,也就是原生的 .so (ELF shared object),在 Android 中,这个目录扮演了和正常 Linux 系统中的 /lib 目录一样的角色。 |
media | 存放铃声、系统提示声的文件夹。 |
xbin | 存放用途特殊的、正常操作过程不需要使用的二进制文件,一般是系统管理工具。 |
build.prop | 编译过程中生成的属性配置文件。 |
priv-app | 存放特权的 App |
usr | 支持文件,比如 unicode 映射文件,设备和键血的键盘布局文件等 |
vendor | 专门存放第三方厂商提供的文件,但是一般厂商都是直接放到 /system 目录下的 /bin、/lib 当中。 |
lost+ found | 在对 /system 进行 fsck 操作时自动生成的目录 。 通常是空的(除非系统曾经崩渍过)。新版本 Android 不存在这个目录了。 |
/system/bin 文件系统
/system/bin 目录中含有 Android 使用的各种原生可执行文件,此外,它也是存放各种调试工具的地方。具体来说,这些二进制可执行文件可以被分成 5 类。
- 用来提供服务的二进制可执行文件: 这类二进制可执行文件都是在系统运行过程中由 /init 调用的, 它们的调用路径会被写进 /init 使用的 rc 文件中。
- 调试工具: 被归入这一类 的是一些用于调试的原生二进制可执行文件。
- UNIX 命令: 为了让 shell 用户也能在 Android 上玩 , UNIX 命令部被封装在一个单独的二进制可执行文件 /system/bin/toolbox 中。busybox 是嵌入式系统中常见的多合一工具集,而 toolbox 则是它在 Android 中的定制版。
- 调用 Dalvik 的脚本(upcall script):这些调用 Dalvik 的脚本让用户通过 shell 与 Dalvik 运行时框架交互,这多半是为了进行调试。
- 厂商定制的二进制可执行文件:从本质上讲,这类二进制可执行文件可以完全由厂商控制,但是这类二进制可执行文件通常都是些提供服务的程序或调试工具。
/system/bin 用来提供服务的二进制可执行文件
目录或文件 | 功能解释 |
---|---|
app_process | 用户 App 的宿主进程, Zygote〔及其他所有用户 App)都是这个二进制可执行文件的实例,app_process 它是由 DalvikVM /ART 初始化的。 |
applypatch | 在 OTA 升级的过程中使用 根据脚本来应用补丁 |
bootanirnation | 当图形界面子系统(surfaceflinger)加载时,播放 Android 的启动动画。 |
clatd | 1Pv4-1Pv6 地址的转换器 |
dalvikvrn | 用于启动一个 Dalvik 虚拟机的实例 |
debuggerd | 在系统崩溃时产生 tombstone, 也可以和一个远程 GDB 相连接 |
dnnserver | 第二方数字版权管理( DRM, Digital Rights Management )模块的宿主地程 |
clnsmasq | 伪 DNS 服务:在设备对外提供 Wi-Fi 热点服务时,提供 DNS 代理服务 |
hostapd | Wi-Fi 热点守护进程的二进制可执行文件:在设备对外提供 Wi-Fi 热点服务时提供一个热点 |
keystore | Android 的密码存储和管迎服务 |
linker | Android 的运行时链接器。 |
mdnsd | 组描 DNS (multicast DNS)的守护进程 |
mecliaserver | 音频、视频的录制、回放 |
mtpd | 用以支持 PPP/L2TP |
netd | 用来管理网卡、防火墙等 |
pppd | 点对点协议的守护进程,在使用 VPN 时才需要使用它 |
racoon | 提供对 VPN 支持 |
rlid | 无线界面层(Radio Interface Layer)守护进程:主管一切与电话相关的服务 |
sdcard | SDCard 守护进程,实现了 SD 卡文件系统,通过 FUSE 模拟多用户权限设置 |
sensorserv1ce | Sensor hub:并发读取各个传感器 |
servicemanager | 提供了服务的注册和查找功能 |
surfaceflinger | 它的功能是画出图形界丽的样子,并把它们加载到 framebuffer 中 |
vold | Volume 守护进程:用来 mount/unmount 文件系统,也有文件,系统的解密功能 |
uncrypt | 解密文件系统(在 recovery 前使用) |
wpa_supplicant | wpa_supplicant 适配层(wireless protected access supplicant):提供 Wi-Fi 和 Wi-Fi P2P 的客户端支持 |
sqlite3 | 数据库功能 |
dexdump | DEX 文件 dump 工具,也能 dump 文件头和字节码 |
tcpdump | 网络抓包工具。抓取到的数据文件可以用 Wireshark 打开 |
strace | 系统调用 trace 工具。使用 Linux ptrace(2)系统调用 。 强大的 trace 和逆向工程工具,往往能给你带来惊喜 |
showmap | 显示进程内存分配情况(数据取自 /proc/pid/maps) |
procrank | 该程序的功能与 librank 互补 , 它会逐个进程地给出各个进程中 VSS/RSS/PSS/USS 的使用情况统计信息 |
procmem | 显示进程内存使用情况统计信息(数据取自 /proc/pid/status ) |
nc | Netcat , 分析 TCP 和 UDP 时的瑞士军刀 |
librank | 逐个给出各个共享内存区域在各个进程中的使用情况,主要给出 VSS/RSS/PSS/USS 信息 |
/system/bin 调试工具
目录或文件 | 功能解释 |
---|---|
adb | Android 调试桥(客户端) |
asanwrapper | Address Sanitizer:内存淄出检测工具,它是个第三方调试工具 |
atrace | Android tracetool:使用 Linux 的 ftrace 来调试和跟踪程序的执行过程 |
bdt | BlueDroid ( Android 中的蓝牙)测试 App |
blkid | 用来显示各个分区的 GUID |
dex2oat | DEX 到 ART 的转换工具,用于取代 dexopt。 |
dexopt | DEX 优化工具。 |
dumpstate | 能与其他几个有用的工具(ps、dumpsys 等〕一起使用的元工具,用于抓取系统状态的调试快照。 |
Dumpsys | 服务转储工具:它能去连接 Android 的各个服务,请求调用服务中的 Dump() 方法,以提供大量的调试信息 |
e2fsck | F2FS 文件系统的文件系统完整性检测工具。 |
fsck_msdos | vFAT 文件系统的文件系统完整性检测工具。 |
fsck.f2fs | Ext2/3/4 文件系统的文件系统完整性检测工具。 |
gdbserver | GDB 服务端:启动它之后,电脑上的 GDB 客户瑞就能通过 TCP/IP 协议连上当前设备,并调试相关的进程。 |
ip[6]tables | 通过命令行,管理内核中的 IPTable (防火墙和流量限制) |
keystore_cli | 命令行实用程序,用于与 keystore(密钥存储)服务交互 |
logcat | 把系统日志打印到标准输出上去,它也支持一些过滤选项。 |
ndc | 与网络管理(Network Management)守护进程交互的命令行程序 |
perf | 异常强大的性能分析(profiling)工具,它使用了内核中支持性能分析的一些功能 |
ping[6] | 封包网络探针(Packet Internet Grouper), ICMP 协议的 echo 请求/响应包 |
radiooptions | 用来模拟无线接口层(Radio Interface Layer)事件的测试程序 |
run-as | 能用指定的 AID 权限运行某个应用程序 |
screencap | 把帧缓存(framebuffer)抓取到标准输出或一个 PNG 文件中(供 ADB 使用) |
screenrecord | 视频录屏工具,录制 .mp4 格式的视频 |
screenshot | 与 screencap 功能一致 |
service | 与 service manager 交互的命令行实用程序 |
toolbox | Android 提供多种命令的二进制可执行文件 |
vdc | 与 vold (Volume 守护进程)交互的命令行实用程序 |
wpa_cli | 与 wpa_supplicant 适配层交互的命令行实用程序 |
/system/bin 调用 Dalvik 的脚本
这些调用 Dalvik 的脚本让用户通过 shell 与 Dalvik运行时框架交互,这多半是为了进行调试 。这些脚本调用 /system/bin/app_process ,用它们在 /system/framework 目录中的同名 JAR 框架,加载 Dalvik 类,在使用时,脚本会把用户传给它的参数直接传递给 Dalvik 类。
app_process 脚本 | 功能解释 |
---|---|
am | 与 ActivityManager 进行交互、启动 activity 发起 intent 等 |
bmgr | 备份管理(Backup Manager)接口 |
bu | 启动备份 |
content | 与 Android content provider 交互的接口 |
ime | 控制输入法编辑器( Input-Method-Editors) |
input | 与 InputManager 进行交互,注入输入事件 |
media | 控制当前的媒体播放器(播放/暂停等) |
monkey | 用随机生成的输入时间运行一个 APK |
pm | 与包管理器(PackageManager)进行交互,可以用来列出、安装、删除包( package )以及列出权限等 |
requestsync | 同步账号 |
settings | 获取、设置系统设置 |
svc | 控制电源、数据、Wi-Fi 和 USB 服务 |
utautomator | 进行 UI 自动化测试,测试 dump view 之间的层次关系等 |
wm | 与窗口管理器(WindowManager)进行交互、修改显示的尺寸/分辨率等 |
/system/bin 厂商定制的二进制可执行文件(例如)
这类二进制可执行文件可以完全由厂商控制,但是这类二进制可执行文件通常都是些提供服务的程序或调试工具。
目录或文件 | 功能解释 |
---|---|
mm-qcamera-daemon | 高通内置摄像头的守护进程 |
mpdecision | Multi-Processor Decision:管理 CPU 主频的专用工具。它与 CPU governor 进行交互,能在系统忙时,加快主频或激活其他处理器(core),也能在系统空闲时,降低主频或让一部分处理器休眠 |
qmuxd | 高通基带访问多路转接器(baseband access multiplexer) |
qseecomd | 高通安全执行环境通信器(Secure Execution Environment Communicator) |
thermal-engine-hh | thermal 守护进程,负责监视设备的温度,防止设备过热 |
/system/xbin 文件系统
/system/xbin 目录类似于 UNIX 中的 /sbin 目录,其中含有管理员会觉得非常有用的二进制可执行文件。当然这个目录一般是被厂商删除的,一般 root 就是在这个目录放一个 su 文件。
目录或文件 | 功能解释 |
---|---|
su | 切换用户为(root 或者其他用户) |
add-property-tag | 向系统的 .prop 文件中添加属性 |
check-lost+found | 在 fsck 操作完成之后,检查 lost+found 目录 |
cpueater | 用于消耗 100% CPU 资源的死循环 |
cpustats | 显示 CPU 和处理器调节然(用于控制主频)的统计信息 |
/system/lib 文件系统
/system/lib(在 64 位系统中则是 /system/lib64)目录中含有供 /system/bin 和 /systern/xbin 目录中的二进制可执行文件使用的共享库。/system/lib 中有多个子目录,其中的一些是根据设备的不同而不同的。
目录或文件 | 功能解释 |
---|---|
/drm | 提供 DRM 引擎。比如,实现了 forward-locking 专利代码包的 libfwdlockengine.so |
/egl | Android 版的 OpenGLES |
/hw | 各个 HAL 模块 |
/ssl/engines | 含有 libkeystore.so,该共享库使得 OpenSSL 能使用 Android 的 Keystore 机制 |
/system/etc 文件系统
就像它在 UNIX 系统中的同名目录一样, Android 的 /system/etc 目录中也存放着各种配置文件之类的东西。
目录或文件 | 功能解释 |
---|---|
NOTICE.html.gz | 无数个 Android 沂源组件的法律告知l书 , 说明各种晦涩难懂的许可授权和法定事宜。 |
audio_effects.conf | 会被 Android 的音频 HAL 使用 |
audio_policy.conf | 会被 Android 的音频 HAL 使用 |
apns-conf.xml | Telephony provider 的配置文件,其中列出了设备所支持的所有运营商(它会被 com.android.providers.telephony.TelephonyProvider 使用 |
asound.conf | 设备 ALSA ( Advanced Linux Sound Architecture )的配置文件,它会在某些设备上被使用 |
bluetooth/ | BlueDroid 的配置文件 |
clatd.conf | CLATd(实现 IPv4 over IPv6 )的配置文件 |
event-log-tags | 各个不同 Android 系统组件的日志 tag(被 android.util.EventLog 使用) |
fallback_fonts.xml | 列出了在加载 system_fonts.xml 中没有指定的 font-family 时所能选用的 fallback font。它会被 Android 中的 layoutlib 的 FontLoader 所使用 |
gps.conf | GPS 配置文件 |
hosts | 主机-IP 对应关系表,为了兼容起见,其中也记上了 localhost (127.0.0.1) |
media_codecs.xml | 列出了 Stage Fright 所支持的所有 codec(编码/译码器) |
media_profiles.xml | 列出了 LibMedia 所支持的所有 profile |
ppp/ | 存放了启动/停止 VPN 和 PPP 连接活动的二进制可执行文件 |
permissions/ | 存放了多个 XML 文件,每个 XML 文件规定了个内置应用(不论是 AOSP 的还是厂商提供的〕的权限,它会被 PackageManager 使用 |
security/ | 这个目录中含有存放着设备中硬编码写死的各个认证证书的目录( cacerts/)。 OTA 升级的证书(otacerts.zip)以及经过签名验证的 APK 的 SELinux 标签(label) |
system_fonts.xml | 按照字体(font〕所属的 family 和 nameset,列出了系统字体(font),并把字体样式(font style) 和 /system/fonts 中的各个 TTF 文件一一对应起来,它会被 Android 中的 layoutlib 的 FontLoader 所使用 |
wifi/ | WPA supplicant 适配层的配置目录,用于控制 Wi-Fi 和 Wi-Fi P2P 连接活动 |
*acdb | (高通芯片组) 各种声音校附数据库文件,在高通设备中会被 libacdbloader.so 使用 |
snd_msm/ | (高通芯片组)存放高通 MSM Soc 音频设备的 ALSA 文件 |
thermal*.conf | (高通芯片组)监视设备温度的 thennald 守护进程的配置文件 |
/data 文件系统
/data 分区是所有用户个人数据的存放地点。
目录或文件 | 功能解释 |
---|---|
anr | dumpstate 用来记录失去响应的 Android 应用的函数调用校当前状态的地方。 |
app | 用户自己安装的应用,下载下来的 .apk 文件都可以在这里被找到 |
app-asec | 存放 asec 容器, 当一个应用使用了 asec 保护技术时,它就会被加密起来 |
app-lib | 应用(不论是系统应用还是用户自己安装的应用)的 JNI 库都可以在这里被找到 |
app-private | 提供应用私有存储空间,已经很少使用 |
backup | 供备份服务使用 |
bugreports | bugreport 专用,用来存放生成的报告,每份报告中均含有一个文本文件和一张屏幕截图 |
dalvik-cache | 用于存放优化过的系统应用手日用户安装的应用的 classes.dex 。每个应用的 dex 文件名都是它 apk 包的存放路径,并用“@”替换掉了路径分隔符 |
data | 各个己安装应用的数据目录 |
drm | 供 Android 的数字版权管理器〔Digital Rights Management)使用 |
local | 供 uid shell 使用的一个可读/可写的临时目录 |
lost+found | 对 /data 分区执行 fsck 操作时自动生成的目录。 |
media | 供 sdcard 服务把 SD 卡 mount 到这个 mount 点上 |
mediadrm | 供 Media DRM 服务使用 |
misc | 供各个组件存放“各式各样的”数据和配置文件的目录 |
nfc | 存储 NFC 参数 |
property | 存放持久性属性 |
resource-cache | 供 AssetManager 使用的资源缓存 |
secunty | 通常为空 |
ssh | 供那些提供 ssh (Secure Shell)服务的设备使用 |
system | 存放了大量系统配置文件 |
tombstones | 用于存放由 debuggerd 生成的应用崩溃报告。 |
user | 不同的用户会把各自的数据和应用存储/安装在 /data/user/用户号/(用户号从 0 开始顺序编号,0 ,1...)下的各个目录中,系统运行时,把 /data/data 下的对应目录做符号链接,使之指向 /data/user/用户号/ 下的对应目录,以这种方式让 Android 系统能支持“多用户”。在一个单用户系统中, /data/data 会被直接指向 /data/user/0 |
/data/data 文件系统
/data/data 目录是所有应用(不论是系统应用还是用户安装的应用〕存储它们的信息的地方。每个应用都可以访问属于自己的文件夹而不用申请权限,其他的应用都有权限列出 /data/data 的子目录,但是不能访问。
/data/misc 文件系统
/data/misc 目录中含有各个 Android 子系统的各种五花八门的(miscellaneous)数据和配置目录。
目录或文件 | 功能解释 |
---|---|
adb | 存储可信的允许进行 ADB 连接的电脑的公钥 |
bluetooth | BlueZ [<4.2 的 bluetooth(蓝牙〕子系统的配置文件 |
bluedroid | Bluetooth(蓝牙)子系统(>4.2)的配置文件 |
dhcp | 存储实现 dhcp 的 ctdent 守护进程的 PID 文件,以及所有当前活跃的地址租用记录 |
keychain | 存放 Android 内置证书 pin 码(certificate pin)和黑名单 |
keystore | 存储每个用户的 keystore 数据 |
sensors | 用于存储传感器调试数据 |
sms | 存储短信(sms) codes 数据库 |
systemkeys | 用来存储打开 ASEC 容器的密钥(AppsOnSD.sks) |
vpn | 用于存储 VPN 状态自己置文件 |
wifi | 用于存储 Wi-Fi 子系统的配置文件(比如:wpa_supptdcant.conf)和套接字(socket) |
/data/system 文件系统
/data/system 目录中含有对维护设备状态非常重要的文件。访问该目录需要 root 权限。
目录或文件 | 功能解释 |
---|---|
appops.xml | 供控制应用权限的 AppOps 服务使用 |
batterystats.bin | 供统计各个应用电量使用情况的 BatteryStats 服务使用 |
called_pre_boots.dat | 供 ActivityManager 记录每个 boot broadcast receiver |
device_policies.xml | DevicePolicyManagerService 使用的配置文件 |
dropbox/ | 供 DropBox 服务使用的目录 |
entropy.dat | 系统熵存储器(system entropy store),供 EntropyMixer 生成随机数使用,随机数生成在一个计算机系统中是个难题,必须要有一个不能重复的熵,所以使用系统运行的各种操作记录、硬件运行记录来作为随机数的熵。 |
gesture.key | 锁屏图案的 Hash |
framework_atlas.config | 供负责将预加载的 bitmap 组装成纹理贴图的 AssetAtlasService 使用 |
ifw/ | Intent 防火墙规则库 |
locksettings.db* | 锁屏设置:其中记录了设备的锁屏策略 |
netpolicy.xml | 供 NetworkPolicyManagerService 使用的配置文件 |
netstats/ | 用来记录 NetworkStatsService 按 device、uid 或 xt 得到的网络传输数据统计的目录。 |
packages.list | PackageManager 列出的所有安装在系统中的包(APK) |
packages.xml | PackageManager 在此记录了所有己安装包的元数据 |
password.key | 锁屏 PIN 码/口令的 hash |
procstats/ | 供 ProcessStats 服务存储文件的目录 |
registered_services/ | 供 android.content.pm.RegisteredServicesCache 使用的目录 |
usagestats/ | 供 UsageStats 服务存储文件,特别是 usage-history.xml 文件的目录 |
users/ | Android 的“多用户”支持 |
/cache 文件系统
Android 是在系统升级的过程中使用 /cache 分区的。系统升级包会被下载到这里,启动管理器(boot manager)特别是在 recovery/ 升级模式下启动时,会要使用这个分区。但除此之外,在正常情况下,这个分区是空的。
宏定义 | 目录或文件 | 功能解释 |
---|---|---|
CACHE_LOG_DIR | /recovery | 二进制可执行文件 recovery 的专用目录 |
LAST_LOG_FILE | /recovery/last_log | 上一次 recovery/ 到级操作的日志 |
LOG_FILE | /recovery/log | 当前 recovery/ 升级操作的日志 |
COMMAND_FILE | /recovery/command | 传递给 recovery 的命令行参数 |
INTENT_FILE | /recovery/intent | recovery 完成之后要发出 的 intent |
LAST_INSTALL_FILE | /recovery/last_install | 最近一次安装日志 |
LAST_LOCALE_FILE | /recovery/last_locale | 存放再次启动时使用的语言设置 |
/vendor 目录
目录是用来存储厂商对 Android 系统的修改的。
组件名 | 目录或文件 |
---|---|
Package Manager | /vendor/app |
Fonts | /vendor/etc/fallback_fonts.xml |
Shared Libraries | /vendor/lib |
DRM libraries | /vendor/lib/drm /vendor/lib/mediadrm |
eGL libraries | /vendor/lib/egl |
Frameworks | /vendor/overlay/framework |
Firmware | /vendor/finnware |
Audio Effects | /vendor/etc/audio_effects.conf |
/dev/usb-ffs/adb 目录 functionfs
在 Android 系统中,USB 的功能经常会需要根据用户的选择(即 , 是以 USB 调试、大容量存储介质还是 以其他方式连接设备,用户的这一选择将通过 init 传递进来)动态地进行重新配置,它是由一个特定的 “gadget” 驱动进行控制的 。
/proc 目录
procfs 文件系统名副其实一一它提供了一个基于目录的观察系统中运行的进程的方式。使之能提供大量
关于进程、线程以及其他全方位的系统诊断信息。许多 Linux 实用程序(如 top、netstat、lsof 和 ifconfig)以及许多 Android 工具(如 procrank、librank)都把它作为诊断信息的来源,没有它就不能运行 。
/sys 目录
sysfs 是在 Linux 内核版本 2.6 中作为对 procfs 的补充而被引入的,为了能把 /proc 里的
东西整理得井井有条些,把与硬件和模块相关的配置文件移到一个单独的目录中去,并让目录的层次也更清晰些 。
目录 | 作用 |
---|---|
block | 存放块 I/O 层 (Block I/O Layer)的控制文件。每个块设备都有自己的子目录,其中记录了其所属的 I/O 调度程序等参数 |
bus | 设备,按连接它的总线类型分类存放,每种总线类型(比如 i2c/、mmcl、soc/)一个子目录 |
class | 设备,按设备类型分类存放,每种设备类型(比如 input/、sound/)一个子目录 |
dev | 设备,按设备读写方式分类存放,每种读写方式(比如 block/、char/) 一个子目录 |
devices | 设备,按设备在设备树(device-tree)上的分类类型存放 |
frimware | 供有固件升级功能的设备使用 |
fs | 供文件系统驱动使用。 |
kernel | 由各个(内核)子系统提供的一些内核参数,其中的 debug/是 debugfs 的 mount 点 |
module | 每个极块一个子目录,含有极块的统计信息以及模块参数 |
power | 电源管理(power management)的统计信息和设置,Android 的 WakeLocks 就是在这里(通过 wake_lock 和 wake_unlock 〕实现的 |
/sys/kernel/debug 目录 debugfs
debugfs 文件系统是用于(输出)内核级的调试信息的。驱动以及类似的子系统可以自由地
把驱动的调试信息转储到这个文件系统中。
目录 | 作用 |
---|---|
binder | 提供通过 Android IPC (进程间通信)机制中的 binder 方式传递的大量数据 |
tracing | 好用到难以置信,提供由 Linux 内核的 flrace 机制产生的海量的调试和跟踪信息 |
wakeup-sources | 内核级的定时器,用在 Android 系统或驱动程序防止设备休眠时 |
/sys/fs/pstore 目录 pstore
pstore 机制是 Linux 的一个内核特性(在 3.5 版时引入),它允许内核把部分物理内存(RAM)
单独划为 persistent store 区 。 它对于一种特定的应用抓取内核崩愤(panic)时的数据,非常
有用。
/sys/fs/selinux 目录 selinuxfs
和 debugfs 一样,SELinuxFS 传统上也是 mount 在 /sys 下,但却不是 sysfs 文件系统的一部
分。这个文件系统是专供 SELinux 使用的,其中存储了与安装策略(installed policy)相关的文
件。
参考资料
- 部分来源于网络 XDA 论坛
- 部分来源于《最强 Android 书:架构大剖析》
没有评论