万事开头难,内核模块编程也不例外。
clearcase/" target="_blank" >cc00">Makefile如下:
[playmud@server kmod]$ more Makefile
TARGET :=hello4
WARN :=-W -Wall -Wstrict-prototypes -Wmissing-prototypes
INCLUDE := -isystem /lib/modules/`uname -r`/build/include
CFLAGS :=-c -O2 -DMODULE -D__KERNEL__ $ $
CC := gcc
SRC :=$(TARGET).c
$.o: $
$(CC) $(SRC) $(CFLAGS)
clean:
rm -rf $(TARGET).o
程序如下hello4.c:
#include <linux/module.h>
#include <linux/kernel.h>
#include <linux/init.h>
static int init_hello_4(void)
{
printk(KERN_ALERT "Hello, world 4\n");
return 0;
}
static void cleanup_hello_4(void)
{
printk(KERN_ALERT "Goodbye, world 4\n");
}
module_init(init_hello_4);
module_exit(cleanup_hello_4);
/*增加下列内容以后,安装内核模块的时候不再提示缺少License*/
MODULE_LICENSE("GPL");
MODULE_AUTHOR("Playmud"); // 内核模块作者
MODULE_DESCRIPTION("Test only!"); // 内核模块的描述
MODULE_SUPPORTED_DEVICE("testdevice");
通过命令:
/sbin/insmod hello4.o
加载,通过命令:
/sbin/lsmod
察看,通过命令:
/sbin/rmmod hello4
卸载
成功以后,一时兴奋,编译了一个阻断所有数据包的内核模块,/sbin/insmod hookall.o
回车以后猛然醒悟,为时已晚,所有网络连接都断了,只好去机房接起来显示器,键盘。。。。