2014-07-21 7 views
1

언젠가/lib /에 설치되는 것뿐만 아니라 파일 시스템에있는 커널 소스 트리에 대한 모듈을 만드는 것이 무엇을 의미합니까? 구체적으로, 나는이 두 예제들, 즉 1.2.을 보았지만 둘 다 크게 모호합니다. 두 번째 코드에는 몇 가지 코드가 있지만 코드가 실제로 무엇을하고 있는지 말할 수는 없습니다.Linux 커널 모듈을 커널 소스 트리에서 빌드 하시겠습니까?

답변

1

/lib/modules/$(shell uname -r)/build은 원본 트리를 포함해야하는 디렉터리를 나타냅니다. 보통 /usr/src에있는 폴더에 대한 심볼릭 링크입니다. 소스 트리가 설치되어 있지 않으면, 그것은 매달린 심볼릭 링크이거나 비어있는 디렉토리입니다.

uname -r은 실행중인 커널의 릴리스 문자열을 제공합니다 (시도해보십시오). 이것은 /lib/modules이라는 하위 디렉토리에 레이블을 지정하는 데 사용되며 해당 커널의 모듈이 저장됩니다. 기본적으로 커널은 다른 버전 (예 : 3.13.5 vs 3.13.4) 용으로 컴파일 된 모듈을로드하지 않으므로 모듈을 직접 작성하는 경우에는 사용하려는 모든 버전을 컴파일해야합니다 .

첫 번째 링크의 makefile은 uname -r을 사용하기 때문에 현재 실행중인 커널에서만 작동합니다. 다른 버전을 변경하지 않고 그대로 사용하려면 해당 버전으로 재부팅해야합니다. 질문자는 makefile을 수정하는 간단한 방법을 요구하여 실행중인 커널 버전뿐만 아니라 모든 커널 버전의 모듈을 컴파일하는 데 사용할 수 있습니다. 커널 모듈을 작성하는 데 필요한 두 번째 링크를 읽는 경우이 문제에 신경 쓸 필요가 없습니다.