当前位置: 技术问答>linux和unix
请问模块加载需要怎样配置环境?
来源: 互联网 发布时间:2016-01-28
本文导语: 我试了很多别人能用的模块,放我机子上编译能通过,insmod后就会出现“段错误”,insmod后加任何字符都是段错误,modprobe可以加系统模块。我的insmod是不是有问题啊? 我用的debian4.0,重新编译了内核2.6.18 [*] Enable ...
我试了很多别人能用的模块,放我机子上编译能通过,insmod后就会出现“段错误”,insmod后加任何字符都是段错误,modprobe可以加系统模块。我的insmod是不是有问题啊?
我用的debian4.0,重新编译了内核2.6.18
[*] Enable loadable module support
[*] Module unloading
[*] Forced module unloading
[ ] Module versioning support
[ ] Source checksum for all modules
[*] Automatic kernel module loading
我用的debian4.0,重新编译了内核2.6.18
[*] Enable loadable module support
[*] Module unloading
[*] Forced module unloading
[ ] Module versioning support
[ ] Source checksum for all modules
[*] Automatic kernel module loading
|
编译通过不能说明这个模块支持当前内核。你的insmod可能没有问题,最大的可能还是该模块和当前内核版本不兼容。这样来测试
将这个编译好的模块cp到/lib/modules/`uname -r`/kernel/driver/mymod/ 目录中,然后
运行depmod生成模块依赖,最后运行 modprobe
可以执行如下命令实现:
root# mkdir -p /lib/modules/`uname -r`/kernel/driver/mymod #注意不是单引号,是反引号。
root# cp /lib/modules/`uname -r`/kernel/driver/mymod/
root# depmod -eF /boot/System.map-`uname -r` -A #注意是否存在/boot/System.map-,没有的话需要从内核编译后的映像所在目录copy过来。实在没有的话用depmod -A代替。但结果可能不准确。
root# modprobe -v my_module #注意观察输出的信息,看加载模块是否成功,另外modprobe比insmod更聪明,insmod太简单没有什么实用价值
如果仍然出现段错误,基本上可以证明该模块不能工作于目前的内核。
为了避免出现段错误,最安全的做法,重新编译内核并打开下面两个选项
[*] Module versioning support
[*] Source checksum for all modules
确保内核拒绝不兼容的模块
然后重复前面的步骤,这时modprobe将拒绝安装不兼容的模块,也就是说,这时如果成功安装,那么就决不会出现段错误。否则,modprobe或insmod会失败。
将这个编译好的模块cp到/lib/modules/`uname -r`/kernel/driver/mymod/ 目录中,然后
运行depmod生成模块依赖,最后运行 modprobe
可以执行如下命令实现:
root# mkdir -p /lib/modules/`uname -r`/kernel/driver/mymod #注意不是单引号,是反引号。
root# cp /lib/modules/`uname -r`/kernel/driver/mymod/
root# depmod -eF /boot/System.map-`uname -r` -A #注意是否存在/boot/System.map-,没有的话需要从内核编译后的映像所在目录copy过来。实在没有的话用depmod -A代替。但结果可能不准确。
root# modprobe -v my_module #注意观察输出的信息,看加载模块是否成功,另外modprobe比insmod更聪明,insmod太简单没有什么实用价值
如果仍然出现段错误,基本上可以证明该模块不能工作于目前的内核。
为了避免出现段错误,最安全的做法,重新编译内核并打开下面两个选项
[*] Module versioning support
[*] Source checksum for all modules
确保内核拒绝不兼容的模块
然后重复前面的步骤,这时modprobe将拒绝安装不兼容的模块,也就是说,这时如果成功安装,那么就决不会出现段错误。否则,modprobe或insmod会失败。