歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Unix知識 >> 關於Unix >> 內核模塊編程的第一次嘗試

內核模塊編程的第一次嘗試

日期:2017/3/6 15:29:09   编辑:關於Unix
第一次編寫內核模塊程序。 萬事開頭難,內核模塊編程也不例外。 Makefile如下: [playmud@server kmod] more Makefile TARGET :=hello4 WARN :=-W -Wall -Wstrict-prototypes -Wmissing-prototypes INCLUDE := -isystem /lib/modules/`uname -r`/build/includ 第一次編寫內核模塊程序。

萬事開頭難,內核模塊編程也不例外。

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

回車以後猛然醒悟,為時已晚,所有網絡連接都斷了,只好去機房接起來顯示器,鍵盤。。。。

Copyright © Linux教程網 All Rights Reserved