(/proc/config.gz
から)構成を変更してカーネルを再構築しても、ファイルmake menuconfig
は更新されません。たとえば、正常に動作するBLK_DEV_IO_TRACE
を使用してカーネルを再構築しましたが、config.gz
は# CONFIG_BLK_DEV_IO_TRACE is not set
をまだ表示しています。 .config
を有効にすると、カーネルバイナリに含まれるカーネルソースのルートディレクトリにあるCONFIG_IKCONFIG
ファイルではないですか?
そしてBTW 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
です。 また、 実際の構成と*defconfig
の16個のArch/arm64/configs/
ファイルのいずれとも一致しません。config.gz
の間には185の違い(88の追加、97のドロップ)があります。最初はArch/arm64/configs/franco_mido_defconfig
を使用しました。カスタムカーネル開発者によって提供されたもの。
この質問を投稿する前にさらに調査を行うべきでしたが、何かが足りないのではないかと思いました。参考までに、問題は私のカーネルソースに固有であることがわかります。カスタムカーネル開発者は patch を適用して、古い構成を常にカーネルバイナリに含めました。したがって、これは元に戻す必要があります(もしあれば、リスクを考慮して):
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
/proc/config.gz
を生成するカーネルオプションは、IKCONFIG_PROCであり、単なるIKCONFIGではありません。また、IKCONFIG_PROCをモジュールにすることはできません。
また、kernel/configs/Android-base.config
とkernel/configs/Android-recommended.config
があることに注意してください。これらは、一部のカーネル構成設定を上書きするために使用できます。 https://lore.kernel.org/linux-arm-kernel/[email protected]/を参照)
カーネルのコンパイル手順で次のようなコマンドを使用する場合(上記のリンクのLinux-ARM-Kernelリストの投稿に記載されている例)
make Arch=arm multi_v7_defconfig Android-base.config Android-recommended.config
その後、それらのファイルは実際に使用されます。また、Android-base.config
には、CONFIG_IKCONFIG
とCONFIG_IKCONFIG_PROC
の両方をy
に設定することが含まれます。
ツールチェーンが次のようなことをしていないことを確信していますか?
make Arch=arm <oldconfig or some other config target> Android-base.config
実際にカーネルの構築を始める前に?