커널 헤더와 상호 작용하는 프로그램을 만들고 있습니다. 사용자는 헤더 위치에 대한 경로를 제공할 수 있지만 먼저 규칙에 따라 사용자 컴퓨터에서 기존 커널 헤더를 검색할 수 있기를 원합니다. 이는 분명히 배포판과 도구에 따라 다릅니다. 기술적으로 Linux는 완전히 사용자 정의가 가능하다는 것을 알고 있지만 주류 배포판에 어떤 규칙이 적용되는지 이해하려고 노력하고 있습니다.
- /lib/modules/$version은 누가, 언제 만들었나요?
- /kernel 및 /extra 하위 디렉터리 외에 /lib/modules의 구조에 대한 지침이 있습니까?
- /build와 /source는 항상 /lib/modules 아래에 있어야 합니까? (둘 다?)
- /build와 /source가 때로는 심볼릭 링크이고 때로는 그렇지 않은 것이 허용됩니까?
- 제목과 소스코드가 함께 있나요? 대부분의 배포판에서는 커널 헤더 파일이나 커널 개발 패키지를 제공하는 것으로 나타났습니다. 그것은 무슨 상관이야?
답변1
- 일반적
make modules_install
으로 배포판은 이러한 모든 모듈을 패키지로 제공합니다. - 이것은 데비안/우분투처럼 보입니다.
depmod
모든 하위 디렉터리를 탐색하세요./lib/modules/$version
- 소스에서 설치된 Fedora/RHEL/CentOS 또는 Linux 커널의 경우 대답은 '예'입니다.
- 일반적으로 항상 심볼릭 링크입니다.
- 거의 없다. 모듈을 빌드하려면 커널 개발 헤더가 필요하며 대부분의 배포판에서는 커널 소스를 설치하는 옵션도 제공하지 않습니다. 이는 최종 사용자에게 별 의미가 없습니다.
바퀴를 재발명하기보다는 VirtualBox, NVIDIA 또는 VMWare에서 제공하는 커널 모듈 빌드 시스템을 살펴보는 것이 좋습니다. 수십 개의 배포판에서 완전히 테스트되고 지원됩니다.