.kmod和.ko - 区别?

时间:2016-03-22 23:07:06

标签: driver freebsd kernel-module wireless

一直在使用Ndisgen尝试为我的Freebsd 9上网本生成一个rtl8192se驱动程序的.ko内核模块,并按照几个不同的开发者博客网站上的说明进行操作。

不知何故,我还没能生成扩展名为.ko的文件。相反,我一直在获取.kmod文件。 问题是,这些之间有什么区别?

我也尝试过这个.kmod文件的kldload。当我通过kldstat检查它时,好吧,我在那里看到它但是,当我用dmesg和pciconf -lv检查时,我的realtek卡仍未连接。

所以我认为我真的需要首先生成.ko文件,但是我做错了什么或丢失了,这样只生成一个kmod? 任何指针将不胜感激!谢谢! :)

更新::

我忽略了一条消息。

我的坏!

转换后的消息是:

" ...清理... rm:machine:目录清理失败。退出"

这一切都是因为我粘贴了" / usr / include / machine"我认为在我转换驱动程序的路径中需要所有标题的文件夹。

但是我忽略了它的想法,因为ndisgen已经创建了一个.kmod文件(我假设它也是一个内核模块,只是不是.ko形式)然后就没事了。

最后,因为它抱怨它是一个目录并且无法清理,所以我创建了一个指向该文件夹的符号链接。

瞧瞧!干净是成功的,现在我有.ko文件! :d

2 个答案:

答案 0 :(得分:0)

看起来你正在获得一个NetBSD内核模块,而不是FreeBSD模块。见这些帖子:

hubertf's NetBSD Blog Modern net bsd kernel module

您公开使用的源代码是否可以让我们按照您的步骤进行操作?

答案 1 :(得分:0)

ndisgen脚本暂时将.ko文件重命名为.kmod以进行清理。

如果清理工作正常,则应将其重命名为.ko文件。请参阅drvgen函数/usr/src/usr.sbin/ndiscvt/ndisgen.sh。 我假设两个重命名之间出了问题。你收到任何错误信息吗?

请注意,如果您加载了驱动程序,它应该显示为ndis0设备!