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?

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.


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


3

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

meld <(sort config-a) <(sort config-b)

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)

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.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.