您的位置:首页 > 运维架构 > Linux

自定义Linux 内核驱动模块的编译

2015-11-24 19:38 561 查看
最近在尝试在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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: