Home Modulprogrammierung Modulprogrammierung Modul registriert sich mit einer Major Device Number
 

2.1 Erstes Modul auf Gericom-Laptop unter Kernel 2.6

Die Anfangsschwierigkeiten waren überwunden durch vor allem das veränderte Makefile. Der entscheidende Tip kam von dem Artikel Porting device drivers to the 2.6 kernel. Ich habe mir speziell den Abschnitt compiling external modules lokal abgespeichert.

Beim Make und nachträglichem Laden des neuen Moduls mit "insmod" erhielt ich folgenden Output:

andreas@gericom:~/Development/driver> ls
hello-2.c  hello-2.c~  hello-2.o  hello-3.c  hello.c  hello.c~  hello.o  Makefile  Makefile~
myreadme.txt  myreadme.txt~  V_1_0  V_1_2
andreas@gericom:~/Development/driver> make
make -C /lib/modules/2.6.5-7.111-default/build SUBDIRS=/home/andreas/Development/driver modules
make[1]: Entering directory `/usr/src/linux-2.6.5-7.111-obj/i386/default'
make -C ../../../linux-2.6.5-7.111 O=../linux-2.6.5-7.111-obj/i386/default modules

WARNING: Symbol version dump /usr/src/linux-2.6.5-7.111-obj/i386/default/Module.symvers is  missing,
modules will have CONFIG_MODVERSIONS disabled.

  CC [M]  /home/andreas/Development/driver/hello-3.o
  Building modules, stage 2.
  MODPOST
  CC      /home/andreas/Development/driver/hello-3.mod.o
  LD [M]  /home/andreas/Development/driver/hello-3.ko
make[1]: Leaving directory `/usr/src/linux-2.6.5-7.111-obj/i386/default'
andreas@gericom:~/Development/driver> ls
hello-2.c   hello-2.o  hello-3.ko     hello-3.mod.o  hello.c   hello.o   Makefile~     myreadme.txt~  V_1_2
hello-2.c~  hello-3.c  hello-3.mod.c  hello-3.o      hello.c~  Makefile  myreadme.txt  V_1_0
andreas@gericom:~/Development/driver> insmod hello-3.ko
bash: insmod: command not found
andreas@gericom:~/Development/driver> su
Password:
gericom:/home/andreas/Development/driver # insmod hello-3.ko
gericom:/home/andreas/Development/driver #

Da ich alles unter der graphischen Oberfläche in einem "xterminal" angestoßen habe, war nichts von meinem Modul zu sehen. Im Logfile sah man aber dann doch:

gericom:/var/log # tail -f messages
May 21 20:37:02 gericom kernel: hello_3: no version for "struct_module" found: k
                             ernel tainted.
May 21 20:37:02 gericom kernel: hello_3: unsupported module, tainting kernel.
May 21 20:37:02 gericom kernel: hello_3: module license 'unspecified' taints ker
                             nel.
May 21 20:37:02 gericom kernel: Hello, world 2
May 21 20:37:05 gericom kernel: ISO 9660 Extensions: RRIP_1991A

Der Text "Hello, world 2" stammt von dem geladenen Modul.


Copyright © Andreas Birkert
Letzte Aktualisierung am 20. Dezember 2013
Home Modulprogrammierung Modulprogrammierung Modul registriert sich mit einer Major Device Number