google先生で探せばいくらでも出て来ますが、カーネルモジュールを作成した手順メモを書き残します。
今後syslogとかevlogの試験に使おうかな〜と思ったので、簡単だしさっくりと作りました。 :-)
file is empty.
#include <linux/kernel.h>
#include <linux/module.h>
MODULE_DESCRIPTION( "kernel module test" ); MODULE_LICENSE( "GPL" );
int init_module( void ) {
printk( KERN_INFO "hello.ko: hello!!\n" ); return 0;
}
void cleanup_module( void ) {
printk( KERN_INFO "hello.ko: good-bye!!\n" );
} }}
file is empty.
obj-m := hello.o ROOT := /usr/src/redhat/BUILD/kernel-2.6.**/linux-2.6.**.****/ PWD := $(shell pwd)default:
$(MAKE) -C $(ROOT) M=$(PWD) modules
clean:
rm -f *.o *.ko
}}
$ make make -C /usr/src/redhat/BUILD/kernel-2.6.**/linux-2.6.**.****/ M=****/src/kmod_test modules make[1]: ディレクトリ `/opt/src/BUILD/kernel-2.6.**/linux-2.6.**.****' に入ります CC [M] ****/src/kmod_test/hello.o Building modules, stage 2. MODPOST CC ****/src/kmod_test/hello.mod.o LD [M] ****/src/kmod_test/hello.ko make[1]: ディレクトリ `/opt/src/BUILD/kernel-2.6.**/linux-2.6.**.****' から出ます
$ /sbin/modinfo hello.ko filename: hello.ko license: GPL description: kernel module test srcversion: 3A05950C27B21A4D29A89D1 depends: vermagic: 2.6.**-**.*.**.el5-ZN-01.00 SMP mod_unload 686 REGPARM 4KSTACKS gcc-4.1
# /sbin/insmod hello.ko # tail /var/log/syslog : Nov 26 22:47:23 ****** kernel: hello.ko: hello!! ★
# /sbin/rmmod hello # tail /var/log/syslog : Nov 26 22:47:23 ****** kernel: hello.ko: hello!! Nov 26 22:49:06 ****** kernel: hello.ko: good-bye!! ★