Linux采用标准的树形目录结构,主要目录及功能如下:
目录 | 功能描述 |
---|---|
根目录,所有文件的起始点 | |
/bin |
存放基础用户命令(如ls, cp) |
/sbin |
存放系统管理命令(如init, fdisk) |
/etc |
配置文件(如网络配置、用户账户) |
/home |
用户主目录(如/home/user) |
/var |
可变数据(日志、缓存、临时文件) |
/usr |
用户级应用程序和库(含子目录/bin/sbin/lib等) |
/lib |
系统核心库(/lib64存放64位库) |
/mnt |
临时挂载点(如挂载U盘、ISO镜像) |
/proc |
虚拟文件系统,反映内核状态 |
/sys |
虚拟文件系统,反映设备驱动信息 |
安卓基于Linux内核,但针对移动设备进行了优化,主要目录及功能如下:
目录 | 功能描述 |
---|---|
/system |
核心系统文件(Android框架、预装应用、驱动) |
/vendor |
厂商特定驱动(Hardware Abstraction Layer, HAL) |
/product |
设备定制配置(如字体、音效参数) |
/data |
用户数据分区(应用安装目录、数据库、媒体文件) |
/cache |
缓存分区(应用缓存、系统更新包) |
/sdcard |
SD卡挂载点(若存在) |
/android_res/ |
Android资源文件(字体、键盘布局等) |
/apex |
APEX模块分区(Android 10+特性) |
/mnt |
临时挂载点(类似Linux) |
/proc |
虚拟文件系统(与Linux相同) |
/sys |
虚拟文件系统(与Linux相同) |
特性 | Linux | 安卓 |
---|---|---|
核心目录 | /usr |
/system |
用户数据位置 | /home |
/data/data (按包名划分) |
应用安装路径 | /usr/bin |
/system/priv-app (系统应用) |
配置存储 | /etc |
/system/etc + /data/data |
动态加载模块 | Kernel modules | APEX模块(/apex ) |
权限模型 | UID/GID + 自主访问控制 | SELinux强制访问控制 + 沙箱机制 |
存储分区 | 单一根分区 | 多分区(System, Vendor, Data, Cache) |
安全性强化
/system
)与用户数据(/data
)完全隔离,通过SELinux策略限制访问/data/data/<包名>
,互不可见嵌入式设备适配
/home
等桌面环境冗余目录/vendor
专门隔离厂商驱动,便于OTA升级存储优化
/cache
分区用于临时缓存,重启可清理/sdcard
统一管理外部存储,简化挂载逻辑组件 | Linux | 安卓 |
---|---|---|
Init进程 | /sbin/init |
/init (Android专用init) |
配置文件 | /etc/inittab |
init.rc + 动态生成的.rc 文件 |
服务启动 | SysVinit脚本 | 基于事件触发的init框架 |
挂载点管理 | Udev + fstab | Vold服务动态管理(/mnt/expand等) |
场景 | Linux | 安卓解决方案 |
---|---|---|
外部存储 | 手动挂载(如/mnt/usb) | 自动挂载到/sdcard ,MediaStore管理 |
数据加密 | 无默认支持 | /data 分区默认启用文件级加密(FBE) |
OTA升级 | 需手动替换二进制 | 保留/system 旧版本,原子更新机制 |
/system
下设置priv-app
目录?解答:/system/priv-app
用于存放具有特权权限的系统应用(如电话、短信服务),这些应用需要访问底层API(如Telephony Manager),但不同于核心系统服务,通过独立目录管理,可实现:
/data
分区如何保证数据安全?解答:
安卓通过三层机制保障数据安全:
/data
默认使用FBE(File-Based Encryption),每个文件独立加密/system
)/data/data/<包名>
,且:
/data/cache
,重启可清理