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