萬事開頭難,內核模塊編程也不例外。
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
回車以後猛然醒悟,為時已晚,所有網絡連接都斷了,只好去機房接起來顯示器,鍵盤。。。。