제임스딘딘의
Tech & Life

개발자의 기록 노트/Linux

[모듈 삽입 에러] unknown symbol in module

제임스-딘딘 2012. 10. 26. 05:21

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");