모듈 insert시에 나는 에러입니다.

swunk의 이미지

남이 짜논 커널 모듈을 컴파일 해서 로딩하려고 하니 아래와 같은 에러메시지가 출력되면서 로딩이 안되는군요...
어떤 문제가 있는건가요?
제가 사용하는 커널 버전은 2.4.20 입니다.

[root@superman kernel_thread]# insmod thread_mod.o
thread_mod.o: unresolved symbol kernel_flag_cacheline
thread_mod.o:
Hint: You are trying to load a module without a GPL compatible license
      and it has unresolved symbols.  The module may be trying to access
      GPLONLY symbols but the problem is more likely to be a coding or
      user error.  Contact the module supplier for assistance, only they
      can help you.

답변 부탁드립니다.

kooya의 이미지

모듈 소스에 한줄을 추가해 줘야 할듯 합니다.

MODULE_LICENSE("GPL");

이런 코드일듯..

greedy 알고리즘

지나가는새의 이미지

extern spinlock_cacheline_t kernel_flag_cacheline;

해주어야 하지 않을까요?

Fever Pitch!

swunk의 이미지

일단 위의분 말씀대로 MODULE_LICENSE("GPL"); 로 라이센스 문제는 해결했습니다만...

[root@superman kernel_thread]# insmod thread_mod.o
thread_mod.o: unresolved symbol kernel_flag_cacheline

문제는 여전히 남는군요...

해당 변수는 모듈 소스 쪽에서 선언한 변수는 아니고 커널쪽의 파일들을 인클루드 하는거 같은데...

이와 같은 경우 어떻게 해결해야 하나요?

ibanez1383의 이미지

~/kernel/ksyms.c 에다가
kernel_flag_cacheline 요놈을
EXPORT_SYMBOL() 하고
커널컴파일 뒤에 해보시면 되지 않을까 싶은데요.