最近在尝试在Xen虚拟机中添加自定义设备,于是需要为设备编写驱动并将其加载进内核。
1、编写Linux内核驱动模块,即transback.c文件
module_init(hello_init);
module_exit(hello_exit);
//module_init()和module_exit()是驱动模块必须具备的两个函数,指明驱动运行时的入口和出口;
MODULE_LICENSE(“GPL”)
MODULE_DESCRIPTION("A simple Hello World Module");
MODULE_ALIAS("a simplest module");
以上三个文件可有可无,介绍了驱动模块的语法规则和内容;
2、编写MakeFile文件(关于MakeFile的编写规则可以参考博客:http://blog.csdn.net/liang13664759/article/details/1771246)
KERNEL_DIR = /lib/modules/$(shell uname -r)/build
Obj-m:=transback.o
all:
$(MAKE) -C $(KERNEL_DIR) M=$(PWD) modules
Clean:
$(MAKE) -C $(KERNEL_DIR) M=$(PWD) clean
3、在当前目录下执行make指令进行编译
4、编译成功后,会在当前目录下生成transback.ko文件,使用insmod指令将模块加载进内核。
# insmod transback.ko //加载transback.ko模块
# lsmod |egrep trans//查看当前加载模块 lsmod会列出内核当前可加载的所有模块
# rmmod trans//卸载模块,注意没有.ko