커널프로그램 짜서 .. insmod할때 버전이 안맞는데 ..

lunar의 이미지

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

흠.. 어케 하믄 될꺼도 같은디 ..도무지 멀겠네여..
인터넷에 뒤져도 .. 잘 찾지를 못하겠구요..

larycho의 이미지

linux/modversions.h 이 파일을 참고해 보세요.
아마도 커널 버전이 나올것입니다.
그것을 고쳐 주면 되겠죠..
그런데 고쳐주는 것은 그냥 하는 것이 아니라..
커널 컴파일하는 과정을 통해서 하는 것이 죻죠..

febace의 이미지

드라이버(모듈)은 커널과 밀접히 맞물러 동작하는 관계로, 커널소스 버전가 일치 할때 아름답게 동작하도록 만들어져 있습니다. 그래서 그러한 경고가 뜨는 것입니다.

그래서 해결 방법을 아는 한에서 제시해 보겠습니다. ( 더 많은 방법이 존재 하겠지만, 내공이 부족한 관계로 )

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) 더 많은 방법이 있을수 있습니다. 제가 아는 한 여기까지 답변을 드립니다.

eyefree의 이미지

Quote:
$ insmod -f hello.o

이렇게 하면 강제적으로 모듈이 추가됩니다.

Quote:
$ lsmod

에서 확인하면 되겠죠. ^^;;

버전 안맞는 디바이스 드라이버로 웹캠쪽 작업을 해봤는데...

저같은 경우는 문제 없이 잘 사용했었습니다.

버전이 틀릴 때 정확이 어떤 게 문제가 되는지 아시는 분은 답글좀

부탁해요. ^^[/code]

... Do It Now!!!

thkhyme의 이미지

제 생각에는 아주 간단하게 해결될 수도 있을것 같아,
시도해볼만한 가치가 있는 방법을 올립니다.
/usr/include 디렉토리 밑에 'linux'라는 디렉토리가 있는지
확인하여, 링크가 아닌 별도의 디렉토리가 존재한다면
그 디렉토리를 다른 이름으로 바꾸거나 혹은 삭제하시고
/usr/src/linux/include/linux 디렉토리를 가리키도록
linux라는 심볼릭 링크를 생성합니다. 그런후, 다시 모듈을
컴파일하고 insmod를 수행해보시기 바랍니다.
커널 프로그래밍과 관련해서는 flyduck님의 리눅스 커널사이트
(http://linuxkernel.net)가 도움이 되실것 같습니다.

댓글 달기

Filtered HTML

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

BBCode

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param>
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

Textile

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • You can use Textile markup to format text.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Markdown

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • Quick Tips:
    • Two or more spaces at a line's end = Line break
    • Double returns = Paragraph
    • *Single asterisks* or _single underscores_ = Emphasis
    • **Double** or __double__ = Strong
    • This is [a link](http://the.link.example.com "The optional title text")
    For complete details on the Markdown syntax, see the Markdown documentation and Markdown Extra documentation for tables, footnotes, and more.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Plain text

  • HTML 태그를 사용할 수 없습니다.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 줄과 단락은 자동으로 분리됩니다.
댓글 첨부 파일
이 댓글에 이미지나 파일을 업로드 합니다.
파일 크기는 8 MB보다 작아야 합니다.
허용할 파일 형식: txt pdf doc xls gif jpg jpeg mp3 png rar zip.
CAPTCHA
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.