浅谈安卓内核的碎片化

浅谈安卓内核的碎片化

💡 原文中文,约2300字,阅读约需6分钟。
📝

内容提要

这篇文章讨论了安卓内核的碎片化问题,重点介绍了通用内核映像(GKI)项目。GKI通过统一核心内核并将SoC和板级支持移至可加载模块,解决了内核碎片化。GKI 2.0要求搭载Android S及以上版本的设备使用GKI内核,提供稳定的内核模块接口,确保模块和内核独立更新。文章指出,非GKI时期内核版本碎片化严重,导致设备上运行大量非上游代码,影响更新和兼容性。

🎯

关键要点

  • 通用内核映像(GKI)项目通过统一核心内核并将SoC和板级支持移至可加载模块,解决了内核碎片化问题。

  • GKI 2.0要求搭载Android S及以上版本的设备使用GKI内核,提供稳定的内核模块接口,确保模块和内核独立更新。

  • 非GKI时期内核版本碎片化严重,设备上运行大量非上游代码,影响更新和兼容性。

  • 供应商通过修改内核源代码并添加设备驱动程序,导致设备上运行的代码中有多达50%是树外代码。

  • AOSP通用内核包含与Android社区相关但尚未合并到Mainline内核或长期支持(LTS)内核的补丁程序。

  • 厂商不升级内核版本导致Android框架代码必须假设支持的内核版本多达5个,缺乏针对新平台版本的内核更改。

🔎

延伸解读

GKI的优势与挑战

通用内核映像(GKI)项目通过统一内核和模块化设计,显著降低了安卓内核的碎片化问题。这种结构使得内核和模块可以独立更新,提升了设备的兼容性和安全性。然而,厂商在GKI内核中可能会失去一些私有特性,这对用户体验可能产生影响,尤其是在高端设备上。

内核版本的兼容性问题

文章指出,非GKI时期内核版本的碎片化严重,导致设备上运行大量非上游代码。这种情况使得设备在更新时面临兼容性风险,用户可能无法获得最新的安全补丁和功能。因此,用户在选择设备时应关注其内核版本及更新策略,以确保长期的使用体验。

厂商升级内核的动力不足

许多厂商在内核版本升级上缺乏动力,往往选择不升级以节省成本。这种现象导致Android框架必须支持多个内核版本,增加了开发和维护的复杂性。用户在购买设备时,需关注厂商的更新承诺,以避免未来可能的兼容性问题。

延伸问答

什么是通用内核映像(GKI)项目?

通用内核映像(GKI)项目通过统一核心内核并将SoC和板级支持移至可加载模块,解决了安卓内核的碎片化问题。

GKI 2.0对安卓设备有什么要求?

GKI 2.0要求搭载Android S及以上版本的设备使用GKI内核,并提供稳定的内核模块接口,确保模块和内核独立更新。

非GKI时期内核碎片化的原因是什么?

非GKI时期内核版本碎片化严重,主要是因为供应商通过修改内核源代码并添加设备驱动程序,导致设备上运行大量非上游代码。

GKI内核的主要特性有哪些?

GKI内核的主要特性包括提供稳定的内核模块接口,不包含SoC专用代码或板卡专用代码,以及支持每个架构和LTS版本的单内核二进制文件。

为什么厂商不升级内核版本会影响安卓框架?

厂商不升级内核版本导致Android框架代码必须假设支持的内核版本多达5个,缺乏针对新平台版本的内核更改,影响了系统的兼容性和更新。

AOSP通用内核与Linux内核有什么不同?

AOSP通用内核是Linux内核的下游,包含与Android社区相关但尚未合并到Mainline内核或长期支持内核的补丁程序,二者在功能和结构上存在差异。

🏷️

标签

➡️

继续阅读