【问题标题】:.kmod and .ko - difference?.kmod 和 .ko - 区别?
【发布时间】:2016-07-10 01:53:18
【问题描述】:

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

不知何故,我无法生成扩展名为 .ko 的文件。相反,我不断得到一个 .kmod 文件。 问题是,这些有什么区别?

我也尝试过为这个 .kmod 文件进行 kldload。当我通过 kldstat 进行检查时,好的,我在那里看到了,但是当我使用 dmesg 和 pciconf -lv 检查时,我的 realtek 卡仍然没有连接。

所以我认为我确实需要首先生成 .ko 文件,但是我做错了什么或遗漏了什么,以至于只生成了一个 kmod? 任何指针将不胜感激!谢谢! :)

更新::

我忽略了一条消息。

我的错!

转换后的消息是:

"...正在清理... rm: machine: 是目录清理失败.Exiting"

这完全是因为我粘贴了“/usr/include/machine”文件夹的副本,其中包含我认为在转换驱动程序的路径中需要的所有标题。

但我忽略了它的想法,因为 ndisgen 已经创建了一个 .kmod 文件(我认为这也是一个内核模块,只是不是 .ko 形式)所以没关系。

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

瞧!清理成功,现在我有了 .ko 文件! :D

【问题讨论】:

    标签: driver freebsd kernel-module wireless


    【解决方案1】:

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

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

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

    【讨论】:

    • 就是这样!非常感谢!在执行ndisgen时,实际上在“转换成功”之后出现了问题。 (请参阅我在原帖中的更新)。另一方面,即使驱动程序已加载(当我执行 kldstat 时可以看到),我仍然看不到 ndis0。 “ifconfig ndis0”> 接口 ndis0 不存在。 "pciconf -lv" > realtek 卡仍然是 none1@pci0:5:0:0。但我意识到这应该是另一个帖子。所以非常感谢你揭示了这个谜团! :D
    • 请记住,此类问题更适合serverfaultUnix & Linux
    【解决方案2】:

    看起来您获得的是 NetBSD 内核模块,而不是 FreeBSD 内核模块。查看这些帖子:

    hubertf's NetBSD Blog Modern net bsd kernel module

    您使用的源代码是否公开可供我们尝试按照您的步骤操作?

    【讨论】:

      猜你喜欢
      • 2012-05-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-06-17
      • 1970-01-01
      • 2013-08-07
      • 2011-10-20
      相关资源
      最近更新 更多