Android Linux Kernel
1. GKI(Generic Kernel Image)
GKI(Generic Kernel Image) 是 Android 在 Linux Kernel 基础上推出的一个标准化内核,旨在简化设备硬件驱动和系统服务的兼容性管理。
定义与功能:
GKI(Generic Kernel Image) 是一个可以支持所有 Android 设备的通用内核,简化了设备的内核配置。
通过 GKI,Android 系统将 Android-specific drivers 从内核中拆分出来,并放到 vendor 目录下,这样可以保持内核的统一,同时让设备厂商可以提供与设备硬件匹配的驱动程序。
GKI 支持 Mainline Kernel,意味着系统更新可以通过 Google Play 更新内核而不需要设备厂商干预。
GKI 结构:
GKI 核心:为 Android 系统提供通用的内核功能和驱动,保持一致性。
代码路径:kernel/
Vendor 组件:硬件相关的驱动和配件由设备厂商提供,通过 vendor kernel modules 加载。
代码路径:vendor/ 和 hardware/
KGSL(Kernel Graphics Support Layer)是高通(Qualcomm)平台专有的 GPU 驱动内核模块,是 Android 设备(特别是搭载高通 Snapdragon 芯片的手机/平板)上 Adreno GPU 与操作系统和用户空间(如 OpenGL ES、Vulkan、Skia 等)之间的桥梁。
Adreno GPU 的内核态驱动:负责管理 GPU 资源、上下文调度、内存分配、命令提交、功耗控制等。
为用户空间驱动和图形 HAL 提供接口:比如 libGLES、libEGL、libgralloc 以及 Android HAL。
支持多种图形 API:如 OpenGL ES、Vulkan、RenderScript、Skia、OpenCL 等。
代码路径:drivers/gpu/msm/kgsl/
2. Linux Kernel 中 Android-specific 驱动与模块
与 GKI 一起,Android 内核中还包括一些 Android-specific 驱动 和模块,这些是为了更好地支持 Android 设备的硬件和特性。
Android-specific 驱动和功能模块:
Binder 驱动:用于 进程间通信(IPC),是 Android 系统与 Linux 内核之间的主要通信机制。
代码路径:kernel/binder/
功能:提供跨进程的对象调用、远程过程调用(RPC),并为设备提供进程间通信的机制。
Ashmem(Anonymous Shared Memory):Android 提供的一个共享内存机制,供多个进程共享数据。
代码路径:kernel/ashmem/
功能:为内存敏感的 Android 应用提供高效的内存共享方式。
LMK (lowmemorykiller): 系统低内存回收,保护用户前台体验,防止OOM崩溃
代码路径:system/memory/lmkd
IOCTL(Input/Output Control):用于设备与用户空间的通信,通过 ioctl 系统调用管理硬件。
代码路径:drivers/
Power Management(电源管理):
CPU 频率调节:通过 CPUFreq 框架动态调整 CPU 的频率,减少功耗。
代码路径:drivers/cpufreq/
Wakelock:控制设备是否进入低功耗模式。
代码路径:kernel/power/
SELinux:提供强制访问控制(MAC)机制,保障 Android 系统的安全性。
代码路径:security/selinux/
Vendor Modules:这些模块通常由设备厂商提供,包含专门的硬件驱动。
代码路径:vendor/ 和 hardware/
RIL(Radio Interface Layer):为 Android 系统提供通信功能,包括电话、短信、数据服务等。
代码路径:system/rild/
代码路径:drivers/md/
3. 内存管理(Memory Management)
内存管理是 Linux 内核的核心之一,Android 系统也对其进行了定制化以提高性能和资源利用率。
Android-specific Memory Management:
低内存 Killer(LMK):在内存不足时,内核会终止一些进程以释放内存,确保系统不会因为内存不足而崩溃。
代码路径:kernel/sched/
ZRAM:压缩内存,用于提高内存利用效率,特别是在低内存设备上。
代码路径:drivers/staging/zram/
Buddy System:Android 和 Linux 使用的 伙伴系统 分配器高效管理物理内存。
代码路径:mm/compaction.c
Slab 分配器:用于内存缓存管理,提高对象分配效率。
代码路径:mm/slab.c
ION 内存管理驱动:Android 平台上为多媒体和 SoC 硬件加速设计的通用内存分配与管理驱动。
它允许多个硬件模块(如 GPU、Video Codec、Camera、Display 等)高效共享物理连续内存或特定类型内存,实现跨硬件和用户空间/内核空间的零拷贝数据传递。
代码路径:drivers/staging/android/ion/
但是Android 12开始,逐步想DMA-BUF Heap 标准靠拢
DMA-BUF(Direct Memory Access Buffer)是 Linux 内核中为多个设备/驱动共享物理内存缓冲区而设计的内核标准接口和框架。
它主要用于高效的、零拷贝的数据流传递,特别适合多媒体、显示、视频解码、GPU/CPU 协同等场景。
代码路径:drivers/dma-buf/
4. 文件系统(File System)
Android 在 Linux 文件系统 基础上做了很多定制化,尤其是在 内存卡管理、加密文件系统 等方面。
Android 文件系统:
EXT4 文件系统:默认的 Android 文件系统,提供高性能和高可靠性。
代码路径:fs/ext4/
F2FS:一种优化的 Flash 文件系统,用于 NAND 闪存存储。
代码路径:fs/f2fs/
加密文件系统:Android 支持基于 LUKS 或 FSCRYPT 的文件系统加密。
代码路径:fs/crypto/
Storage(存储)管理:
Vold:Android 的存储管理系统,处理存储设备(如 SD 卡)的挂载与卸载。
代码路径:system/core/vold/
Filesystem Encryption:Android 在设备上启用 文件系统加密,确保用户数据安全。
代码路径:fs/crypto/
Keymaster HAL(Hardware Abstraction Layer)是 Android 平台用于管理加密、签名等密钥相关操作的标准接口层,是安卓安全体系和硬件安全模块(如 TEE/SE/TrustZone)之间的桥梁。
密钥管理统一接口:为 Android 系统和 App 提供统一、标准化的密钥生成、使用、存储和销毁能力。
安全隔离:把真正的密钥操作放在受信任环境(如 TEE/TrustZone/Secure Element)中,防止普通系统或恶意 App 访问明文密钥。
API 对接:上层服务如 Keystore、Gatekeeper、Biometrics 通过 Keymaster HAL 访问底层安全模块。
代码路径:
AIDL:hardware/interfaces/security/keymint/aidl/
5. 网络(Networking)
Android 对 Linux 网络栈 进行了定制,尤其在网络通信、连接管理和优化上。
Android 网络栈:
TCP/IP 栈:Android 使用 Linux 内核的 TCP/IP 协议栈进行所有网络通信。
代码路径:net/ipv4/
Wi-Fi 驱动与管理:Android 定制了与 Wi-Fi 相关的内核模块与用户空间服务。
代码路径:drivers/net/wireless/
蓝牙管理:通过 BlueDroid 提供蓝牙协议栈。
代码路径:drivers/bluetooth/
Netfilter(防火墙):Android 使用 Netfilter 管理网络流量,提供数据包过滤与 NAT 功能。
代码路径:net/netfilter/
6. 安全性(Security)
Android 对 Linux 内核的安全性进行了增强,主要通过 SELinux 和其他 Android-specific 安全模块。
SELinux(Security-Enhanced Linux):通过强制访问控制(MAC)确保系统安全。
代码路径:security/selinux/
硬件安全模块(HSM):Android 与硬件平台集成,为敏感数据提供硬件级的加密保护。
代码路径:drivers/crypto/
AppArmor(可选):另一种用于提供强制访问控制的安全机制。
代码路径:security/apparmor/
7. 中断处理与硬件管理(Interrupt Handling & Hardware Management)
Android 内核中有大量硬件相关的驱动和模块,确保硬件资源的高效利用。
硬件中断(Interrupts):
中断管理:处理来自硬件的中断信号。
代码路径:kernel/irq/
硬件驱动:
GPU 驱动:管理图形处理单元(GPU)及其加速功能。
代码路径:drivers/gpu/
传感器驱动:Android 支持各种传感器(如加速度计、陀螺仪)。
代码路径:drivers/iio/
输入设备驱动:包括键盘、触摸屏等输入设备的管理。
代码路径:drivers/input/
Samsung 特有功能
源码位置
https://opensource.samsung.com/downSrcCode
三星(Samsung)Linux Kernel 层常见自研机制与增强汇总
- SLMK / SLMKD(Samsung Low Memory Killer/Daemon)
路径:drivers/android/lowmemorykiller.c、drivers/android/swap_lowmemorykiller.c
说明:自研内核态内存回收/冻结机制,细粒度管理内存,多任务体验更优。
- SPM / PM QoS(Samsung Power Management / Quality of Service)
路径:drivers/samsung/pm_qos/、drivers/soc/samsung/pm_qos/
说明:电源性能 QoS 策略,支持按场景动态调整 CPU/GPU 频率、总线带宽等,减少卡顿和功耗。
- EXYNOS SoC 相关驱动和控制子系统
路径:drivers/soc/samsung/、drivers/soc/exynos/、arch/arm64/boot/dts/samsung/
说明:包括 CPU/GPU 电源域、总线调度、温控、DVFS、Secure Monitor、ISP/VPU/NPU 控制等全套 SoC 控制逻辑。
- Seclog / SELinux 扩展(Samsung Security Logger)
路径:security/samsung/、security/selinux/(有三星自定义 patch)
说明:系统安全增强日志、动态安全策略、Root 检测、Knox 支持。
- Knox / TIMA(TrustZone-based Integrity Measurement Architecture)
路径:drivers/samsung/tima/、drivers/samsung/knox/
说明:安全启动、加密、应用容器,防 root、数据保护、企业级安全体系。部分功能通过 TrustZone/TEE 驱动实现。
- SecCamera / SecAudio / SecDisplay(多媒体安全与增强)
路径:drivers/media/platform/samsung/、drivers/sound/samsung/、drivers/video/fbdev/exynos/
说明:摄像头、音频、显示等硬件的专有优化和安全扩展(如 secure buffer, watermark, HDR, 多摄像头切换)。
- Samsung MMC/Storage 定制驱动(F2FS/ufs/ext4等增强)
路径:drivers/mmc/host/、fs/f2fs/(有三星定制补丁)、drivers/scsi/ufs/
说明:支持自家定制 eMMC/UFS/NAND 存储,扩展命令、智能健康管理、碎片整理和 TRIM、动态调度。
- Samsung Debug/Diag/Log 系统
路径:drivers/samsung/debug/、drivers/samsung/log/、drivers/samsung/diag/
说明:厂测、用户态抓 log、在线诊断、调试开关。对系统异常监控和信息回溯提供专用接口。
- Battery/Powershare/Charger 定制管理
路径:drivers/power/samsung/、drivers/power/supply/
说明:电池健康、充电协议、反向充电、快充和多电池场景专用管理,含多种安全策略。
- SecComp/SecKmsg/Procfs 扩展
路径:security/samsung/、fs/proc/(含三星 patch)、kernel/sec/
说明:内核安全、进程/系统监控增强、日志接口拓展(比如通过 seccomp 增强进程隔离、kmsg 日志加密等)。
- 内核冷启动/热重启/系统恢复/Watchdog 增强
路径:drivers/samsung/recovery/、drivers/watchdog/
说明:异常自动重启、系统镜像校验、OTA 恢复、厂商级看门狗逻辑。
- Samsung Haptic/Display/Touch Driver
路径:drivers/input/touchscreen/samsung/、drivers/video/fbdev/exynos/
说明:振动马达、超声波指纹、AMOLED 显示、自适应触控优化与私有特性。
- 专有调度、隔离与优先级机制
路径:kernel/sched/、kernel/cgroup/、drivers/samsung/sched/
说明:基于场景/AI/进程特征调整调度优先级,支持前后台自适应切换。
- ZRAM/Zswap/Swap 扩展与优化
路径:drivers/block/zram/、mm/zswap.c(含三星 patch)
说明:压缩内存、动态 swap 策略,提升低内存设备流畅度和后台多任务能力。
- 无线/射频/定位增强(Wi-Fi、BT、GNSS等)
路径:drivers/net/wireless/samsung/、drivers/bluetooth/samsung/、drivers/gnss/samsung/
说明:无线协议/射频链路/热点共享等多项私有增强,提升连接稳定性和速度。
机制/模块 | 路径示例 | 说明 |
---|---|---|
SLMK / SLMKD | drivers/android/lowmemorykiller.c drivers/android/swap_lowmemorykiller.c |
自研内存回收/冻结机制,细粒度管理内存,提升多任务体验 |
SPM / PM QoS | drivers/samsung/pm_qos/ drivers/soc/samsung/pm_qos/ |
电源性能 QoS 策略,动态调整 CPU/GPU 频率与带宽,减少卡顿与功耗 |
EXYNOS SoC 相关驱动 | drivers/soc/samsung/ drivers/soc/exynos/ arch/arm64/boot/dts/samsung/ |
SoC 全套控制,包括电源域、调度、温控、DVFS、ISP/NPU 控制等 |
Seclog / SELinux 扩展 | security/samsung/ security/selinux/(有定制 patch) |
安全日志、动态安全策略、Root 检测、Knox 支持 |
Knox / TIMA | drivers/samsung/tima/ drivers/samsung/knox/ |
安全启动、加密、容器、防 root、数据保护、企业级安全(含 TEE) |
SecCamera / SecAudio / SecDisplay | drivers/media/platform/samsung/ drivers/sound/samsung/ drivers/video/fbdev/exynos/ |
摄像头/音频/显示等硬件安全与专有优化(HDR、多摄、水印等) |
Samsung MMC/Storage 定制驱动 | drivers/mmc/host/ fs/f2fs/(有定制补丁) drivers/scsi/ufs/ |
定制 eMMC/UFS,健康管理、碎片整理、动态调度等 |
Samsung Debug/Diag/Log | drivers/samsung/debug/ drivers/samsung/log/ drivers/samsung/diag/ |
厂测、日志抓取、在线诊断,异常监控和信息回溯 |
Battery/Powershare/Charger 定制 | drivers/power/samsung/ drivers/power/supply/ |
电池健康、充电协议、反向充电、快充等多电池管理及安全策略 |
SecComp/SecKmsg/Procfs 扩展 | security/samsung/ fs/proc/(含 patch) kernel/sec/ |
内核安全、系统监控增强、日志接口拓展、进程隔离等 |
冷启动/热重启/系统恢复/Watchdog | drivers/samsung/recovery/ drivers/watchdog/ |
异常重启、OTA恢复、看门狗、镜像校验等 |
Haptic/Display/Touch Driver | drivers/input/touchscreen/samsung/ drivers/video/fbdev/exynos/ |
触控、振动、指纹、AMOLED 显示优化与私有特性 |
调度/隔离/优先级机制 | kernel/sched/ kernel/cgroup/ drivers/samsung/sched/ |
场景/AI/进程特征动态调度,优先级调整,前后台切换等 |
ZRAM/Zswap/Swap 扩展 | drivers/block/zram/ mm/zswap.c(含 patch) |
压缩内存,动态 swap 策略,提升低内存设备流畅度 |
无线/射频/定位增强 | drivers/net/wireless/samsung/ drivers/bluetooth/samsung/ drivers/gnss/samsung/ |
无线协议/射频/定位专有增强,提升连接与定位性能 |