1. hello.cphp
1 #include <linux/module.h>
2 #include <linux/kernel.h>
3 #include <linux/init.h>
4
5 MODULE_AUTHOR("TangHuimin"); 6 MODULE_DESCRIPTION("My First Try to Kernel Module"); 7 MODULE_LICENSE("GPL"); 8
9 static int hello_init(void) 10 { 11 printk(KERN_ALERT "Hello World Enter\n"); 12 return 0; 13 } 14
15 module_init(hello_init); 16
17 static void hello_exit(void) 18 { 19 printk(KERN_ALERT "Hello World Exit\n"); 20 } 21
22 module_exit(hello_exit);
2. Makefilehtml
obj-m += hello.o CURRENT_PATH:=$(shell pwd) LINUX_KERNEL:=$(shell uname -r) LINUX_KERNEL_PATH:=/usr/src/kernels/$(LINUX_KERNEL) all: make -C $(LINUX_KERNEL_PATH) M=$(CURRENT_PATH) modules clean: make -C $(LINUX_KERNEL_PATH) M=$(CURRENT_PATH) clean
3. make //编译,生成hello.kolinux
4. insmod hello.ko //加载hello模块,会打印“Hello World Enter”shell
lsmod | grep hello //lsmod打印全部的内核模块,有显示"hello",代表hello模块已被加载centos
rmmod hello.ko //卸载hello模块,会打印"Hello World Exit"app
lsmod | grep hello //不显示"hello",代表hello模块已被卸载ui
注:spa
对于CentOS系统,/usr/src/kernels/xxx(内核版本)/ 目录为空,致使编译内核模块失败。.net