Zwei Kernel-Konfigurationsdateien aus der Perspektive menuconfig vergleichen?

12

Ich habe eine Situation, in der ich zwei Kernel-Konfigurationsdateien habe (für dieselbe Kernel-Quelle). Beide haben einen Teil der Funktionalität, die ich brauche (auf einem funktioniert USB korrekt, auf dem anderen der zweite I2C).

Ich weiß, dass die Unterschiede zwischen den beiden Konfigurationsdateien aus der Sicht von menuconfig nur einige ausgewählte Optionen umfassen. (Aber ich weiß nicht welche)

Wenn die Konfigurationsdateien jedoch manuell verglichen werden (Verschmelzen zwischen zwei .config-Dateien), sind die Unterschiede nicht einfach zu identifizieren. Ich habe versucht, sie manuell zusammenzuführen, ohne Erfolg. Ich bin mir sicher, dass es mir irgendwann gelingen wird, aber ich glaube, dass der Prozess viel schmerzloser sein könnte, wenn die Dateien so verglichen würden, wie sie in der Menükonfiguration angezeigt werden.

Kann dies erreicht werden und wenn ja, wie?

TheMeaningfulEngineer
quelle

Antworten:

16

Versuchen Sie es mit scripts/diffconfigdem Linux-Kernel-Quellbaum.

Verwendung:

diffconfig config-a config-b

Zeigt eine Liste der Zeilen an, die in Bezug auf config-a entfernt, geändert und zur Datei config-b hinzugefügt wurden.

prin
quelle
6

In der Kernelquelle befindet sich ein Skript.

scripts / kconfig / merge_config.sh

Es werden 2 Kernel-Konfigurationen als Argumente verwendet - es wird die zweite über die erste zusammengeführt. Alles in der 2. Konfiguration überschreibt die erste Konfiguration - auch wenn es sich um eine Zeile wie "# CONFIG_ is not set" handelt.

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

Abasterfield
quelle
3

Sie können versuchen, sortdie Dateien vor dem Vergleich zu testen:

meld <(sort config-a) <(sort config-b)
l0b0
quelle
3

Wenn die beiden Dateien von generiert werden make menuconfig, haben sie die Optionen in derselben Reihenfolge, sodass ein einfaches diff(über Meld oder ein beliebiges Frontend) ein brauchbares Ergebnis liefert.

Wenn Sie Kommentarzeilen ignorieren, erhalten Sie möglicherweise etwas Lesbareres:

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

Wenn die Dateien aus irgendeinem Grund nicht in derselben Reihenfolge vorliegen, können Sie sie sortieren. Dies hat den Nachteil, dass verwandte Optionen weit auseinander liegen. Entfernen Sie erneut Kommentare. Verwenden Sie commdiese Option, um die gemeinsamen Linien zu entfernen.

comm -3 <(<old.config grep '^[^#]' | sort) <(<new.config grep '^[^#]' | sort)
Gilles 'SO - hör auf böse zu sein'
quelle
1

Verwenden kdiff3 diese Option, um zwei Konfigurationen zu vergleichen.

Wenn jemand die .config-Datei (aktuelle Konfiguration) mit einer Standardkonfiguration aus dem Kernelbaum vergleichen möchte, exportieren Sie zuerst defconfig aus der aktuellen Konfiguration:

make savedefconfig

Dadurch wird die defconfig-Datei exportiert, die leicht mit jeder anderen Standardkonfigurationsdatei verglichen werden kann.

ChevalierDeBalibari
quelle