一直在使用 Ndisgen 尝试为我的 Freebsd 9 上网本的 rtl8192se 驱动程序生成 .ko 内核模块,并遵循在几个不同的开发博客网站上找到的说明。
不知何故,我无法生成扩展名为 .ko 的文件。相反,我不断收到 .kmod 文件。 问题是,这些有什么区别?
我还尝试了 kldload 这个 .kmod 文件。当我通过 kldstat 检查它时,好吧,我在那里看到它,但是,当我用 dmesg 和 pciconf -lv 检查时,我的 Realtek 卡仍然没有连接。
所以我认为我确实需要首先生成 .ko 文件,但是我做错了什么或遗漏了什么,以至于只生成了 kmod ? 任何指示将不胜感激!谢谢! :)
更新::
有一条消息我忽略了。
我的错!
转换后的消息是:
“...正在清理... rm:机器:目录清理失败。正在退出”
这都是因为我粘贴了“/usr/include/machine”文件夹的副本,其中包含我认为转换驱动程序的路径中所需的所有标头。
但我忽略了它,因为 ndisgen 已经创建了一个 .kmod 文件(我认为这也是一个内核模块,只是不是 .ko 形式),那么就可以了。
最后,因为它抱怨它是一个目录并且无法清理,所以我创建了一个指向该文件夹的符号链接。
瞧瞧!清理成功,现在我有了 .ko 文件! :D
ndisgen
脚本将.ko
文件暂时重命名为.kmod
以进行一些清理。
如果清理工作有效,它应该将其重命名回
.ko
文件。请参阅 drvgen
函数 /usr/src/usr.sbin/ndiscvt/ndisgen.sh
。
我假设两次重命名之间出了问题。您收到任何错误消息吗?
请记住,如果您加载驱动程序,它应该显示为
ndis0
设备!
看起来您正在获取 NetBSD 内核模块,而不是 FreeBSD 内核模块。请参阅这些帖子:
hubertf 的 NetBSD 博客 现代网络bsd内核模块
您使用的源代码是否公开可供我们尝试按照您的步骤操作?