ko 파일을 insmod 명령을 통해 커널에 동적 삽입을 시도할 때 다음과 같거나 혹은 유사한 메세지를 뱉으며 에러가 나는 경우가 있다.
-1 : unknown symbol in module
dmesg 명령을 통해 커널 로그를 확인 해보자.
모듈 삽입시 에러가 나는 원인을 어느정도 추측할 수 있을 것이다.
dmesg 에 기록된 메세지 사례
사례 1 :
Unknown symbol lockdep_init_map (err 0)
다음 조건을 만족하면 발생 :
컴파일한 모듈의 소스코드에 semaphore, mutex, spinlock 등 락 메커니즘을 사용하는 함수가 포함되어있는 경우.
커널 빌드시 CONFIG 옵션중 lock 관련 디버깅 옵션을 활성화 한 경우.(lockdep)
lockdep는 커널의 락 메커니즘이 데드락에 빠지는 지를 검사해주는 유틸인데, 빌드시 이를 활성화 한 경우, 잘 되던 모듈이 이런 오류를 내며 안되는 경우가 있다.
원인 :
non-GPL 인 경우 lockdep_init_map 함수를 호출 할 수 없게 되어 있는 듯 하다. 소스코드에 GPL 을 명시한다
MODULE_LICENSE("GPL");
'개발자의 기록 노트 > Linux' 카테고리의 다른 글
[우분투] Ubuntu 16.04 한글키보드 한글입력 방법 (8) | 2017.06.10 |
---|---|
[우분투] 컴퓨터이름 변경하기 (0) | 2013.05.15 |
[리눅스/커널] 커널에서 자주 사용되는 매크로 : likely( ) / unlikely( ) (1) | 2012.11.23 |
리눅스에서의 세마포어 (Semaphores in Linux) (0) | 2012.10.07 |
man page와 section number (0) | 2012.10.06 |
[Ubuntu 12.04] GRUB : 부트로더 환경설정 (1) | 2012.10.02 |