Chinaunix首页 | 论坛 | 博客
  • 博客访问: 15515576
  • 博文数量: 112
  • 博客积分: 11195
  • 博客等级: 上将
  • 技术积分: 1989
  • 用 户 组: 普通用户
  • 注册时间: 2005-06-20 11:04
文章分类

全部博文(112)

文章存档

2013年(2)

2012年(27)

2011年(6)

2010年(11)

2009年(6)

2007年(7)

2006年(23)

2005年(30)

分类: LINUX

2005-07-13 11:39:51

第一次编写内核模块程序。

万事开头难,内核模块编程也不例外。

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__ ${WARN} ${INCLUDE}
CC      := gcc


SRC     :=$(TARGET).c
${TARGET}.o: ${SRC}
        $(CC)  $(SRC) $(CFLAGS)

clean:
        rm -rf $(TARGET).o

程序如下hello4.c:

#include
#include
#include

static int init_hello_4(void)
{
   printk(KERN_ALERT "Hello, world 4 ");
   return 0;
}


static void cleanup_hello_4(void)
{
   printk(KERN_ALERT "Goodbye, world 4 ");
}


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

回车以后猛然醒悟,为时已晚,所有网络连接都断了,只好去机房接起来显示器,键盘。。。。

阅读(116409) | 评论(13) | 转发(0) |
0

上一篇:无聊

下一篇:各种媒体在线播放代码

给主人留下些什么吧!~~

playmud2011-11-04 02:03:47

lthyxy: 尼玛.你6年前就玩这玩意了......
内核变化太快了,压力很大。

lthyxy2011-10-27 12:20:47

尼玛.你6年前就玩这玩意了.

changzhiwin2011-04-16 21:45:59

mark 一下