AOSP Android 10 中的内核配置在哪里?

fad*_*bee 2 linux-kernel android-source

我在 中找到了各种内核配置kernel/configs/q

当我改变它们时,并且mmkernel/msm-4.14内核中运行时不会重建。

我在哪里编辑内核配置,以便在mm运行时强制内核重建?

one*_*one 5

内核首先与 Android 平台分开构建。然后,Android 平台构建系统使用TARGET_PREBUILT_KERNEL环境变量指向内核映像所在的位置。

以下是我通常如何配置和构建的概述。我已经为不同的供应商在 Android 9 和 10 上做到了这一点。我使用的方案在此处的文档中提到。非 Google 内核通常不附带版本控制(repo),我不知道您在处理什么,所以我将介绍两者。

配置内核

对于 repo-checkout 内核,您可以在build/build.config. 基本上,以 defconfig 为基础后,您可以使用该${KERNEL_DIR}/scripts/config工具来更改配置。这通常如下所示:

POST_DEFCONFIG_CMDS="check_defconfig && update_config"
function update_config() {
${KERNEL_DIR}/scripts/config --file ${OUT_DIR}/.config \
    -d CONFIG_SOMETHING_I_DISABLE \
    -e CONFIG_SOMETHING_I_ENABLE \
    --set-val CONFIG_FOO = 123
}
Run Code Online (Sandbox Code Playgroud)

如果您没有 repo-checkout 内核,位置和详细信息可能会有所不同,但基本思想通常是相同的:查找/创建启动构建的脚本,并在configmake 后添加该工具的调用defconfig

config单独运行该工具以查看完整选项和有关其用法的更多信息,但以上内容通常就是您所需要的。请注意:如果您进行语法正确的无效更改(例如启用不满足依赖关系的符号),构建系统将不会抱怨并默默地忽略这些更改。如果您遇到这种情况,例如使用menuconfig来找出问题所在,因为它显示了依赖性。

构建 AOSP / 制作boot.img

构建内核后,您将拥有Image.lz4in out/.../dist(或Image.gzin out/.../private/msm-google/arch/arm64/boot)。您转到 Android 源代码,除了常见的内容 ( source build/envsetup.shlunch) 之外,您还可以将构建系统指向您构建的映像,例如export TARGET_PREBUILT_KERNEL=/path/to/Image.lz4。然后正常开始构建,例如make bootimagem droid



请注意,对于 Android 10,至少在某些情况下,您还必须复制内核模块out/.../dist,因为新内核无法加载旧内核。对于这一部分,我自己目前遇到了问题。我认为它们必须复制到device/VENDOR/DEVICE(例如google/coral-kernel),顺便说一句,您也可以将内核映像复制到那里,因为默认情况下原始的预构建映像也在那里。问题是,至少就我而言,新的内核模块毕竟没有复制到设备。