커널을 컴파일할 때 어떤 커널 소스 파일이 사용되었는지 확인

커널을 컴파일할 때 어떤 커널 소스 파일이 사용되었는지 확인

저는 특정 하드웨어용 Linux 커널을 컴파일하고 있으며 실제로 필요한 드라이버/옵션만 선택하고 있습니다. 이는 가능한 한 많은 하드웨어 구성과 호환되도록 거의 모든 것을 컴파일하는 일반적인 배포 커널과는 완전히 대조적입니다.

내 커널의 경우 전체 커널 코드의 1%만 사용한다고 생각합니다(크기 추정치).

커널을 빌드할 때 실제로 사용하는 커널 소스의 파일을 알아낼 수 있는 방법이 있습니까?

이것은 학문적인 질문이 아닙니다. 내가 커널 3.18.1을 컴파일했다고 가정해 보겠습니다. 이제 보안 업데이트가 등장하여 3.18.2가 출시되었습니다. 나는 이미 내 안에 있어요다른 문제버전 간에 변경된 파일을 찾는 방법. 사용 중인 파일이 변경되었는지 알게 되면 커널을 새 버전으로 다시 컴파일하겠습니다. 반면에 변경 사항이 사용하지 않는 파일에만 영향을 미치는 경우 현재 커널 버전을 유지할 수 있습니다.

답변1

내 의견을 답변으로 정리:

  1. 쉘에서 다음 명령을 실행하십시오. 쉘 스크립트를 만들거나 이 -d옵션을 사용하여 악마화할 수 있습니다.

    inotifywait -m -r -e open --format '%f' /kernel_sources/directory/in_use/ -o /home/user/kernel_build.log
    
  2. 다른 쉘에서 실행make

  3. 로그 파일에는 /home/user/kernel_build.log빌드 프로세스 중에 열린(읽기 작업) 파일 목록이 포함됩니다.

관련 정보