1

我下载了蝙蝠侠高级 MANET 的内核模块源代码,然后make在源代码目录中调用并让它完成它的工作。

完成后,batman- adv.komake文件在位于 /home/batman-adv-2013.2.0 的文件夹中可用。当我modprobe batman-adv在目录中调用时,出现错误:

FATAL: Module batman_adv not found.

当我打电话时insmod batman-adv.ko

 insmod: error inserting '/home/batman-adv-2013.2.0/batman-adv.ko': -1 Unknown symbol in module

我使用的操作系统是 Debian GNU/Linux 6.0.7 (squeeze)

我是否错过了我应该做的不同的事情,或者模块文件可能需要放在其他地方?

4

2 回答 2

2

“未知符号”通常意味着该模块依赖于另一个模块。您可以使用 验证哪个符号dmesg,它将告诉您遇到了哪些未知符号。通常,符号的前缀(例如 fat_xxxxx)暗示需要哪个内核模块。modprobe仅适用于 modules.dep 文件中列出的模块。

于 2013-04-25T21:01:41.857 回答
0

添加到 Technologeeks 答案:

modprobe只会在标准路径中搜索模块/lib/modules/$(uname -r)。由于您的.ko文件不在该目录中,modprobe因此找不到它。

使用模块的正确方法是:

make install
depmod -a
modprobe batman-adv
  • 第一行应该将模块安装到所有其他工具都可以使用的正确位置。

  • 第二行尝试找出使用模块所需的所有依赖项,并将该信息放入某个持久位置(lib/modules/$(uname -r)/modules.dep

  • 第三行使用依赖信息并加载所有依赖和你的模块。

于 2013-04-26T11:01:34.640 回答