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

Linux kernel AOSP Android 10中的内核配置在哪里?,linux-kernel,android-source,Linux Kernel,Android Source,我在kernel/configs/q中找到了各种内核配置 当我修改它们并在kernel/msm-4.14中运行mm时,内核不会重建 我在哪里编辑内核配置,以便在运行mm时强制进行内核重建?内核首先独立于Android平台构建。然后,使用TARGET_prebuild_kernel环境变量,将Android平台构建系统指向内核映像所在的位置 下面是我通常如何配置和构建的概要。我已经为Android 9和10以及不同的供应商这样做了。文件中提到了我使用的方案。非谷歌内核通常不附带版本控制回购,我不知

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

当我修改它们并在kernel/msm-4.14中运行mm时,内核不会重建


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

内核首先独立于Android平台构建。然后,使用TARGET_prebuild_kernel环境变量,将Android平台构建系统指向内核映像所在的位置

下面是我通常如何配置和构建的概要。我已经为Android 9和10以及不同的供应商这样做了。文件中提到了我使用的方案。非谷歌内核通常不附带版本控制回购,我不知道你在处理什么,所以我将介绍这两个方面

配置内核 对于repo签出内核,您可以在build/build.config中进行配置。基本上,在以defconfig为基础之后,您可以使用${KERNEL\u 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签出内核,位置和细节可能会有所不同,但基本思想通常是相同的:查找/创建启动构建的脚本,并在进行defconfig之后添加对config工具的调用

自行运行配置工具以查看完整选项和有关其用法的更多信息,但通常您只需要上述内容。注意:如果您进行语法正确的无效更改,例如启用不满足依赖项的符号,则生成系统不会抱怨并默默忽略这些更改。如果您面临这种情况,例如,使用menuconfig找出问题所在,因为它显示了依赖关系

构建AOSP/Making boot.img 构建内核后,您将拥有Image.lz4 in-out/../dist或Image.gz in-out/../private/msm-google/arch/arm64/boot。转到Android源代码,除了通常的source build/envsetup.sh外,还可以将构建系统指向您构建的映像,例如导出TARGET_prebuild_KERNEL=/path/to/image.lz4。然后正常启动构建,例如制作bootimage或m droid


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

内核首先是独立于Android平台构建的。然后,使用TARGET_prebuild_kernel环境变量,将Android平台构建系统指向内核映像所在的位置

下面是我通常如何配置和构建的概要。我已经为Android 9和10以及不同的供应商这样做了。文件中提到了我使用的方案。非谷歌内核通常不附带版本控制回购,我不知道你在处理什么,所以我将介绍这两个方面

配置内核 对于repo签出内核,您可以在build/build.config中进行配置。基本上,在以defconfig为基础之后,您可以使用${KERNEL\u 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签出内核,位置和细节可能会有所不同,但基本思想通常是相同的:查找/创建启动构建的脚本,并在进行defconfig之后添加对config工具的调用

自行运行配置工具以查看完整选项和有关其用法的更多信息,但通常您只需要上述内容。注意:如果您进行语法正确的无效更改,例如启用不满足依赖项的符号,则生成系统不会抱怨并默默忽略这些更改。如果您面临这种情况,例如,使用menuconfig找出问题所在,因为它显示了依赖关系

构建AOSP/Making boot.img 构建内核后,您将拥有Image.lz4 in-out/../dist或Image.gz in-out/../private/msm-google/arch/arm64/boot。转到Android源代码,除了通常的source build/envsetup.sh外,还可以将构建系统指向您构建的映像,例如导出TARGET_prebuild_KERNEL=/path/to/image.lz4。然后正常启动构建,例如制作bootimage或m droid


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

1。如果您不更改配置,它会生成吗
什么?2.你到底是如何改变它们的?@0andriy 1。是的,在21秒内。2.我加了一行!在kernel/configs/q/android-4.9 | 14 | 19/android-base.config三个文件中的每一个文件中添加$%^&*androidbase4.X,以引发语法/构建错误,显示文件正在读取。我已经使用了特定于供应商的说明,使用午餐sdm660_64-userdebu为Android 10.cd和&source build/envsetup.sh设置系统&午餐sdm660_64-userdebug和&cd kernel/msm-4.4/&mm至少没有创建预期的输出/target/product/sdm660_64/kernel。为了成功构建内核并创建boot.img,我必须将bootimage设置为目标:cd&&source build/envsetup.sh&&午餐sdm660\u 64-userdebug&&make bootimage-j4。@Lakindu谢谢,这比45分钟快得多,但仍然比桌面内核重新编译慢得多。1。如果不改变配置,它会生成吗?2.你到底是如何改变它们的?@0andriy 1。是的,在21秒内。2.我加了一行!在kernel/configs/q/android-4.9 | 14 | 19/android-base.config三个文件中的每一个文件中添加$%^&*androidbase4.X,以引发语法/构建错误,显示文件正在读取。我已经使用了特定于供应商的说明,使用午餐sdm660_64-userdebu为Android 10.cd和&source build/envsetup.sh设置系统&午餐sdm660_64-userdebug和&cd kernel/msm-4.4/&mm至少没有创建预期的输出/target/product/sdm660_64/kernel。为了成功构建内核并创建boot.img,我必须将bootimage设置为目标:cd&&source build/envsetup.sh&&午餐sdm660\u 64-userdebug&&make bootimage-j4。@Lakindu谢谢,这比45分钟快得多,但仍然比桌面内核重新编译慢得多。谢谢,这包含了一些非常有用的信息。谢谢,这包含了一些非常有用的信息。