内核模块:
1 内核模块是具有独立功能的程序,他可以被单独编译,但是不能单独运行,它的运行必须被链接到内核作为内核的一部分在内核空间中运行
2 模块编译和内核版本密切相连,模块编程也被称为内核编程
3 模块本身不被编译进内核映像,从而控制了内核的大小,模块一旦被加载,就和内核中其他的部分一样
程序结构
内核加载函数 module_init
内核卸载函数 module_exit
所需头文件
#include
#include
#include
模块编译
编写makefile
fineq($KERNELRELEASE),)
obj-m :=...
else
KDIR:=/lib/modules/2.6.29/build
all:
make -C $(KDIR) M=$(PWD) modules
clean:
rm -f *.ko *.o *.mod.o *.mod.c .symvers
endif
注意:写命令时另起一行然后按Tab隔开后再写,否则make无法运行
kdir 指定的路径一定要与linux系统当前使用的内核源代码相对应,否则编译出来的模块无法插入,并提示“Invalid module format"所以在编写模块前查看当前linux内核的版本信息 uname
写好后 输入make 生成的.ko就是编译得到的内核模块
安装内核模块 insmod ....ko
这时可以查看 已安装的内核模块 lsmod | grep ...
卸载内核模块 rmmod ...ko
阅读(949) | 评论(0) | 转发(1) |