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

Where is the kernel config in AOSP Android 10?

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

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

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

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

以下是我通常如何配置和构建的概述。对于 Android 9 和 10,我已经为不同的供应商这样做了。文档 here 中提到了我使用的方案。 Non-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
}

如果您没有 repo-checkout 内核,位置和细节可能会有所不同,但基本思想通常是相同的:Find/Create 启动构建的脚本,并添加调用制作 defconfig.

后的 config 工具

运行 config 工具本身可以查看完整选项和有关其用法的更多信息,但通常您只需要以上内容。当心:如果您进行 syntactically-correct 无效更改(例如,启用不满足依赖关系的符号),构建系统将不会抱怨并静默忽略这些更改。如果您遇到这种情况,例如使用 menuconfig 找出问题所在,因为它显示了依赖关系。

构建 AOSP/制作 boot.img

构建内核后,您将在 out/.../dist 中得到 Image.lz4(或 out/.../private/msm-google/arch/arm64/boot 中得到 Image.gz)。你转到你的 Android 源,除了通常的东西(source build/envsetup.shlunch)你将构建系统指向你构建的图像,例如export TARGET_PREBUILT_KERNEL=/path/to/Image.lz4。然后正常启动构建,例如make bootimagem droid.



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