「/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/[Eメール保護]/

カーネルコンパイルプロセスでこのようなコマンドを使用する場合(上記の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 

実際にカーネルビルドを始める前に?

関連情報