Pass a long time, then i must to say i could not remembered what i have done for a linux's introduction program(sample kernel module) at the beginning of this term, so tonight, i want to recall the process for linux kernel Module about "hello altercrazy".
The source code as follows:
[root@localhost hello-kernel]# pwd
/home/polar/Desktop/PolarLittleTest/hello-kernel
[root@localhost hello-kernel]# ll
总计 12
-rw-r--r-- 1 root root 266 09-21 08:57 \
-rw-rw-r-- 1 polar polar 470 11-04 22:35 hello.c
-rw-rw-r-- 1 polar polar 265 11-04 21:54 Makefile
#include<linux/init.h>
#include<linux/module.h>
MODULE_LICENSE("Dual BSD/GPL");
static int hello_init(void)
{
//printk(KERN_ALERT "Hello altercrazy!\n");
printk("<1>hello altercrazy!\n");
return 0;
}
static void hello_exit(void)
{
//printk(KERN_ALERT "Goodbye, kernel\n");
printk("<1>goodbye, kernel\n");
}
module_init(hello_init);
module_exit(hello_exit);
Makefile
ifneq ($(KERNELRELEASE),)
obj-m := -DEXPORT_SYMTAB
obj-m := hello.o
else
#YourKernelDir
KERNELDIR ?= /usr/src/kernels/2.6.18-164.el5-i686
PWD := $(shell pwd)
default:
$(MAKE) -C $(KERNELDIR) M=$(PWD) modules
clean:
rm *.o *.mod.c *.ko Module.*
endif
[root@localhost hello-kernel]# make
make -C /usr/src/kernels/2.6.18-164.el5-i686 M=/home/polar/Desktop/PolarLittleTest/hello-kernel modules
make[1]: Entering directory `/usr/src/kernels/2.6.18-164.el5-i686'
CC [M] /home/polar/Desktop/PolarLittleTest/hello-kernel/hello.o
Building modules, stage 2.
MODPOST
CC /home/polar/Desktop/PolarLittleTest/hello-kernel/hello.mod.o
LD [M] /home/polar/Desktop/PolarLittleTest/hello-kernel/hello.ko
make[1]: Leaving directory `/usr/src/kernels/2.6.18-164.el5-i686'
[root@localhost hello-kernel]#
[root@localhost hello-kernel]# ls
\ hello.ko hello.mod.o Makefile Module.symvers
hello.c hello.mod.c hello.o Module.markers
[root@localhost hello-kernel]# insmod hello.ko
[root@localhost hello-kernel]#
[root@localhost hello-kernel]# tail /var/log/messages
[root@localhost hello-kernel]# rmmod hello.ko
[root@localhost hello-kernel]# tail /var/log/messages
while, if hello.c as follow
=================================================================================================================================
#include<linux/init.h>
#include<linux/module.h>
MODULE_LICENSE("Dual BSD/GPL");
static int hello_init(void)
{
printk("<0>hello altercrazy!\n");
return 0;
}
static void hello_exit(void)
{
printk("<0>goodbye, kernel\n");
}
module_init(hello_init);
module_exit(hello_exit);
then
[root@localhost hello-kernel]# make
o
[root@localhost hello-kernel]# insmod hello.ko
[root@localhost hello-kernel]#
Message from syslogd@ at Sun Nov 4 22:35:37 2012 ...
localhost kernel: hello altercrazy!
[root@localhost hello-kernel]# rmmod hello.ko
[root@localhost hello-kernel]#
Message from syslogd@ at Sun Nov 4 22:37:46 2012 ...
localhost kernel: goodbye, kernel
and more important thing is
[root@localhost hello-kernel]# ls
\ hello.ko hello.mod.o Makefile Module.symvers
hello.c hello.mod.c hello.o Module.markers
[root@localhost hello-kernel]# make clean
rm *.o *.mod.c *.ko Module.*
[root@localhost hello-kernel]# ll
总计 12
-rw-r--r-- 1 root root 266 09-21 08:57 \
-rw-rw-r-- 1 polar polar 470 11-04 22:35 hello.c
-rw-rw-r-- 1 polar polar 265 11-04 21:54 Makefile
[root@localhost hello-kernel]#
=================================================================================================================================