我在 kernel/configs/q
中找到了各种内核配置。
当我更改它们并在 kernel/msm-4.14
中运行 mm
时,内核不会重建。
在哪里编辑内核配置,以便在运行 mm
时强制重建内核?
最佳答案
内核首先与 Android 平台分开构建。然后,使用 TARGET_PREBUILT_KERNEL
环境变量将 Android 平台构建系统指向内核镜像所在的位置。
这是我通常如何配置和构建的概述。我已经为不同的供应商在 Android 9 和 10 上做到了这一点。我使用的方案在文档 here 中提到。非 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 内核,位置和详细信息可能会有所不同,但基本思想通常是相同的:查找/创建启动构建的脚本,并添加 config< 的调用
制作 defconfig
后的工具。
单独运行config
工具来查看完整选项和有关其用法的更多信息,但通常您只需要上述内容。注意:如果您进行语法正确的无效更改(例如启用不满足依赖关系的符号),构建系统不会提示并默默地忽略这些更改。如果您遇到这种情况,例如使用 menuconfig
找出问题所在,因为它显示了依赖关系。
构建 AOSP/制作 boot.img
构建内核后,out/.../dist
中将包含 Image.lz4
(或 Image.gz
> 在 out/.../private/msm-google/arch/arm64/boot
中)。您转到 Android 源代码,除了常规操作(source build/envsetup.sh
、lunch
)之外,您还可以将构建系统指向您构建的镜像,例如导出 TARGET_PREBUILT_KERNEL=/path/to/Image.lz4
。然后正常开始构建,例如make bootimage
或 m droid
。
请注意,对于 Android 10,至少在某些情况下,您还必须从 out/.../dist
复制内核模块,因为新内核无法加载旧的。有了这一部分,I am having problems myself眼下。我认为它们必须复制到 device/VENDOR/DEVICE
(例如 google/coral-kernel
),顺便说一句,您也可以将内核镜像复制到那里,因为原始的预构建默认情况下也有一个。问题是,至少在我的情况下,新的内核模块毕竟没有复制到设备。
关于linux-kernel - AOSP Android 10 中的内核配置在哪里?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63058111/