Android 支持主线 Linux 内核指日可待?

2019 年 11 月 25 日 CSDN


整理 | 郭芮

作为当前市场上唯一能与 iOS 抗衡的移动操作系统,基于 Linux 开发的 Android 系统重要性不言而喻。但是为了使其更加适应智能手机的需求,华为、三星以及谷歌自己等 OEM 厂商,乃至高通和联发科等芯片厂商,其实都在 Android 系统的底层方面进行了大量的修改。这也就不可避免地带来了系统安全性、维护性等诸多问题,从而备受开发者吐槽。


为什么 Android 设备总是运行古老的内核?


如果你对手机有一定的了解,那么你肯定知道谷歌的 Android 系统是基于 Linux 内核的操作系统,但是,运行在 Android 设备上的内核其实与 Google 选择的 LTS 版本 Linux 内核有很大不同。

通常来说,Android 设备使用的内核会经历三次 fork:

首先是 Google 选择一个 LTS 版本,将其转变成 Android Common 内核——即打上了 Android OS 特有的补丁;

Android Common 随后提供给 SoC 供应商如高通,经历第二次  fork,打上高通硬件补丁变成  SoC 内核;

该内核之后提供给设备制造商经历第三次 fork ,打上支持设备不同元件的内核补丁变成设备内核,这个内核才是最后随手机提供给客户的。

在去年的 Linux Plumbers 大会上,谷歌工程师 Sandeep Patil 也曾就这个问题详细介绍过。他表示:

Android 内核起初是一个来自主线的长期稳定(LTS)版本,这些版本结合 Android 核心的专有代码构成了 Android 公共内核版本。供应商选择一个公共内核,然后添加更多的树外代码,从而创建一个特定于片上系统(SoC)的内核,并提供给设备制造商。

最终,这些 SoC 内核中的其中一个被冻结,可能加入了另外一些树外代码,作为一个特定设备模型的内核。现在,只需要几周就可以把一个 LTS 版本合并到 Android 公共内核中,但它仍然需要几年才能成为设备内核。

这就是为什么 Android 设备总是运行古老的内核。

以 Google 10 月份最新发布的旗舰手机 Pixel 4 为例,其使用的是 Linux kernel 4.14 LTS,这个版本是在 2017 年 11 月发布的,而且在可预见的未来,该型号的手机会一直停留在 4.14——总之,Android 内核的开发和管理方式从一开始就消除了使用 Linux 带来的许多优势:内核更新缓慢,大量树外代码的使用使得要合并新的稳定更新变得极为困难。

为减少这样的代码、提升系统的安全性,同时也为了更方便地维护系统,谷歌已经投入了大量的资源,并试图缩小各 Android 设备内核与主线 Linux 内核间的差距,让设备内核更接近上游内核主线。


模块化的未来?


在今年的 Linux Plumbers Conference 大会上,谷歌工程师在公司如何使 Android 系统底层更加接近主流 Linux 内核方面做了演讲。

其表示,具体方法是模块化:谷歌计划稳定 Linux 的内核 ABI,Android 内核将由 Generic Kernel Image (GKI) 和多个 GKI 模块构成,以模块化方式加载所需的硬件驱动或其它补丁,从而提供一个稳定的写入接口,使硬件供应商可以轻松地插入代码,最终消除特定的设备内核。

总之在该设想中,所有东西都将被模块化。

随着 Linux 内核的演变,目前的 Linux 内核与以往相比更加适合在移动设备当中使用,因此谷歌已经不需要对目前主流的系统内核进行很大的改动。谷歌表示,计划的第一步是将在 Android 内核方面的修改更多地回归到主流 Linux 内核上。截至 2018 年 2 月,与 Linux 4.14.0 内核相比,Android 通用内核插入了 32000 行代码,并且删除了 1500 多行代码。与几年前 60000 行代码的插入量相比,谷歌已经大幅度减少了对内核代码的修改程度。

此外,根据谷歌的计划,目前处于开发阶段的 Fuchsia 系统将在未来代替目前主流的 Android 系统。这款采用自定义内核的系统,可以更好地消除与 Linux 系统有关的技术障碍。对于芯片制造商与 OEM 商场的修改,谷歌将驱动程序和应用程序与 Android 内核区分开,从而保持系统内核的纯净度——其 2017 年推出的 Project Treble 项目也是谷歌计划的一部分。

这也意味着,虽然在 Android 设备上运行主线内核的梦想还没有实现,但谷歌的动作可能会让这一天来得比想象中更快。


写在最后


无论如何,将 Android 设备内核引入主线 Linux 内核肯定会是大势所趋的未来,包括 Android 用户、手机制造商和 Linux 社区等在内的不少人都将受益。在引导 Android 内核尽可能接近主线的路上,谷歌也一直在努力。但是考虑到 Android 生态系统的技术壁垒和多样性,这应该不是一件容易的事情。

不过谷歌的计划刚刚开始,后续的工作就留待继续完成了。

参考链接:

https://arstechnica.com/gadgets/2019/11/google-outlines-plans-for-mainline-linux-kernel-support-in-android/

https://www.solidot.org/story?sid=62680

https://blog.csdn.net/weixin_33725270/article/details/89167718

【End】

热 文 推 荐 

网易回应裁撤生病员工;苹果押宝 5G 手机;IntelliJ IDEA 2019.3 RC 发布 | 极客头条
Google 是如何做 Code Review 的? | 原力计划

特斯拉皮卡,会大卖吗?

Spring 框架之 AOP 原理深度剖析!|CSDN 博文精选

卡内基梅隆大学副教授张旆:传感系统新玩法,物理响应分析人的生老病死

腾讯程序员失业 3 个月,靠送外卖谋生:职场半坡,生存事大!

太真实了:程序员等级图鉴

AI+大数据顶级技术盛会开幕在即,6.6折特惠票限时抢购

点击阅读原文,参加中国开发者现状调查!
你点的每个“在看”,我都认真当成了喜欢
登录查看更多
0

相关内容

Android(安卓)是一种以 Linux 为基础开发的开放源代码的操作系统,主要应用于便携设备。2005 年,Android 公司被 Google 收购,随后 Google 联合制造商组成开放手机联盟。Android 已从智能手机领域逐渐扩展到平板电脑、智能电视(及机顶盒)、游戏机、物联网、智能手表、车载系统、VR以及PC等领域。
【干货书】现代数据平台架构,636页pdf
专知会员服务
250+阅读 · 2020年6月15日
【实用书】Python爬虫Web抓取数据,第二版,306页pdf
专知会员服务
115+阅读 · 2020年5月10日
【北京大学】面向5G的命名数据网络物联网研究综述
专知会员服务
35+阅读 · 2020年4月26日
TensorFlow Lite指南实战《TensorFlow Lite A primer》,附48页PPT
专知会员服务
68+阅读 · 2020年1月17日
【干货】大数据入门指南:Hadoop、Hive、Spark、 Storm等
专知会员服务
94+阅读 · 2019年12月4日
【电子书】C++ Primer Plus 第6版,附PDF
专知会员服务
83+阅读 · 2019年11月25日
支持多标签页的Windows终端:Fluent 终端
Python程序员
7+阅读 · 2019年4月15日
I2P - 适用于黑客的Android应用程序
黑白之道
28+阅读 · 2019年3月6日
Python 杠上 Java、C/C++,赢面有几成?
CSDN
6+阅读 · 2018年4月12日
Python为啥这么牛?
Python程序员
3+阅读 · 2018年3月30日
免费云真机测试 | 让您的应用完美适配 Android Oreo
引力空间站
3+阅读 · 2018年2月2日
10个深度学习软件的安装指南(附代码)
数据派THU
17+阅读 · 2017年11月18日
Arxiv
99+阅读 · 2020年3月4日
Arxiv
91+阅读 · 2020年2月28日
Arxiv
34+阅读 · 2019年11月7日
Arxiv
4+阅读 · 2016年12月29日
VIP会员
相关资讯
支持多标签页的Windows终端:Fluent 终端
Python程序员
7+阅读 · 2019年4月15日
I2P - 适用于黑客的Android应用程序
黑白之道
28+阅读 · 2019年3月6日
Python 杠上 Java、C/C++,赢面有几成?
CSDN
6+阅读 · 2018年4月12日
Python为啥这么牛?
Python程序员
3+阅读 · 2018年3月30日
免费云真机测试 | 让您的应用完美适配 Android Oreo
引力空间站
3+阅读 · 2018年2月2日
10个深度学习软件的安装指南(附代码)
数据派THU
17+阅读 · 2017年11月18日
Top
微信扫码咨询专知VIP会员