menuconfig 관점에서 두 개의 커널 구성 파일을 비교하시겠습니까?

menuconfig 관점에서 두 개의 커널 구성 파일을 비교하시겠습니까?

동일한 커널 소스에 대해 두 개의 커널 프로필이 있는 상황이 있습니다. 둘 다 내가 필요한 기능 중 일부를 갖추고 있습니다(하나는 USB가 잘 작동하고 다른 하나는 두 번째 I2C).

menuconfig 관점에서 볼 때 두 구성 파일의 차이점에는 선택된 몇 가지 옵션만 포함된다는 것을 알고 있습니다. (근데 어느쪽인지는 모르겠음)

그러나 구성 파일(두 .config 파일 간의 융합)을 수동으로 비교할 때는 차이점을 쉽게 식별할 수 없습니다. 나는 성공하지 못한 채 수동으로 병합을 시도했습니다. 결국 성공할 것이라고 확신하지만 메뉴 구성에 나타나는 방식으로 파일을 비교하면 프로세스가 더 쉬울 것이라고 믿습니다.

이것이 가능한가? 가능하다면 어떻게 달성할 수 있나요?

답변1

사용해 보세요scripts/diffconfigLinux 커널 소스 트리에서.

용법:

diffconfig config-a config-b

config-a와 관련하여 config-b 파일에 삭제, 수정 및 추가된 행 목록을 표시합니다.

답변2

커널 소스 코드에 스크립트가 있습니다.

스크립트/kconfig/merge_config.sh

2개의 커널 구성을 매개변수로 사용합니다. 첫 번째 커널 구성 위에 두 번째 커널 구성을 병합합니다. 두 번째 구성의 모든 항목은 첫 번째 구성을 재정의합니다. "# CONFIG_가 설정되지 않았습니다"와 같은 줄인 경우에도 마찬가지입니다.

바라보다http://processors.wiki.ti.com/index.php/Quick_start_with_3.14_linux

답변3

두 파일이 모두 에서 생성된 경우 make menuconfig옵션 순서가 동일하므로 간단한 diff(Meld 또는 원하는 프런트엔드를 통해) 사용 가능한 결과를 얻을 수 있습니다.

주석 처리된 줄을 무시하면 더 읽기 쉬운 내용을 얻을 수 있습니다.

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

어떤 이유로 파일의 순서가 다른 경우 정렬할 수 있습니다. 이것의 단점은 관련 옵션이 멀리 떨어져 있다는 것입니다. 또 댓글을 삭제하세요. 사용comm공통선을 제거하십시오.

comm -3 <(<old.config grep '^[^#]' | sort) <(<new.config grep '^[^#]' | sort)

답변4

두 구성을 비교하는 데 사용됩니다 kdiff3.

.config(현재 구성) 파일을 커널 트리의 일부 기본 구성과 비교하려는 경우 먼저 현재 구성에서 defconfig를 내보내세요.

make savedefconfig

그러면 다른 기본 구성 파일과 쉽게 비교할 수 있는 defconfig 파일이 내보내집니다.

관련 정보