Linux 커널 구성 옵션을 특정 모듈과 일치시킵니다.

Linux 커널 구성 옵션을 특정 모듈과 일치시킵니다.

나는 컴퓨터에서 이점을 활용할 수 있도록 다양한 구성 옵션을 활성화했습니다.새로 포함됨 wireguard모듈 입력리눅스 5.6.0-rc1.

조금 힘들었습니다. 최소한의 작업 구성이 있었고 네트워크 인터페이스를 설정하려고 할 때 받은 오류를 가이드로 사용하여 작동할 wireguard때까지 익숙하지 않은 커널 구성 옵션을 하나씩 활성화해야 했습니다 (예: wireguard옵션은 , CONFIG_IP_NF_MANGLE)입니다.

이제 가능하다면 이 프로세스를 다른 컴퓨터에 자동으로 복제하고 싶습니다. 그리고 다른 랩톱에는 상대적으로 작은 맞춤형 구성 코어가 있으므로 완전히 다른 시스템입니다.make localmodconfig~에현재의어쨌든 두 구성을 병합해야 하기 때문에 기계는 실제로 옵션이 아닙니다.

나는 무엇을 성취하고 싶은가?

lsmod나는 (예를 들어 iptable_mangle) 나열된 모듈 이름을 입력으로 사용하고 이를 활성화하는 데 관련된 커널 옵션을 반환하는 프로세스를 원합니다 (아마도 CONFIG_IP_NF_MANGLE=m이 경우에는?).

나는 열심히 노력했다

  • iptable_mangleLinux 소스 코드(복제)의 커널 모듈에 대한 grep을 사용하여 github해당 커널 옵션에 연결하는 것을 찾으려고 합니다.

  • 현재 시스템에서 실행 중인 modinfo <target module name>경우 표시되는 정보에 커널 구성 옵션이 언급되어 있기를 바랍니다.

이들 중 어느 것도 작동하지 않습니다. 두 경우 모두 출력 CONFIG_IP_NF_MANGLE에 아무 것도 언급되지 않습니다.

답변1

아하! 나는 꽤 확실한 것을 발견했다고 믿습니다.

Linux 트리 찾아보기뒤쪽에iptable_raw내 모듈 이름(예: 또는 무엇을 가지고 있는지) 을 반복적으로 구성하고 파악하면 xt_addrtype일치하는 여러 줄 중에서 항상 다음 형식 중 하나가 생성됩니다.

<whatever>/Makefile:obj-$(<RELEVANT KERNEL CONFIG OPTION>) += <module name>.o`

구체적으로 실행

grep -rE '\+\=\s*nf_defrag_ipv6'

소스 트리의 루트에서 생성됨

net/ipv6/netfilter/Makefile:obj-$(CONFIG_NF_DEFRAG_IPV6) += nf_defrag_ipv6.o

이는 이것이 CONFIG_NF_DEFRAG_IPV6활성화되었음을 알려줍니다 nf_defrag_ipv6.

여러 모듈에서 이 작업을 시도했는데 항상 에서 반환한 이 형식의 고유한 행이 있습니다 grep. 이제 이것은 스크립트하기가 매우 쉬워 보이며 대략적으로 말하면 해시를 생성합니다.

  • lsmod키로 반환된 모듈 이름
  • 커널 구성 옵션을 값과 일치시킵니다.

편집하다:

문서에 대한 한마디: 원칙적으로 위 패턴은 설명된 대로 grep으로 발견할 수 있지만 실제로 내 관심을 끌었던 것은 다음 += <object file name>에 언급된 구문 이었습니다.Kconfig 문서, 영감을 얻기 위해 정독하고 있습니다.

관련 정보