Android是基于Linux内核的操作系统,但是,运行在Android设备上的内核其实与Google选择的LTS版本Linux内核有很大不同。
在到达每一台Android设备前,内核会经历三个阶段的fork:Google会先选择某个LTS(长期支持)版本的Linux内核,打上Android操作系统的特定补丁,使其成为Android通用内核;紧接着,通用内核被交付给高通等SoC供应商,打上硬件补丁;最后,SoC内核再被移交至设备制造商,打上设备特定的各类元件补丁,这也就构成到每台设备中的设备内核。
这是一个及其漫长的过程,执行多重fork并处理数百万行代码大大减慢了整个开发速度。因此,Android设备使用的内核相较于Linux内核主线要滞后两到三年的时间。Google于10月份最新发布了Pixel 4,其Linux内核则是2017年11月发布的4.14 LTS版本。并且由于过大的工作量,Android设备通常不获取内核更新,它将永远停留在4.14版本上。
再者,各种设备的内核都不尽相同,一台设备的特定内核无法在其他设备上工作。于是,Google正试图缩小各Android设备内核与主线Linux内核间的差距,让设备内核更接近上游内核主线。
在今年的 Linux Plumbers Conference上,Android内核团队负责人Sandeep Patil表示,他们的目标是从根本上找到Android运行所需要的、但不必在给定的硬件上运行的东西,然后将其引入上游并尽可能接近主线。
Google的打算是复制其早期工作Project Treble以模块化Android。Project Treble用于在Android和HAL(硬件抽象层)之间创建稳定的接口。与此类似,Google计划稳定Linux的内核 ABI,从而提供一个稳定的写入接口,使硬件供应商可以轻松地插入代码,最终消除特定的设备内核。
Google的高级软件工程师MatthiasMännich展示了一幅预想中的内核体系结构图。”下一代Android设备“内核将由通用内核镜像(Generic Kernel Image,GKI)和多个 GKI 模块构成,特定硬件的驱动程序(可能是闭源驱动)将作为内核模块加载。总之在该设想中,所有东西都被模块化了。
考虑到Android生态系统的技术壁垒和多样性,这应该不是一件容易的事情。无论如何,将Android设备内核引入主线Linux内核肯定会使包括Android用户、手机制造商和Linux社区等在内的不少人受益。不过Google的计划刚刚开始,后续还有更多的工作要完成。
特别提醒:本网内容转载自其他媒体,目的在于传递更多信息,并不代表本网赞同其观点。其原创性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容、文字的真实性、完整性、及时性本站不作任何保证或承诺,并请自行核实相关内容。本站不承担此类作品侵权行为的直接责任及连带责任。如若本网有任何内容侵犯您的权益,请及时联系我们,本站将会在24小时内处理完毕。