"/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?.configCONFIG_IKCONFIG

그건 그렇고, 그것은 사실로 config.gz밝혀졌습니다 .CONFIG_IKCONFIG=yCONFIG_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.gzIKCONFIG뿐만 아니라 IKCONFIG_PROC입니다. 그리고 IKCONFIG_PROC는 모듈이 될 수 없습니다.

또한 kernel/configs/android-base.config 및 가 있다는 점에 유의하세요 kernel/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_IKCONFIGCONFIG_IKCONFIG_PROCy

당신의 툴체인이 비슷한 일을 하고 있지 않은 것이 확실합니까?

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

실제로 커널 빌드를 시작하기 전에?

관련 정보