Android是一个基于Linux内核的操作系统。然而,Android设备上运行的内核实际上与Google选择的LTS版本的Linux内核有很大不同。
在到达每个Android设备之前,内核将经历三个阶段的fork:谷歌将首先选择某个LTS(长期支持)版本的Linux内核,并向Android操作系统应用特定补丁以使其通用对于安卓。核心;然后,将通用内核交付给高通等SoC供应商,并打上硬件补丁;最后,SoC内核被移交给设备制造商,并打上各种特定于设备的组件补丁,这些补丁被合并到每个设备的设备内核中。 这是一个极其漫长的过程,执行多个fork并处理数百万行代码大大减慢了整个开发速度。因此,Android设备使用的内核落后于主线Linux内核两到三年。
谷歌最近在 10 月份发布了 Pixel 4,其 Linux 内核是 2017 年 11 月发布的 4.14 LTS 版本。而由于工作量过大,Android 设备通常得不到内核更新,会一直卡在 4.14 版本上。 而且,各种设备的内核是不同的,一种设备的特定内核在其他设备上是无法工作的。因此,Google正在努力缩小每个Android设备的内核与主线Linux内核之间的差距,使设备内核更接近上游内核主线。
在今年的 Linux Plumbers 大会上,Android 内核团队负责人 Sandeep Patil 表示,他们的目标是从根本上找到 Android 需要运行但不一定在给定硬件上运行的东西,然后将其引入上游并尽可能接近尽可能主线。 Google 的目的是复制其早期的工作 Project Treble,以模块化 Android。 Project Treble 用于在 Android 和 HAL(硬件抽象层)之间创建稳定的接口。
同样,Google 计划稳定 Linux 的内核 ABI,提供稳定的写入接口,使硬件供应商能够轻松插入代码,最终消除特定于设备的内核。 Google 高级软件工程师 Matthias M?nnich 展示了设想的内核架构图。 “下一代Android设备”的内核将由一个通用内核映像(GKI)和多个GKI模块组成。特定硬件的驱动程序(可能是闭源驱动程序)将作为内核模块加载。
无论如何,在这个愿景中,一切都是模块化的。 考虑到Android生态系统的技术障碍和多样性,这应该不是一件容易的事。无论如何,将Android设备内核纳入主线Linux内核肯定会让很多人受益,包括Android用户、手机制造商和Linux社区。不过,谷歌的计划才刚刚开始,还有更多的工作要做。