새로운 시작...

|
crosstool chain 빌드 조차 힘겹게 하는 나 자신을 보고 있자니...
한심하고 답답할 뿐이다..

실력만이 살길인데, 난 아직 갈길이 멀구나!
Trackback 0 And Comment 0

EXPORT_SYMBOL_GPL vs EXPORT_SYMBOL

|
위 두 define 문 때문에 반나절을 날렸다.
분명 커널에 built-in 으로 들어있고 /proc/kallsyms 에도 나오는 심볼인데, 
모듈을 로드하면 Unknown symbol 이라는 메시지만 찍고 모듈 로딩에 실패했다.

==========================================================================================
# grep usb_alloc_urb /proc/kallsyms 
802704b0 T usb_alloc_urb
803f6014 r __ksymtab_usb_alloc_urb
803f96cc r __kcrctab_usb_alloc_urb
80403d70 r __kstrtab_usb_alloc_urb

#insmod wireless.ko
wireless: Unknown symbol usb_alloc_urb 
wireless:  Unknown symbol usb_free_urb 
wireless: Unknown symbol usb_register_driver 
wireless: Unknown symbol usb_submit_urb 
wireless: Unknown symbol usb_deregister 
wireless: Unknown symbol usb_kill_urb
insmod: cannot insert `wireless.ko': Unknown symbol in module (-1): No  such file or directory
===========================================================================================

이유는 GPL License 때문이었다.
로딩하려는 모듈이 GPL License 가 표시되지 않았었고, 이 모듈에서 사용하는 Symbol 이
EXPORT_SYOBOL_GPL로 export 되어있었기 때문에 이 모듈은 사용할 수 가 없었던 것이다.

위 wireless.ko는 2.6.24 버전 커널에서는 문제 없이 사용되었는데, 2.6.28 에서는 위의 문제가 생겼다.
USB Subsystem 이 2.6.25 버전 부터는 GPL License 모듈에만 Symbol을 export 하도록 변경되었던 것이다.

결론은 EXPORT_SYMBOL로 export 된 symbol은 GPL License 가 아닌 모듈도 사용할 수 있지만,
EXPORT_SYMBOL_GPL로 export 된 symbol은 GPL License 가 아닌 모듈은 사용할 수가 없다.
Trackback 0 And Comment 0

Linux MODULE_LICENSE 의 의미

|
GPL 관련 정보를 알아보다 MODULE_LICENSE 의 의미를 말하는 글을 발견했다.

이글은 "How this prevents proprietary modules from being built into the Linux kernel?" 에 대한 답이다.
결론은 "It doesn't. Proprietary modules will load just fine into a linux kernel.  But the kernel will remember, and somebody can check to see if the kernel is still free." 이다.

답글 작성자는 MODULE_LICENSE()의 의미를 "Honor System" 이라고 정의하고 있다.

원글은 다음과 같다.
http://askville.amazon.com/MODULE_LICENSE-work-Linux-kernel/AnswerViewer.do?requestId=2639289

Trackback 0 And Comment 0
prev | 1 | 2 | 3 | 4 | 5 ... | 11 | next