hello.c
#include<linux/module.h> #include<linux/init.h> #include<linux/kernel.h> int init_module(){ printk("<1>hello world! "); return 0; } void cleanup_module(){ printk("<1>godbye"); } MODULE_LICENSE("GPL");
Makefile
linux_kernel=$(shell uname -r) linux_kernel_path=/usr/src/linux-headers-$(linux_kernel) curr_path=$(shell pwd) obj-m += hello.o all: make -C $(linux_kernel_path) M=$(curr_path) modules clean: make -C $(linux_kernel_path) M=$(curr_path) clean
root下执行make后
make -C /usr/src/linux-headers-3.13.0-67-generic M=/home/hugh/myfs/ws modules make[1]: Entering directory `/usr/src/linux-headers-3.13.0-67-generic' Building modules, stage 2. MODPOST 1 modules make[1]: Leaving directory `/usr/src/linux-headers-3.13.0-67-generic'
插入模块
insmod hello.ko
卸载模块
rmmod hello
dmesg查看日志
…… [113392.319719] hello: module verification failed: signature and/or required key missing - tainting kernel [113392.321763] hello world! [113561.149510] <1>hello world! [113487.425871] godbye [113571.386171] <1>godbye
yep,it's done!