首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >从Android 11引入的带有GKI的Android内核构建流程

从Android 11引入的带有GKI的Android内核构建流程
EN

Stack Overflow用户
提问于 2020-12-22 20:36:41
回答 1查看 2.1K关注 0票数 2

我正试图将Android 11移植到我的板(odroid-n2)上,我对如何构建特定于板的内核模块和ramdisk感到困惑。能帮我个忙吗?

最近,为了解决内核碎片问题,AOSP似乎正在将内核分成两个不同的块。

(1) GKI(通用核图像)

(2)供应商专用核

对于GKI,我想我可以使用来自ci.android.com的图像。

对于供应商特定部分(与vendor_boot分区相关),

  1. 这有具体的流程吗?或者什么可以参考的东西?
  2. 在案例研究中,我指的是{android内核}/ should /build.config.db845c,我不明白为什么要将'gki_defconfig + db845c_gki.fragment‘组合为一个来生成内核构建的信任。我认为我们只为特定于供应商的部分构建内核模块。

*)对于android文档,我指的是以下内容。

https://source.android.com/setup/build/building-kernels https://source.android.com/devices/architecture/kernel/generic-kernel-image

EN

回答 1

Stack Overflow用户

发布于 2021-04-21 10:01:30

实际上,使用GKI (),通用部件和供应商部件是分开的。到目前为止,这种区别是非常清楚的:vmlinux是GKI,任何模块(*.ko)都是供应商。如果GKI模块显示出有用的话,这种情况在将来可能会发生变化。然后可能出现GKI (Kernel+Modules) +供应商模块。

整个构建过程也是非常新的,并且随着Android内核的开发方式发生了根本性的变化,这一过程仍在不断发展。历史上,设备内核和模块是在一个逻辑步骤中构建的,并且通过组合构建确保了兼容性。现在,我们正在转向这样一个世界:我们可以干净地构建内核和模块,完全分开,不存在重叠。将来构建供应商模块可能会变得容易得多,而不必同时构建太多的GKI内核。然而,按照当前的构建方式,设置起来就更容易了。

Android11 介绍的概念是“遵从”基于GKI的内核。这意味着附带的内核与GKI内核兼容ABI。从理论上讲,这意味着您可以真正地交换您拥有的内核,并将其替换为来自ci.android.com的构建。注意,兼容内核可以具有GKI没有的重要(ABI兼容)补丁。因此,虽然兼容,但可能不会带来相同的体验。

安卓12的使设备将与包含GKI内核的签名引导映像一起启动。自Kernel<>Module ABI of those kernels is kept stable以来,这还允许对GKI内核和供应商模块进行独立更新。

当您提到db845c构建配置时,是的,这看起来有点混乱。这是一个完整的配置,构建确实会产生一个(ABI兼容的!)内核和厂商特定的模块。可以将该片段视为gki_defconfig的修补程序,因为它不会更改核心内核,而是启用所需的模块。在最后一个版本中,来自此构建的内核映像将被GKI内核映像替换。但是对于开发来说,这个构建所产生的内核是完全可以使用的。

在实践中,它帮助下游项目同时开发核心内核特性和模块,尽管模块和内核的更改需要进入不同的存储库(db845c是一个例外,这里是一个参考板)。

为了回答您关于如何构建db845c内核的问题,ci.android.com还提供了构建日志以及要下载的构件。对于雄激素12-5.10分支和目标kernel_db845c,可以找到最近构建的这里build.log在开始时声明了复制以下内容的指令:

代码语言:javascript
运行
复制
$ BUILD_CONFIG=common/build.config.db845c build/build.sh

这是基于对source.android.com -构建内核的一般说明的相关步骤。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65415511

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档