web-dev-qa-db-ja.com

Linuxカーネル `defdefconfig`は正確に何をしますか?

次のコマンドを使用して、カスタムARMベースのボードの指定されたアーキテクチャデフォルトに基づいてLinuxカーネル.configファイルを作成できます。

Arch=arm make defconfig KBUILD_DEFCONFIG=var_som_mx6_Android_defconfig

このコマンドは多かれ少なかれ./Arch/arm/configs/var_som_mx6_Android_defconfig./.configにコピーすると思いました。ただし、結果の.configファイルは正確なコピーではありません。

$ diff --unified Arch/arm/configs/var_som_mx6_Android_defconfig  .config
--- Arch/arm/configs/var_som_mx6_Android_defconfig  2017-01-20 12:10:51.891515984 -0800
+++ .config 2017-01-26 15:31:29.000000000 -0800
@@ -407,6 +407,7 @@
 CONFIG_ARM_ERRATA_751472=y
 CONFIG_ARM_ERRATA_794072=y
 CONFIG_ARM_ERRATA_761320=y
+CONFIG_ARM_ERRATA_845369=y
 # CONFIG_ARM_ERRATA_753970 is not set
 CONFIG_ARM_ERRATA_754322=y
 # CONFIG_ARM_ERRATA_754327 is not set
@@ -2683,7 +2684,6 @@
 CONFIG_AUTOFS4_FS=y
 CONFIG_Fuse_FS=y
 # CONFIG_CUSE is not set
-CONFIG_AUFS_FS=y

 #
 # Caches
@@ -2759,6 +2759,21 @@
 # CONFIG_PSTORE is not set
 # CONFIG_SYSV_FS is not set
 # CONFIG_UFS_FS is not set
+CONFIG_AUFS_FS=y
+CONFIG_AUFS_BRANCH_MAX_127=y
+# CONFIG_AUFS_BRANCH_MAX_511 is not set
+# CONFIG_AUFS_BRANCH_MAX_1023 is not set
+# CONFIG_AUFS_BRANCH_MAX_32767 is not set
+CONFIG_AUFS_SBILIST=y
+# CONFIG_AUFS_HNOTIFY is not set
+# CONFIG_AUFS_RDU is not set
+# CONFIG_AUFS_PROC_MAP is not set
+# CONFIG_AUFS_SP_IATTR is not set
+# CONFIG_AUFS_SHWH is not set
+# CONFIG_AUFS_BR_RAMFS is not set
+# CONFIG_AUFS_BR_Fuse is not set
+CONFIG_AUFS_BDEV_LOOP=y
+# CONFIG_AUFS_DEBUG is not set
 CONFIG_NETWORK_FILESYSTEMS=y
 CONFIG_NFS_FS=y
 CONFIG_NFS_V3=y

私は余分な行がどこから来ているのか理解できず、カーネル構成、メイクファイル、ビルドスクリプトの内部動作が理解しにくいことを常に見つけてきました。 .configのこれらの行がどこから来たのか、誰でも説明できますか?

22
Michael Burr

また、include/generated/autoconf.h

このヘッダーファイルは、Cソースファイルに含まれています。一方、 .configはMakefileシステム用です。

ビルドシステムは2つのファイルを生成し、一貫性を保ちます。

1
liuyang1