LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 1747|回复: 5

insmod 加载内核模块 出现“段错误”

[复制链接]
发表于 2007-6-14 23:17:09 | 显示全部楼层 |阅读模式
最近找了很多关于内核模块设计的资料,但连最简单的hello world都通过不了,试了很多人的,最后加载模块时都会出现“段错误”。

#include <linux/module.h>
#include <linux/init.h>
MODULE_LICENSE("GPL");// 新,否则有 waring, 去掉了 #define MODULE, 自动定义
static int hello_init(void)
{
printk(KERN_ALERT "Hello, world\n");
return 0;
}
static void hello_exit(void)
{
printk(KERN_ALERT "Goodbye, cruel world\n");
}
module_init(hello_init);// 必须!!
module_exit(hello_exit); // 必须!!


Makefile里面就一句
obj-m := hello.o

#make -C /usr/src/linux SUBDIRS=$PWD modules

insmod ./hello.ko就会提示段错误。
不知道是不是我系统哪里配置错误的原因,我安装的是debian4.0
kernel 2.6.18,默认不安装内核,我重新编译了的。

我试一下insmod 后面不管加什么东西都提示”段错误“
发表于 2007-6-15 07:23:54 | 显示全部楼层
这么简单,不象是程序错。dmesg有提示么?
回复 支持 反对

使用道具 举报

发表于 2007-6-15 08:57:48 | 显示全部楼层
我刚才试了一下,一切正常……

你的当前运行的内核的源码是在 /usr/src/linux 里面吗?
回复 支持 反对

使用道具 举报

 楼主| 发表于 2007-6-15 11:04:39 | 显示全部楼层
dmesg没报任何关于模块的错误,默认的没有装内核,我重装了原版的内核。内核在/usr/src/下,linux是内核的链接。
insmod 后面不管加什么都是报告我“段错误”。
我的编译是通过了的,在helloworld.c所在目录下生成了 helloworld.ko     helloworld.mod.o   helloworld.mod.c  helloworld.o      Module.symvers
回复 支持 反对

使用道具 举报

发表于 2007-6-16 20:21:11 | 显示全部楼层
Post by xi140107
dmesg没报任何关于模块的错误,默认的没有装内核,我重装了原版的内核。内核在/usr/src/下,linux是内核的链接。
insmod 后面不管加什么都是报告我“段错误”。
我的编译是通过了的,在helloworld.c所在目录下生成了 helloworld.ko     helloworld.mod.o   helloworld.mod.c  helloworld.o      Module.symvers



是比较奇怪. 本版前几个贴子中有几个模块编程的例子.建议你拿去试试看可以不.
如果不行,我觉得应该就是你的系统没有配置得好的原因了!
回复 支持 反对

使用道具 举报

发表于 2007-7-6 12:29:07 | 显示全部楼层
如果你使用的是debian lenny,
module-init-tools package 出了点小bug. 估计马上就会更新。
现在可以用/sbin/insmod xx.ko 来解决这个问题。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表