Skip to contentSkip to conversation

Insmod failed

DISCUSSION Michal Sojka 3 participants 3 messages Jan 7, 2003

lore
Share & tools
lore
#0 lore raw

Hi,

I'am porting driver for my USB 2.0 device to 2.5 and when I try insmod my module I get the following:

Error inserting '/lib/modules/2.5.54/misc/usb-emise.o': -1 Invalid module format

I compile my module separate of kernel tree with Makefile similar to that in Linux Device Drivers book (Rubini, Corbet). What is the right way to compile standalone modules?

module-init-tools version 0.9.7, kenrel 2.5.52,54

objdump -h /lib/modules/2.5.54/misc/usb-emise.o

/lib/modules/2.5.54/misc/usb-emise.o: file format elf32-i386

Sections:

Idx Name          Size      VMA       LMA       File off  Algn
  0 .text         00001b94  00000000  00000000  00000034  2**2

CONTENTS, ALLOC, LOAD, RELOC, READONLY, CODE
1 .data 000001c0 00000000 00000000 00001be0 2**5
CONTENTS, ALLOC, LOAD, RELOC, DATA
2 .bss 00000000 00000000 00000000 00001da0 2**2
ALLOC
3 .note 00000014 00000000 00000000 00001da0 2**0
CONTENTS, READONLY
4 .stab 00007bd8 00000000 00000000 00001db4 2**2
CONTENTS, RELOC, READONLY, DEBUGGING
5 .stabstr 0001893f 00000000 00000000 0000998c 2**0
CONTENTS, READONLY, DEBUGGING
6 .rodata.str1.32 00000aa0 00000000 00000000 000222e0 2**5
CONTENTS, ALLOC, LOAD, READONLY, DATA
7 .rodata.str1.1 00000129 00000000 00000000 00022d80 2**0
CONTENTS, ALLOC, LOAD, READONLY, DATA
8 __obsparm 00000080 00000000 00000000 00022ec0 2**5
CONTENTS, ALLOC, LOAD, DATA
9 .rodata 00000004 00000000 00000000 00022f40 2**2
CONTENTS, ALLOC, LOAD, READONLY, DATA
10 .init.text 000000c8 00000000 00000000 00022f44 2**2
CONTENTS, ALLOC, LOAD, RELOC, READONLY, CODE
11 .exit.text 00000098 00000000 00000000 0002300c 2**2
CONTENTS, ALLOC, LOAD, RELOC, READONLY, CODE
12 .comment 00000037 00000000 00000000 000230a4 2**0
CONTENTS, READONLY

Thanks
Michal Sojka

#1 lore raw
Quoted 5 lines · Michal Sojka

Hi,

I'am porting driver for my USB 2.0 device to 2.5 and when I try insmod my module I get the following:

Quoted 7 lines

Error inserting '/lib/modules/2.5.54/misc/usb-emise.o': -1 Invalid module format

I compile my module separate of kernel tree with Makefile similar to that in Linux Device Drivers book (Rubini, Corbet). What is the right way to compile standalone modules?

Kai posted the following a few weeks ago:
-----
Well, you can do

cd my_module
echo "obj-m := my_module.o" > Makefile
vi my_module.c
make -C <path/to/kernel/src> SUBDIRS=$PWD modules
-----

Let me know if this solves the problem,

Sam

#2 lore raw
In reply to Michal Sojka

| Hi,

On Tue, 7 Jan 2003, Michal Sojka wrote:

| I'am porting driver for my USB 2.0 device to 2.5 and when I try insmod
| my module I get the following:
|
| Error inserting '/lib/modules/2.5.54/misc/usb-emise.o': -1 Invalid
| module format
Quoted 1 line

From lkml archives:

Add a -DKBUILD_MODNAME="yourname" compile option to one of the files, the new loader requires a module name section. It should be only set once for each module.

In addition make sure you're using the new style module_init/module_exit macros instead of init_module/cleanup_module.

| I compile my module separate of kernel tree with Makefile similar to
| that in Linux Device Drivers book (Rubini, Corbet). What is the right
| way to compile standalone modules?
Quoted 1 line

From lkml archives:

Try to folllow this reciept [recipe] posted by Kai G.
-------------
Well, you can do

cd my_module
echo "obj-m := my_module.o" > Makefile
vi my_module.c
make -C <path/to/kernel/src> SUBDIRS=$PWD modules

That's not too bad (and basically works for 2.4 as well)
---------------

| module-init-tools version 0.9.7, kenrel 2.5.52,54
|
| objdump -h /lib/modules/2.5.54/misc/usb-emise.o
|
| /lib/modules/2.5.54/misc/usb-emise.o:     file format elf32-i386
|
| Sections:
| Idx Name          Size      VMA       LMA       File off  Algn
|    0 .text         00001b94  00000000  00000000  00000034  2**2
|                    CONTENTS, ALLOC, LOAD, RELOC, READONLY, CODE
|    1 .data         000001c0  00000000  00000000  00001be0  2**5
|                    CONTENTS, ALLOC, LOAD, RELOC, DATA
|    2 .bss          00000000  00000000  00000000  00001da0  2**2
|                    ALLOC
|    3 .note         00000014  00000000  00000000  00001da0  2**0
|                    CONTENTS, READONLY
|    4 .stab         00007bd8  00000000  00000000  00001db4  2**2
|                    CONTENTS, RELOC, READONLY, DEBUGGING
|    5 .stabstr      0001893f  00000000  00000000  0000998c  2**0
|                    CONTENTS, READONLY, DEBUGGING
|    6 .rodata.str1.32 00000aa0  00000000  00000000  000222e0  2**5
|                    CONTENTS, ALLOC, LOAD, READONLY, DATA
|    7 .rodata.str1.1 00000129  00000000  00000000  00022d80  2**0
|                    CONTENTS, ALLOC, LOAD, READONLY, DATA
|    8 __obsparm     00000080  00000000  00000000  00022ec0  2**5
|                    CONTENTS, ALLOC, LOAD, DATA
|    9 .rodata       00000004  00000000  00000000  00022f40  2**2
|                    CONTENTS, ALLOC, LOAD, READONLY, DATA
|   10 .init.text    000000c8  00000000  00000000  00022f44  2**2
|                    CONTENTS, ALLOC, LOAD, RELOC, READONLY, CODE
|   11 .exit.text    00000098  00000000  00000000  0002300c  2**2
|                    CONTENTS, ALLOC, LOAD, RELOC, READONLY, CODE
|   12 .comment      00000037  00000000  00000000  000230a4  2**0
|                    CONTENTS, READONLY

See a pattern here? :)

Signature · 1 line
~Randy