insmod로 모듈 올릴때 오류납니다. 아시는분 답변좀 주세요

et3569의 이미지

간단한 hello.c 만들고 컴파일까지는 됐는데

# insmod hello.o

insmod error inserting 'hello.o' -1 Invalid module format

모듈 올릴려니깐 이런 에러가 나네요 고수님들 리플 부탁드립니다.

girneter의 이미지

hello.c 는 간단하게
printk 함수를 썼을거로 보이는데

그래도 소스좀 보여주시고
어떻게 컴파일 하셨는지 좀 알려주세요
그래야 도움 드리기가 수월할듯 보입니다

개념없는 초딩들은 좋은 말로 할때 DC나 웃대가서 놀아라. 응?

seungogi의 이미지

kernel version이 아마 2.6 대의 것이라서 그렇습니다.
배포본은 무엇을 쓰시는지요?
fedora 3를 쓰시나요? kernel version은요?
kernel version이 2.6 이상이라면
다음과 같이 Makefile을 작성하세요.
그리고 간단히 make라고 하면 hello.ko라는 모듈이 생성됩니다.
2.6이상에서는 모듈의 확장명이 .ko입니다.

KERNELDIR = /lib/modules/`uname -r`/build

MODNAME = hello

CFLAGS = -nostdinc -iwithprefix include -D__KERNEL__ -I$(KERNELDIR)/include \
-Wall -Wstrict-prototypes -Wno-trigraphs -fno-strict-aliasing -fno-common \
-pipe -msoft-float -mpreferred-stack-boundary=2 -march=pentium4 \
-I$(KERNELDIR)/include/asm-i386/mach-default -O2 -fomit-frame-pointer \
-Wdeclaration-after-statement  -DMODULE -DKBUILD_BASENAME=$(MODNAME) \
-DKBUILD_MODNAME=$(MODNAME)

ifdef CONFIG_SMP
CFLAGS += -D__SMP__ -DSMP
endif

all: $(MODNAME).ko

$(MODNAME).ko: $(MODNAME).o $(MODNAME).mod.o
        $(LD) -m elf_i386 -r -o $(MODNAME).ko $(MODNAME).o $(MODNAME).mod.o

$(MODNAME).o:
        $(CC) -Wp,-MD,$(MODNAME).o.d $(CFLAGS) -c -o $(MODNAME).o $(MODNAME).c

$(MODNAME).mod.o: $(MODNAME).mod.c
        $(CC) -Wp,-MD,$(MODNAME).mod.o.d $(CFLAGS) -c -o $(MODNAME).mod.o $(MODNAME).mod.c

$(MODNAME).mod.c:
        $(KERNELDIR)/scripts/mod/modpost $(MODNAME).o

clean:
        rm -f *.o *.d *.mod.* *.ko
et3569의 이미지

레드헷9 를 2.6.11로 업글했습니다. 거의 완벽하게요

#make

Makefile19 *** missing separator. 멈춤.


왜 hello.ko 파일이 안 만들어지는걸까요
Makefile 은 토시하나 안 틀리고 똑같이 했거든요
리플 좀 부탁드립니다. ^^;

et3569의 이미지

obj-m = hello.o

KDIR =/lib/modules/$(shell uname -r)/build
PWD =$(shell pwd)

default
$(MAKE) -C $(KDIR) SUBDIR=$(PWD) modules
clean
rm -rf *.ko
rm -rf *.mod*
rm -rf .*.cmd
rm -rf *.o
이렇게 Makefile 만들었구요 make 실행하면요
Makefile9 *** missing separator. 멈춤.
이런게 자꾸 뜹니다. 뭐 때매 뜨는지 도대체 알수가 없네요
답변 꼭 좀 부탁드립니다.

seungogi의 이미지

Quote:
obj-m := hello.o

KDIR :=/lib/modules/$(shell uname -r)/build
PWD :=$(shell pwd)

default:
$(MAKE) -C $(KDIR) SUBDIR=$(PWD) modules
clean:
rm -rf *.ko
rm -rf *.mod*
rm -rf .*.cmd
rm -rf *.o obj-m := hello.o

obj-m :"탭추가"= hello.o

KDIR :"탭추가"=/lib/modules/$(shell uname -r)/build
PWD :"탭추가"=$(shell pwd)

default:
"탭추가"$(MAKE) -C $(KDIR) SUBDIR=$(PWD) modules
clean:
"탭추가"rm -rf *.ko
"탭추가"rm -rf *.mod*
"탭추가"rm -rf .*.cmd
"탭추가"rm -rf *.o

"탭추가" 라고 쓴부분에서 탭을 한번씩 눌러주세요..

et3569의 이미지

제가 해결한 부분은 일단 아래 소스입니다.
#include <linux/kernel.h>
#include <linux/module.h>
#include <linux/moduleparam.h> /* 이부분에서 2.6에선 꼭 넣어줘야
하는 헤더파일이라네요 */
int init_module() {
printk("Hello Module!! I'm in Kernel\n");
return 0;
}

void cleanup_module(void) {
printk("Bye Module!!\n");
}

Makefile 없이 걍 아래 부분으로도 충분히 컴파일이 되었습니다.

#make -C /usr/src/linux-$(uname -r) SUBDIRS=$PWD modules

2.6에서 모듈 컴파일 모두들 성공하시길 ^~^

소맛라면의 이미지

위와 같이 컴파일을 했는데 아래 와 같이 메시지가 출력 됐습니다.

The present kernel configuration has modules disabled.
Type 'make config' and enable loadable module support
Then build a kernel with module support enabled.

라고 나옵니다..커널을 재 컴파일 해아 합니까???
config의 어느부분을 건드려야 하는지 좀 가르쳐주세요 ^^
부탁드립니다.

무엇을 위해 사는가..

xfree의 이미지

커널 소스로 가셔서 make xconfig 하신후

나오는 메뉴중에 Loadable module support 라는 항목이 있을겁니다.

거기서 세부메뉴중에 Enable loadable module support를 체크해서

넣어주세요.. 이부분이 빠진듯 합니다. 그리고 커널 컴파일하시구..

새커널로 부팅해 주세요.

댓글 달기

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
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.