/lib/modules에 대한 규칙은 무엇입니까?

/lib/modules에 대한 규칙은 무엇입니까?

커널 헤더와 상호 작용하는 프로그램을 만들고 있습니다. 사용자는 헤더 위치에 대한 경로를 제공할 수 있지만 먼저 규칙에 따라 사용자 컴퓨터에서 기존 커널 헤더를 검색할 수 있기를 원합니다. 이는 분명히 배포판과 도구에 따라 다릅니다. 기술적으로 Linux는 완전히 사용자 정의가 가능하다는 것을 알고 있지만 주류 배포판에 어떤 규칙이 적용되는지 이해하려고 노력하고 있습니다.

  1. /lib/modules/$version은 누가, 언제 만들었나요?
  2. /kernel 및 /extra 하위 디렉터리 외에 /lib/modules의 구조에 대한 지침이 있습니까?
  3. /build와 /source는 항상 /lib/modules 아래에 있어야 합니까? (둘 다?)
  4. /build와 /source가 때로는 심볼릭 링크이고 때로는 그렇지 않은 것이 허용됩니까?
  5. 제목과 소스코드가 함께 있나요? 대부분의 배포판에서는 커널 헤더 파일이나 커널 개발 패키지를 제공하는 것으로 나타났습니다. 그것은 무슨 상관이야?

답변1

  1. 일반적 make modules_install으로 배포판은 이러한 모든 모듈을 패키지로 제공합니다.
  2. 이것은 데비안/우분투처럼 보입니다. depmod모든 하위 디렉터리를 탐색하세요./lib/modules/$version
  3. 소스에서 설치된 Fedora/RHEL/CentOS 또는 Linux 커널의 경우 대답은 '예'입니다.
  4. 일반적으로 항상 심볼릭 링크입니다.
  5. 거의 없다. 모듈을 빌드하려면 커널 개발 헤더가 필요하며 대부분의 배포판에서는 커널 소스를 설치하는 옵션도 제공하지 않습니다. 이는 최종 사용자에게 별 의미가 없습니다.

바퀴를 재발명하기보다는 VirtualBox, NVIDIA 또는 VMWare에서 제공하는 커널 모듈 빌드 시스템을 살펴보는 것이 좋습니다. 수십 개의 배포판에서 완전히 테스트되고 지원됩니다.

관련 정보