一年一度的 Linux Plumbers 大会是从事 Linux 系统底层开发的工程师的聚会。考虑到 Android 作为全球规模最大的 Linux 内核发行版之一,谷歌软件工程师 Todd Kjos 今年也参与了大会并做了分享。

他表示,即将正式亮相的 Android 12 承诺向最终用户提供谷歌打造的“通用内核镜像(Generic Kernel Image,简称 GKI)”,以确保新一代 Android 能无限拉近与主流 Linux 的距离。

在传统上,Linux 内核在入驻 Android 手机之前会经历多次分叉,而且 Android 设备供应流程中的每个利益相关方都会进行自己的分叉。简单来说,就是谷歌先将 Linux LTS 内核分叉为 Android Comon Kernel,之后再由 SoC 供应商针对每款芯片进行分叉,最后由设备制造商进行再次分叉。

首先,谷歌会将 Linux 内核分叉为“Android Common”——即 Linux 内核加上一系列手机与 Android 特定调整。之后以高通、三星或联发科为代表的 SoC 供应商又会对 Android Common 进行分叉,为各个主要芯片版本开发一套 SoC 专用内核。最后,每台设备都要对应 SoC 内核的一个特定分叉,用于实现对特定设备的硬件支持。

可以看到,Android 内核的这种严重碎片化必然引发巨大混乱,我们不难想象从分支树顶端到最终用户推动 bug 修复会是一项多么漫长而艰难的旅程。Android.com 官方文档提到,“内核修改范围极为广泛,因此在最终设备上运行的代码中有多达 50% 的代码属于树外代码(并非来自上游 Linux 或 AOSP 通用内核)。”此外,这样的方式还带来严重的时间浪费,即使是谷歌自家的官方品牌手机也得提前两年就开始供应内核。

谷歌一直希望通过 GKI 拉近 Android 与 Linux 之间的距离。谷歌的目标是只为 Android 对 Linux 内核进行一次分叉(而不是三次),再通过插件模块为 SoC 及设备制造商提供定制化空间。

演示文稿中的幻灯片,其中详细介绍了新的内核策略时间表

Kjos 解释道,“最大的驱动力是将所有特定于硬件的代码从通用内核中迁移至供应商模块处。要达成这个目标,我们必须在各供应商模块与通用内核之间建立起稳定的接口。只有这样,才能让异步发布成为现实。”该接口被称为“KMI”,即“内核模块接口”。Kjos 指出,目前 Android GKI 与主线 Liux 之间的“主要区别”就是各供应商模块间使用的 hook 有所不同。

Kjos 提到,谷歌更倾向于在供应商模块中使用短小的 hook(而非主干代码),只有这样“才能尽可能靠近上游”。虽然一直在努力将供应商代码推向上游,但谷歌也承认“这是一项需要耗时多年的庞大计划,我们觉得恐怕很难真正实现。”

Kjos 还为未来几年的内核工作制定了时间表,其中 2020 年至 2022 年期间的主要任务是将现有功能推向上游、并隔离供应商的变更模块;从 2023 年开始,正式采用“上游优先”新功能开发模型。“考虑到树外模式对我们的用例非常重要,我们希望能在上游之外也始终保持一定程度的外部开发空间。但必须承认,这项将耗时多年的整体计划是要尽可能消除树外补丁,让下游产出尽可能与上游保持一致。”

谷歌的通用内核镜像工作与 Treble 项目非常相似,后者的目标在于建立起 GSI(即「通用系统镜像」),允许以硬件中立的方式更新 Android 版本。如今,我们可以将通用版本的 Android 下载到手机并获得不错的运行体验。但 GKI 的意义有所不同,谷歌希望通过它直接将通用内核交付至最终用户手中。

虽然演讲中并没有明确提及,但谷歌确实在努力将 GKI 作为“项目主线”模块进行发布。在它的帮助下,内核更新将能够通过 Play 应用商店发布,整个更新过程与移动应用基本一致。我们已经多次就 GKI 采访了 Android 团队的成员,他们的最终计划不仅是通过 Play 应用商店更新 LTS 内核版本,更是要实现对主要新版本的升级能力。如今,TLS 内核更新偶尔会通过 OTA 的形式送达,但新的主要内核版本更新对大多数移动设备仍是个老大难问题。

GKI 计划在“Android 12”版本中与广大消费者正式见面。因为这次内核升级调整只适用于新设备,所以全世界的目光都集中在了 Pixel 6 身上。我们也期待着雄心勃勃的谷歌能借此机会一展自己的强大实力。

Pixel 6 将是第一款配备内部“Google Tensor”SoC 的移动设备;如果关于谷歌延长技术支持时间线的理论准确无误,那么这种内核大版本升级能力将使该设备的生命周期超过五年。而且如果 Pixel 6 中使用的是发布于 2020 年 12 月的 Linux 5.10 内核,则代表着谷歌已经在以往平均滞后两年的内核版本基础之上迈出了重要的一步。

原文链接:https://arstechnica.com/gadgets/2021/09/android-to-take-an-upstream-first-development-model-for-the-linux-kernel/

个推推送 SDK 集成之 Device Token

Kotlin 这 10 年来的变化!

JCenter 迁移指南

高仿 自如APP 底部导航切换动画效果

一组你们心心念念的 Windows 10 主题壁纸,请签收!

我是code小生,喜欢可以随手点个在看、转发给你的朋友,谢谢~

Android 官方正在着手解决碎片化问题相关推荐

  1. 移动APP开发的锦囊妙计 | 一键解决碎片化测试的所有问题

    移动 APP 开发者和运营人员最头疼的问题? 移动互联网时代,吃喝玩乐.办公支付等等各种应用都在抢占移动 APP 市场,在流量为王的今天,移动 APP 虽然竞争激烈,但前景依然一片大好. 但即使在这个 ...

  2. 鸿蒙os有碎片化问题吗,华为鸿蒙OS系统再爆好消息!解决碎片化问题,4GB流畅度媲美12GB...

    相信关注智能手机领域的用户都知道华为研发了自主手机操作系统鸿蒙,系统发布后在国内手机圈的关注度大增,虽然现在依旧没有商用在手机上,但关注度仍然在上涨,因为余承东多次表示愿意和谷歌合作,如果安卓真的用不 ...

  3. 整日碎片化学习“凡不凡”?来看看优秀的Android开发都是如何学习的,破解碎片化学习的骗局!

    前言 人生有好多事情,可以走捷径或者可以找人替代,唯有求知.成长无捷径及无法找人替代. 作为一个3-5年的Android工程师,我们经常会遇到这些瓶颈: 1.技术视野窄:长期在小型软件公司,外包公司工 ...

  4. 烤星 · DeFi 课堂丨如何破解 DeFi 生态“碎片化”难题?

    王也 打开 DeFi 世界之门,从小白到 DeFi 大神的进阶必修课. 由 Conflux × Odaily星球日报联合出品,星球日报资深记者@王也担任主笔. 烤星 · DeFi 课堂 与传统金融相比 ...

  5. 重构碎片化知识_知识碎片化时代,如何妙用思维导图,提高你的学习效率(含福利)...

    这里是[科学学习法]的第03篇. 慧心优学:不忘初心,与您一道关心教育,关心未来! 随着移动互联网的快速发展,各种付费知识产品也层出不穷,加上工作本来就繁忙的你,原本就没有多少时间静下心来好好读书,于 ...

  6. RISC-V正在采取行动,避免MIPS类的碎片化

    来源:半导体行业观察 在技术重量级人物的支持下,RISC-V 不断增长,但也带来了挑战:鼓励 CPU 设计人员保持一致,并避免MIPS和Android中发生的那种碎片化. 考虑到这一点,协调开源指令集 ...

  7. 物联网操作系统碎片化问题分析与思考

    一.概述 本文以物联网操作系统面临的碎片化问题为主题,从CPU.外设.组件与接口四个方面出发,阐述物联网操作系统面临的挑战以及一些设计理念.以总分1.0进行度量,我认为整个物联网系统的碎片化指数如下: ...

  8. 重构碎片化知识_《碎片化与重构》之如何整合知识碎片

    下去读一读西蒙斯的<网络时代的知识和学习--走向联通>这本书,联通主义就是西蒙斯提出来的,在网络时代,知识就像一条河流或管道里的石油,知识的更新速度快,成倍甚至是指数级的增长,然而知识的半 ...

  9. 重构碎片化知识_知识碎片化,思维导图重构你的思维体系

    原标题:知识碎片化,思维导图重构你的思维体系 如何解决碎片化的学习方式? 思维导图重构你的思维体系... 作为校长或教师的你,有没有这样的经历: 备课的时候,突然就会来一个电话,或者一条微信,于是你不 ...

最新文章

  1. 机器学习敲门砖:任何人都能看懂的TensorFlow介绍
  2. C#操作IIS站点 Microsoft.Web.Administration.dll
  3. 【线性表4】线性表的链式实现:静态表
  4. 近世代数--整环上的唯一分解问题--相伴是整环上的等价关系,最大公因子建立在相伴所划分的等价类上
  5. 一个简单问题引发对IEnumerable和IQueryable的思考
  6. Binary Tree Traverasl with OO and Stack
  7. windows系统OLLVM + NDK 混淆编译环境搭建
  8. dfa转正则表达式_GitHub - hidva/re2dot: 根据正则表达式生成其对应 DFA 的状态转移图...
  9. C++雾中风景12:聊聊C++中的Mutex,以及拯救生产力的Boost
  10. H5 37-背景缩写
  11. 6.Java反射到底慢在哪
  12. 如何理解java抽象类,我是如何理解Java抽象类和接口的
  13. STM32+AD7705实现电压采集
  14. 添加字段的sql语句
  15. 前端的debug调试
  16. ps在psd格式图片里面切图流程
  17. Windows 8轻松用系列
  18. A Comprehensive Measurement Study of Domain Generating Malware 原文翻译
  19. 360校招失败的慘痛经历
  20. 支付宝接口 设置支付宝订单的超时时间为15分钟

热门文章

  1. 交友类即时交流软件开发
  2. APP开发外包注意事项
  3. win10计算机添加右键菜单,win10 无法通过右键菜单打开设置
  4. html中a标签设置红色,css 里面,a标签里面的字体颜色怎么调?请详解!谢谢.
  5. coreldraw x4提示非法软件产品被禁用解决方法_tp-link路由器怎么设置网站限制 tp-link路由器设置网站限制方法【步骤】...
  6. Python全栈笔记(一)
  7. 移动直播连麦实现——A端合成
  8. 什么是反向代理(代理服务器解释
  9. 最优化理论线性规划的基,基解,基可行解,退化基可行解
  10. 简介:argparse