커널프로그램 짜서 .. insmod할때 버전이 안맞는데 ..
글쓴이: lunar / 작성시간: 토, 2003/02/01 - 2:43오전
ms_optical_driver.o: kernel-module version mismatch
ms_optical_driver.o was compiled for kernel version 2.4.9-9
while this kernel is version 2.4.18-14.
위와 같은 에러가 나오구요....
소스는 여기에 있는 커널 프로그래밍을 참고해서 .. 해봤습니다.
#include <linux/kernel.h> #include <linux/module.h> #if CONFIG_MODVERSIONS==1 #define MODVERSIONS #include <linux/modversions.h"> #endif int init_moudle(){ printk("Hello, world -this is the kernel speaking\n"); return 0; } void cleanup_moudle(){ printk("Short is the life of a kernel moudle\n"); }
흠.. 어케 하믄 될꺼도 같은디 ..도무지 멀겠네여..
인터넷에 뒤져도 .. 잘 찾지를 못하겠구요..
Forums:
linux/modversions.h 이 파일을 참고해 보세요.
linux/modversions.h 이 파일을 참고해 보세요.
아마도 커널 버전이 나올것입니다.
그것을 고쳐 주면 되겠죠..
그런데 고쳐주는 것은 그냥 하는 것이 아니라..
커널 컴파일하는 과정을 통해서 하는 것이 죻죠..
가능한 방법들
드라이버(모듈)은 커널과 밀접히 맞물러 동작하는 관계로, 커널소스 버전가 일치 할때 아름답게 동작하도록 만들어져 있습니다. 그래서 그러한 경고가 뜨는 것입니다.
그래서 해결 방법을 아는 한에서 제시해 보겠습니다. ( 더 많은 방법이 존재 하겠지만, 내공이 부족한 관계로 )
1) 커널 코어 덤프를 일으킬수 있지만. ( 비추천되는 방법입니다. )
insmod 시 강제 옵션이 있습니다. (외우지 못한 관계로 삐질 -.-; )
2) 커널 컴파일 된 소스가 존재 한다면 그곳을 include디렉토리의 우선으로 지정해주시면 됩니다.
ms_optical_driver.o was compiled for kernel version 2.4.9-9
-> include가 되는 소스의 버전이 2.4.9-9로 보이고
while this kernel is version 2.4.18-14.
-> 커널의 버전이 2.4.18-14라는 것을 알수 있습니다.
커널이 새로운 버전이라 소스를 2.4.18-14를 받으시면 될것 같기도 합니다.
3) 커널을 컴파일을 하시면 됩니다.
( 좀 무책임한 답변일수있지만, 보통 이것이 가장 안정적인 방법이라고 합니다. )
저는 이러한 내용을 kelp에서 도움을 얻었습니다.
4) 더 많은 방법이 있을수 있습니다. 제가 아는 한 여기까지 답변을 드립니다.
[quote]$ insmod -f hello.o[/quote]이렇
이렇게 하면 강제적으로 모듈이 추가됩니다.
에서 확인하면 되겠죠. ^^;;
버전 안맞는 디바이스 드라이버로 웹캠쪽 작업을 해봤는데...
저같은 경우는 문제 없이 잘 사용했었습니다.
버전이 틀릴 때 정확이 어떤 게 문제가 되는지 아시는 분은 답글좀
부탁해요. ^^[/code]
... Do It Now!!!
제 생각에는 아주 간단하게 해결될 수도 있을것 같아, 시도해볼만한
제 생각에는 아주 간단하게 해결될 수도 있을것 같아,
시도해볼만한 가치가 있는 방법을 올립니다.
/usr/include 디렉토리 밑에 'linux'라는 디렉토리가 있는지
확인하여, 링크가 아닌 별도의 디렉토리가 존재한다면
그 디렉토리를 다른 이름으로 바꾸거나 혹은 삭제하시고
/usr/src/linux/include/linux 디렉토리를 가리키도록
linux라는 심볼릭 링크를 생성합니다. 그런후, 다시 모듈을
컴파일하고 insmod를 수행해보시기 바랍니다.
커널 프로그래밍과 관련해서는 flyduck님의 리눅스 커널사이트
(http://linuxkernel.net)가 도움이 되실것 같습니다.
댓글 달기