1.创建内核模块源文件hello_printk
代码如下:
#include <linux/init.h>
#include <linux/module.h>
static int __init
hello_init(void)
{
printk("Hello, world!\n");
return 0;
}
module_init(hello_init);
static void __exit
hello_exit(void)
{
printk("Goodbye, world!\n");
}
module_exit(hello_exit);
MODULE_LICENSE("GPL");
MODULE_AUTHOR("Valerie Henson <val@nmt.edu>");
MODULE_DESCRIPTION("\"Hello, world!\" minimal module");
MODULE_VERSION("printk");
1.创建Makefile文件
代码如下:
obj-m := hello_printk.o #obj-m 意思是将后面跟的东东编译成内核模块。相对应还有:obj-y 编译进内核,obj-n 不编译
KDIR := /lib/modules/$(shell uname -r)/build #指定到已经编译的内核的目录
PWD := $(shell pwd) #指定源文件目录
default:
$(MAKE) -C $(KDIR) M=$(PWD) modules
3.现在,开始编译和运行代码。转到相应的目录下,编译内核模块
$
make
$ dmesg |
tail(dmesg | tail -2表示打印两行)
你将从dmesg的屏幕输出中看见”Hello world!”信息。现在卸载使用rmmod卸载内核模块,并检查退出信息。