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

标签 linux-kernel android-source

我在 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.shlunch)之外,您还可以将构建系统指向您构建的镜像,例如导出 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),顺便说一句,您也可以将内核镜像复制到那里,因为原始的预构建默认情况下也有一个。问题是,至少在我的情况下,新的内核模块毕竟没有复制到设备。

关于linux-kernel - AOSP Android 10 中的内核配置在哪里?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63058111/

相关文章:

c - 如何确保函数在内核模块中运行?

linux - 在不使用 ioremap 或 mmap 的情况下写入 linux 内核中的可缓存物理地址

java - 如何将 Android 应用构建为系统服务

Android 只能使用 make 版本 3.81 构建

android - 将供应商服务添加到 ServiceManager with android treble architecture[SELinux policy]

android - 在哪里放置 .so 文件,以便它包含在最终构建中

android - 在 Mac(优胜美地及更高版本)上运行 AOSP 构建

linux-kernel - 内核哎呀哎呀 : 80000005 on arm embedded system

java - Android线程如何映射到内核线程?

c - 在字符设备驱动程序中,打印语句在读取方法中执行无限时间