我遇到了 Ubuntu 12.04 无法正确识别自定义内核模块的问题。内核模块是 的仿制品raw1394
。因此,即使处理 IEEE 1394/FireWire 通信的实际模块不同,查找raw1394
内存中模块存在的程序仍可正常工作。创建虚拟 raw1394 模块的说明位于wiki.sofa-framework.org。
insmod
问题是我每次都必须使用加载内核模块。
当我重新启动后尝试加载raw1394
内核模块时收到以下错误消息:
$ sudo modprobe raw1394
FATAL: Error inserting raw1394 (/lib/modules/3.5.0-51-generic/misc/raw1394.ko): Invalid module format
但是,如果我运行以下命令序列,一切都正常:
$ sudo insmod raw1394.ko
$ sudo modprobe raw1394
我不明白为什么版本不匹配会出现这样的问题:
$ uname -a
Linux mech801 3.5.0-51-generic #77~precise1-Ubuntu SMP Thu Jun 5 00:48:28 UTC 2014 x86_64 x86_64 x86_64 GNU/Linux
这是 MD5 哈希值。这两个文件的长度相同,但我认为insmod
在插入模块时内部必定发生了一些变化。这两个文件的大小均为 3274 字节。
$ md5sum /lib/modules/3.5.0-51-generic/misc/raw1394.ko ./raw1394.ko
ab06501bba1372f57115125bc7a24dfb /lib/modules/3.5.0-51-generic/misc/raw1394.ko
c3c3d2b4e2fe174a76b90af33eefc5e0 ./raw1394.ko
我是否遗漏了某些东西而导致了此Invalid module format
问题?