hello.c #include <linux/module.h> //needed by all modules #include <linux/kernel.h> //needed for KERN_ALERT #include <linux/init.h> MODULE_LICENSE("Dual BSD/GPL"); static int hello_init(void) { printk(KERN_INFO "hello, world!/n"); return 0; } static void hello_exit(void) { printk(KERN_INFO "goodbye world/n"); } module_init(hello_init); module_exit(hello_exit); Makefile文件 #MAKE=make #RM=rm #obj-m := hello.o #KERNELDIR := /lib/modules/$(shell uname -r)/build #PWD := $(shell pwd) #default: # $(MAKE) -C $(KERNELDIR) M=$(PWD) modules #clean: # $(RM) *.o *.ko *.mod.c Module.symvers obj-m += hello.o PWD := $(shell pwd) all: make -C /lib/modules/$(shell uname -r)/build M=$(PWD) modules clean: make -C /lib/modules/$(shell uname -r)/build M=$(PWD) clean 上面Makefile文件中两种形式都是可行的。 insmod hello.ko 加载内核模块文件 dmesg 查看产生的记录 rmmod hello.ko 删除内核模块文件