浅谈安卓内核的碎片化

浅谈安卓内核的碎片化

💡 原文中文,约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)项目通过统一核心内核并将SoC和板级支持移至可加载模块,解决了安卓内核的碎片化问题。

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

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

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

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

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

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

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

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

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

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

➡️

继续阅读