두 개의 커널 구성 파일 (동일한 커널 소스 용)이있는 상황이 있습니다. 둘 다 내가 필요한 기능의 일부를 가지고 있습니다 (하나는 USB가 두 번째 I2C에서 올바르게 작동합니다).
menuconfig의 관점에서 두 구성 파일의 차이점에는 선택된 몇 가지 옵션 만 포함되어 있음을 알고 있습니다. (그러나 어느 것을 몰라)
그러나 구성 파일을 수동으로 비교하면 (두 개의 .config 파일간에 녹아) 차이점을 쉽게 식별 할 수 없습니다. 나는 성공하지 않고 수동으로 병합하려고했습니다. 나는 결국 성공할 것이라고 확신하지만 파일이 menuconfig에 나타나는 방식으로 파일을 비교하면 프로세스가 훨씬 고통스럽지 않을 것이라고 생각합니다.
이것이 가능합니까? 그렇다면 어떻게됩니까?
답변
scripts/diffconfig
Linux 커널 소스 트리에서 사용해보십시오 .
용법:
diffconfig config-a config-b
config-a와 관련하여 config-b 파일에서 제거, 수정 및 추가 된 행 목록을 표시합니다.
답변
커널 소스에는 스크립트가 있습니다.
scripts / kconfig / merge_config.sh
커널 설정 2 개를 인수로 사용합니다. 두 번째 커널 설정을 첫 번째 항목과 병합합니다. “# CONFIG_ is not set”과 같은 줄이더라도 두 번째 구성의 모든 것은 첫 번째 구성보다 우선합니다.
http://processors.wiki.ti.com/index.php/Quick_start_with_3.14_linux를 참조 하십시오
답변
다음을 sort
비교하기 전에 파일을 사용해보십시오 .
meld <(sort config-a) <(sort config-b)
답변
두 파일에 의해 생성 된 경우 make menuconfig
, 그들은 간단한 때문에, 같은 순서로 옵션이있을 것이다 diff
(융합을 통해 또는 당신이 좋아하는 프론트 엔드 무엇이든) 가능한 결과를 제공 할 것입니다.
주석 행을 무시하면 더 읽기 쉬운 것을 얻을 수 있습니다.
diff -I '^#' old.config new.config
어떤 이유로 파일이 같은 순서가 아닌 경우 정렬 할 수 있습니다. 이것은 관련 옵션을 멀리 떨어 뜨려 놓는 단점이 있습니다. 다시 주석을 제거하십시오. 사용하여 comm
공통의 선을 제거 할 수 있습니다.
comm -3 <(<old.config grep '^[^#]' | sort) <(<new.config grep '^[^#]' | sort)
답변
kdiff3
두 구성을 비교하는 데 사용 합니다.
누구나 .config (현재 구성) 파일을 커널 트리의 일부 기본 구성과 비교하려면 먼저 현재 구성에서 defconfig를 내 보냅니다.
make savedefconfig
그러면 다른 기본 구성 파일과 쉽게 비교할 수있는 defconfig 파일이 내보내집니다.