谷歌Android设备内核引入主线Linux内核难吗?

电子说

1.2w人已加入

描述

Android是基于Linux内核的操作系统,但是,运行在Android设备上的内核其实与Google选择的LTS版本Linux内核有很大不同。

在到达每一台Android设备前,内核会经历三个阶段的fork:Google会先选择某个LTS(长期支持)版本的Linux内核,打上Android操作系统的特定补丁,使其成为Android通用内核;紧接着,通用内核被交付给高通等SoC供应商,打上硬件补丁;最后,SoC内核再被移交至设备制造商,打上设备特定的各类元件补丁,这也就构成到每台设备中的设备内核。

Linux

这是一个极其漫长的过程,执行多重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,从而提供一个稳定的写入接口,使硬件供应商可以轻松地插入代码,最终消除特定的设备内核。

Linux

Google的高级软件工程师MatthiasMännich展示了一幅预想中的内核体系结构图。”下一代Android设备“内核将由通用内核镜像(Generic Kernel Image,GKI)和多个 GKI 模块构成,特定硬件的驱动程序(可能是闭源驱动)将作为内核模块加载。总之在该设想中,所有东西都被模块化了。

考虑到Android生态系统的技术壁垒和多样性,这应该不是一件容易的事情。无论如何,将Android设备内核引入主线Linux内核肯定会使包括Android用户、手机制造商和Linux社区等在内的不少人受益。不过Google的计划刚刚开始,后续还有更多的工作要完成。

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分