动态编译本机内核模块
/hello.c/
- #include <linux/module.h> /* Needed by all modules */
-
#include <linux/kernel.h> /* Needed for KERN_ALERT */
-
#include <linux/init.h>
-
static int test_init(void)
-
{
-
printk("Hello world 1.\n");
-
-
/* A non 0 return means init_module failed; module can't be loaded.*/
-
return 0;
-
}
-
-
static void test_exit()
-
{
-
printk("Goodbye world 1.\n");
-
}
-
-
module_init(test_init);
-
module_exit(test_exit);
/Makefile/
- obj-m += hello.o
-
PWD := $(shell pwd)
-
KERN_VER = $(shell uname -r)
-
KERN_DIR = /lib/modules/$(KERN_VER)/build
-
all:
-
$(MAKE) -C $(KERN_DIR) M=$(PWD) modules
-
-
clean:
-
-
rm –rf *.o *~ core .depend . *.cmd *.ko *.mod.c .tmp_versions
编译生成的内核模块可以直接加载:
insmod hello.ko
卸载模块:
rmmod hello.ko
可以通过tail /var/log/messages参看系统内核日志信息来查
看模块的加载与卸载情况。
阅读(1418) | 评论(0) | 转发(0) |