Comparer deux fichiers de configuration du noyau du point de vue menuconfig?

13

J'ai une situation dans laquelle j'ai deux fichiers de configuration du noyau (pour la même source de noyau). Les deux ont une partie des fonctionnalités dont j'ai besoin (d'un côté, l'USB fonctionne correctement, de l'autre le deuxième I2C).

Je sais que les différences entre les deux fichiers de configuration, du point de vue de menuconfig, ne comprennent que quelques options sélectionnées. (Mais je ne sais pas lesquels)

Cependant, lorsque les fichiers de configuration sont comparés manuellement (fusion entre deux fichiers .config), les différences ne sont pas simples à identifier. J'ai essayé de les fusionner manuellement sans succès. Je suis sûr que je réussirai finalement, mais je pense que le processus pourrait être beaucoup plus indolore si les fichiers étaient comparés de manière à apparaître dans le menu menuconfig.

Peut-on y parvenir, et si oui, comment?

TheMeaningfulEngineer
la source

Réponses:

16

Essayez d'utiliser à scripts/diffconfigpartir de l'arborescence des sources du noyau Linux.

Usage:

diffconfig config-a config-b

Affiche une liste des lignes supprimées, modifiées et ajoutées au fichier config-b par rapport à config-a.

prin
la source
6

Il y a un script dans la source du noyau;

scripts / kconfig / merge_config.sh

Il faudra 2 configurations de noyau comme arguments - il fusionnera le 2e au-dessus du premier. Tout ce qui se trouve dans la 2e configuration remplacera la première configuration - même si c'est une ligne comme "# CONFIG_ n'est pas défini"

Voir http://processors.wiki.ti.com/index.php/Quick_start_with_3.14_linux

abasterfield
la source
3

Vous pouvez essayer sortles fichiers avant de comparer:

meld <(sort config-a) <(sort config-b)
l0b0
la source
3

Si les deux fichiers sont générés par make menuconfig, ils auront les options dans le même ordre, donc un simple diff(via Meld ou n'importe quelle interface que vous aimez) donnera un résultat utilisable.

Vous pourriez obtenir quelque chose de plus lisible si vous ignorez les lignes de commentaire:

diff -I '^#' old.config new.config

Si, pour une raison quelconque, les fichiers ne sont pas dans le même ordre, vous pouvez les trier. Cela a l'inconvénient de séparer les options connexes. Encore une fois, supprimez les commentaires. Utilisez commpour supprimer les lignes communes.

comm -3 <(<old.config grep '^[^#]' | sort) <(<new.config grep '^[^#]' | sort)
Gilles 'SO- arrête d'être méchant'
la source
1

Utilisez kdiff3pour comparer deux configurations.

Si quelqu'un veut comparer le fichier .config (configuration actuelle) à une configuration par défaut de l'arborescence du noyau, exportez d'abord defconfig à partir de la configuration actuelle:

make savedefconfig

Cela exportera le fichier defconfig, qui peut être facilement comparé à tout autre fichier de configuration par défaut.

ChevalierDeBalibari
la source