Porównać dwa pliki konfiguracyjne jądra z perspektywy menuconfig?

14

Mam sytuację, w której mam dwa pliki konfiguracyjne jądra (dla tego samego źródła jądra). Oba mają część funkcjonalności, której potrzebuję (na jednej USB działa poprawnie, na drugiej I2C).

Wiem, że różnice między dwoma plikami konfiguracyjnymi, z perspektywy menuconfig, obejmują tylko kilka wybranych opcji. (Ale nie wiem które)

Jednak przy ręcznym porównywaniu plików konfiguracyjnych (łączenie dwóch plików .config) różnice nie są łatwe do zidentyfikowania. Próbowałem scalić je ręcznie bez powodzenia. Jestem pewien, że w końcu mi się to uda, ale wierzę, że proces ten może być o wiele bardziej bezbolesny, jeśli pliki zostaną porównane w sposób, w jaki pojawiają się w menuconfig.

Czy można to osiągnąć, a jeśli tak, to w jaki sposób?

TheMeaningfulEngineer
źródło

Odpowiedzi:

17

Spróbuj użyć scripts/diffconfigz drzewa źródeł jądra Linux.

Stosowanie:

diffconfig config-a config-b

Pokazuje listę linii usuniętych, zmodyfikowanych i dodanych do pliku config-b w odniesieniu do config-a.

prin
źródło
7

W źródle jądra znajduje się skrypt;

skrypty / kconfig / merge_config.sh

Jako argumenty przyjmie 2 konfiguracje jądra - połączy 2. na pierwszym. Wszystko w drugiej konfiguracji zastąpi pierwszą konfigurację - nawet jeśli jest to wiersz taki jak „# CONFIG_ nie jest ustawiony”

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

Abasterfield
źródło
4

Jeśli dwa pliki są generowane przez make menuconfig, będą miały opcje w tej samej kolejności, więc prosty diff(za pośrednictwem Melda lub innego interfejsu użytkownika) da użyteczny wynik.

Możesz uzyskać coś bardziej czytelnego, jeśli zignorujesz wiersze komentarza:

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

Jeśli z jakiegoś powodu pliki nie są w tej samej kolejności, możesz je posortować. Ma to wadę polegającą na rozróżnianiu powiązanych opcji. Ponownie usuń komentarze. Służy commdo usuwania wspólnych linii.

comm -3 <(<old.config grep '^[^#]' | sort) <(<new.config grep '^[^#]' | sort)
Gilles „SO- przestań być zły”
źródło
3

Możesz wypróbować sortpliki przed porównaniem:

meld <(sort config-a) <(sort config-b)
l0b0
źródło
1

Służy kdiff3do porównywania dwóch konfiguracji.

Jeśli ktoś chce porównać plik .config (bieżąca konfiguracja) z domyślną konfiguracją z drzewa jądra, najpierw wyeksportuj defconfig z bieżącej konfiguracji:

make savedefconfig

Spowoduje to wyeksportowanie pliku defconfig, który można łatwo porównać z dowolnym innym domyślnym plikiem konfiguracyjnym.

ChevalierDeBalibari
źródło