Exactement ce que fait le noyau Linux est " make defconfig`?
Je peux utiliser la commande suivante pour créer un noyau Linux .config
fichier basé sur une architecture spécifiée par défaut pour personnaliser un BRAS-du conseil d'administration:
ARCH=arm make defconfig KBUILD_DEFCONFIG=var_som_mx6_android_defconfig
J'ai pensé que cette commande plus ou moins des copies ./arch/arm/configs/var_som_mx6_android_defconfig
à ./.config
. Cependant, le résultant .config
fichier n'est pas exactement une copie:
$ 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
Je ne comprends pas d'où les lignes supplémentaires sont à venir, et j'ai toujours trouvé que le fonctionnement interne de la configuration du noyau, makefiles, et de construire des scripts pour être difficile à comprendre. Quelqu'un peut-il expliquer où ces lignes dans le .config
pourrait venir de la?
merci - je n'ai jamais entendu parler de ça avant.
OriginalL'auteur Michael Burr | 2017-01-26
Vous devez vous connecter pour publier un commentaire.
Motivation
La
.config
fichier n'est pas simplement copiées à partir de votredefconfig
fichier. La motivation pour le stockage dedefconfig
dans un tel format est le suivant: dansdefconfig
, nous ne pouvons spécifier des options avec les valeurs par défaut (c'est à dire les options que nous avons changé pour notre conseil d'administration). De cette façon, nous pouvons garder le petit et clair. Chaque nouvelle version du noyau amène tout un tas de nouvelles options, et de cette façon, nous n'avons pas besoin de mettre à jour notredefconfig
fichier à chaque fois que le noyau de presse. Aussi, il convient de mentionner que la construction d'un noyau de système de garde très spécifiques afin d'options dansdefconfig
fichier, il est donc préférable d'éviter de le modifier par la main. Au lieu de cela, vous devez utilisermake savedefconfig
règle.Explication simplifiée
Quand
.config
fichier est généré, le noyau du système de construction passe par tous lesKconfig
les fichiers de tous les sous-dossiers), la vérification de toutes les options dans cesKconfig
fichiers:defconfig
, système de construction met cette option pour.config
avec la valeur choisie dansdefconfig
defconfig
, système de construction met cette option pour.config
à l'aide de sa valeur par défaut, spécifié dans correspondantKconfig
Vérifier scripts/kconfig/Makefile et scripts/kconfig/conf.c fichiers pour voir comment c'est fait.
Plus précise et détaillée des
De "Kbuild: le Noyau Linux Système de construction" par Javier Martinez:
Commandes utiles
Vous pouvez utiliser la syntaxe plus simple pour
make defconfig
, comme:Voir la liste complète des defconfigs avec:
Si vous avez besoin de faire action inverse (c'est à dire créer un joli petit
defconfig
de la vaste étendue de.config
), vous pouvez utilisersavedefconfig
règle:Aussi, comme 0andriy mentionné, vous pouvez utiliser
diffconfig
script pour voir les changements d'un.config
à une autre:Donc, en bref,
make defconfig KBUILD_DEFCONFIG=var_som_mx6_android_defconfig
est le même quemake var_som_mx6_android_defconfig
, et donc, fondamentalement, vous ne voulez pas utilisermake defconfig
comme il est plus prolixe.OriginalL'auteur Sam Protsenko
Il a également générer
include/generated/autoconf.h
.Ce fichier d'en-tête est inclus par le fichier source C. D'autre part,
.config
est pour Makefile système.Système de construction de générer deux fichiers, et de les garder cohérente.
OriginalL'auteur liuyang1