module-init(hello-init)
内核加载模块
module-exit(hello-exit)
内核卸载模块
static int hello-init(void)
static int hello-exit(void)
编译:
2.6
多文件makefile
ifneq
endif
模块的安装与卸载
insmod hello.ko
lsmod
rmmod
modprobe
加载 更加有权利
它的不同之处在于它会根据文件
/lib/modules/<$version>/modules.dep
先查看依赖的模块 先加载 在安装
比较强大.
模块可选信息:
modules 可选信息;
module-license(”GPL“);遵守gpl协议
module-author(”david xie“);作者
modele-description(‘hello world module”);描述
modeles-alias("a simplest module");biemign
modeles-version(“2.36-45”)
注意: 模块参数
module-param指定模块参数,模块参数用于在加载模块时传递参数给模块
例如:
在加载时候用insmod param.ko
改变参数值
内核符合导出
/proc/kallsyms记录了内核全部符号
假如有两个模块(1,2) 实现了一些函数
加载1 在加载2 还是不行 unknown symbol in module
原因很简单你要导出 函数
export-symbol(usb-init)
导出后面模块才可以用
常见问题 版本不匹配
解决办法:
1:modprobe强行加载
2:找到匹配模块 重新编译 加载!
printk 里面有优先级输出 ;
总共有8个
0 最高