整理 | 郭芮

作为当前市场上唯一能与 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】

2019我为什么建议你学Python?

https://edu.csdn.net/topic/python115?utm_source=csdn_bw

热 文 推 荐 

☞网易回应裁撤生病员工;苹果押宝 5G 手机;IntelliJ IDEA 2019.3 RC 发布 | 极客头条

☞Google 是如何做 Code Review 的?| 原力计划

☞特斯拉皮卡,会大卖吗?

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

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

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

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

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

点击阅读原文,参加中国开发者现状调查!

你点的每个“在看”,我都认真当成了喜欢

Android 支持主线 Linux 内核指日可待?相关推荐

  1. Android版本与Linux内核版本的关系

    Android版本与Linux内核版本的关系 一.Android版本与Linux内核的关系 英文名 中文名 Android版本 Linux内核版本 No 无 1.1 Cupcake 纸杯蛋糕 1.5 ...

  2. 使用Android模拟器调试linux内核

    使用Android模拟器调试linux内核 为什么需要调试linux内核 如何在Android上调试内核 开发环境 创建模拟器 下载goldfish内核源码 编译goldfish内核 编译内核遇到的问 ...

  3. exfat单元分配要设置多少_微软宣布,支持往Linux内核里添加exFAT存储了!跨系统存储的福音...

    栗子 发自 凹非寺  量子位 报道 | 公众号 QbitAI exFAT,是微软开发的文件系统,为闪存而生. 你的U盘.SD卡.手机等等存储设备,能存4G以上的大文件,很大程度上是它的功劳. 可exF ...

  4. Android 8.0 linux内核,在Ubuntu上为Android增加硬件抽象层(HAL)模块访问Linux内核驱动程序---Android8.0版本实现-对照老罗版本...

    老罗版本参见:https://blog.csdn.net/luoshengyang/article/details/6573809 在Android硬件抽象层(HAL)概要介绍和学习计划一文中,我们简 ...

  5. android驱动之旅-在Ubuntu上为Android系统编写Linux内核驱动程序(3)

    Android的硬件抽象层,简单来说,就是对Linux内核驱动程序的封装,向上提供接口,屏蔽低层的实现细节.也就是说,把对硬件的支持分成了两层,一层放在用户空间(User Space),一层放在内核空 ...

  6. 在Ubuntu上为Android系统编写Linux内核驱动程序

    在智能手机时代,每个品牌的手机都有自己的个性特点.正是依靠这种与众不同的个性来吸引用户,营造品牌凝聚力和用户忠城度,典型的代表非iphone莫属了. 据统计,截止2011年5月,AppStore的应用 ...

  7. 在Ubuntu上为Android系统编写Linux内核驱动程序(学习老罗的)

    首先提出2个问题 1. 驱动程序的作用是什么? 答:驱动程序的作用主要是向上层提供访问设备寄存器的一个接口,包括读和写. 2. 访问设备驱动程序的方法? 答:a. 通过proc文件系统来访问:b. 通 ...

  8. 在Ubuntu上为Android系统编写Linux内核驱动程序 2

    如下书本参考:嵌入式Linux应用开发和Linux设备驱动程序. 在智能手机时代,每个品牌的手机都有自己的个性特点.正是依靠这种与众不同的个性来吸引用户,营造品牌凝聚力和用户忠城度,典型的代表非iph ...

  9. 【1】在Ubuntu上为Android系统编写Linux内核驱动程序

    在智能手机时代,每个品牌的手机都有自己的个性特点.正是依靠这种与众不同的个性来吸引用户,营造品牌凝聚力和用户忠城度,典型的代表非iphone莫属了.据统计,截止2011年5月,AppStore的应用软 ...

最新文章

  1. 【深度学习】医学图像分割多标签损失函数和极坐标变换
  2. Asp.Net Core发布绑定域名和端口
  3. 4月8日及以后火车票暂停发售!
  4. linux 运行 级别(转)
  5. java 版本EChart使用
  6. shell实战训练营Day2
  7. Jmeter性能测试脚本搭建与测试步骤流程
  8. 安卓开发—Android基础
  9. J.U.C之AQS:CLH同步队列
  10. java word 批注_Java 添加、回复、修改(替换)、删除Word批注
  11. 科研画图都用什么软件
  12. 自动聚焦技术(AF)
  13. php的样式怎么设置字体大小,css中如何改变字体大小
  14. 点击量、点击率、访客数、的区别与作用
  15. 东京・京都“APARTMENT HOTEL MIMARU”首次导入运用智能音箱和聊天机器人的IT服务
  16. android x86 修改器,烧饼修改器x86专属版
  17. 0、PIC系列参考手册中文版文档汇总
  18. 单片机精确延时几种方式
  19. C++ 关于存档与读档
  20. java getfiles_Java基础教程——File类、Paths类、Files类

热门文章

  1. 【转】【重要】破除“系统学习”的情结
  2. 前端开发~uni-app ·[项目-仿糗事百科] 学习笔记 ·008【首页开发】
  3. [Python] ubuntu 上安装 Miniconda
  4. 矩池云上Ubuntu18.6安装COMSOL Multiphysics 5.5
  5. 如何备份服务器日志到其他服务器_sql2008自动备份到ftp服务器,sql2008自动备份到ftp服务器代码公布...
  6. python 编码解码原理_Python JSON编解码方式原理详解
  7. pythonweb接口优化_记一次flask web接口速度优化
  8. leetcode题库53-- 最大子序和
  9. 《推荐系统笔记(十三)》购物篮分析 —— 基于关联规则的topN推荐
  10. keras文件存放的目录