为什么“/proc/config.gz”显示错误配置?

为什么“/proc/config.gz”显示错误配置?

当我使用更改的配置(来自 )重建内核时,该文件/proc/config.gz不会更新make menuconfig。例如,我重建了内核,BLK_DEV_IO_TRACE它工作正常,但config.gz仍然显示# CONFIG_BLK_DEV_IO_TRACE is not set.该.config文件不是在我们启用时包含在内核二进制文件中的内核源代码的根目录中吗CONFIG_IKCONFIG

顺便说一句,事实config.gz证明CONFIG_IKCONFIG=y确实如此CONFIG_IKCONFIG=m

我正在使用 Android NDK 独立 GCC 工具链来构建这个内核(3.18 arm64)。

笔记:

只是为了澄清,因为它引起了混乱,我确信我的新内核正在使用新配置运行。我已经启用了对默认配置的一长串更改,这些更改现在正在运行,许多用户空间程序依赖于这些配置:

CONFIG_IKCONFIG=m
CONFIG_IKCONFIG_PROC=y
CONFIG_VETH=y
CONFIG_MODULES=y
CONFIG_MODULE_UNLOAD=y
CONFIG_NFS_FS=m
CONFIG_NFS_V2=m
CONFIG_NFS_V3=m
CONFIG_NFS_V4=m
CONFIG_NFS_V4_1=y
CONFIG_NFS_V4_2=y
CONFIG_NFSD=m
CONFIG_NFSD_V3=y
CONFIG_NFSD_V4=y
CONFIG_NFSD_V4_SECURITY_LABEL=y
CONFIG_KEYS_DEBUG_PROC_KEYS=y
CONFIG_OVERLAY_FS=m
CONFIG_UTS_NS=y
CONFIG_USER_NS=y
CONFIG_PID_NS=y
CONFIG_NET_CLS_CGROUP=m
CONFIG_CGROUP_NET_CLASSID=y
CONFIG_NETFILTER_XT_MATCH_CGROUP=m
CONFIG_NETFILTER_NETLINK=m
CONFIG_ISO9660_FS=m
CONFIG_SQUASHFS=m
CONFIG_UDF_FS=m
CONFIG_UNIX_DIAG=m
CONFIG_PSTORE=y
CONFIG_FANOTIFY=y
CONFIG_FANOTIFY_ACCESS_PERMISSIONS=y
CONFIG_DEBUG_FS=y
CONFIG_FTRACE=y
CONFIG_BLK_DEV_IO_TRACE=y

config.gz显示Linux/arm64 3.18.71 Kernel Configuration当前为Linux/arm64 3.18.140 Kernel Configuration而且它*defconfigarch/arm64/configs/.实际配置和config.gz.最初我用的是arch/arm64/configs/franco_mido_defconfig;由定制内核开发人员提供的。

答案1

在发布这个问题之前我应该​​做更多的研究,但我想我可能遗漏了一些东西。作为参考,该问题表明该问题特定于我的内核源代码。定制内核开发人员应用了修补始终在内核二进制文件中包含较旧的配置。所以这应该被撤消(考虑到风险,如果有的话):

ifeq ($(CONFIG_MACH_XIAOMI_MIDO),y)
    $(obj)/config_data.gz: arch/arm64/configs/mido_defconfig FORCE
else ifeq ($(CONFIG_MACH_XIAOMI_TISSOT),y)
    $(obj)/config_data.gz: arch/arm64/configs/tissot_defconfig FORCE
else
    $(obj)/config_data.gz: $(KCONFIG_CONFIG) FORCE
endif

答案2

生成的内核选项/proc/config.gz是 IKCONFIG_PROC,而不仅仅是 IKCONFIG。并且 IKCONFIG_PROC 不能是模块。

另外,请注意有kernel/configs/android-base.configkernel/configs/android-recommended.config。这些可用于覆盖某些内核配置设置,请参阅https://lore.kernel.org/linux-arm-kernel/[电子邮件受保护]/

如果您的内核编译过程使用这样的命令(上面链接的 Linux-ARM-Kernel 列表帖子中提到的示例)

make ARCH=arm multi_v7_defconfig android-base.config android-recommended.config

那么这些文件确实正在被使用。并android-base.config包括将CONFIG_IKCONFIG和设置CONFIG_IKCONFIG_PROCy

你确定你的工具链没有做类似的事情吗

make ARCH=arm <oldconfig or some other config target> android-base.config 

在真正开始构建内核之前?

相关内容