如果我做:
sudo insmod module.ko
我得到:
insmod: error inserting 'module.ko': -1 Operation not permitted
modinfo 给我:
filename: module.ko
license: XXX Proprietary
version: 210
author: XXX
description: XXX Driver
srcversion: XXX
depends:
vermagic: 2.6.32-33-generic-pae SMP mod_unload modversions 586TSC
uname -a 给出的结果为:
2.6.32-35-generic-pae #78-Ubuntu SMP Tue Oct 11 17:01:12 UTC 2011 i686 GNU/Linux
所以我怀疑我需要安装这个特定的内核版本:
2.6.32-33-generic-pae
我的问题是如何插入这个模块,如果内核版本是问题所在,如何在 Ubuntu 10.04 上安装它?
顺便提一下,我安装 Ubuntu 时使用的是 2.6.32.33-generic 内核,但 insmod 失败了。然后我做了:
sudo aptitude install linux-generic-pae linux-headers-generic-pae
我在启动时选择了新内核,但 insmod 再次失败。我注意到它是(我认为是 2.6.32.36-generic-pae 而不是 2.6.32.33-generic-pae,但我不知道如何安装这个特定版本)
答案1
从Linux 内核模块编程指南,第 1.2.1.1 节:
除非您在内核中启用 CONFIG_MODVERSIONS,否则如果您启动不同的内核,则为一个内核编译的模块将不会加载。
因此,构建启用了 CONFIG_MODVERSIONS 的内核可能会解决您的问题。另一个解决方案是构建并安装支持 PAE 的 Linux 2.6.32-33。
答案2
我找到了解决方案 - 我只需要从 synaptic 包管理器安装“linux-image-2.6.32-33-generic-pae”并重新启动。
现在插入模块正在通过,谢谢。