LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 987|回复: 2

建议在内核加FreeBSD NDISulator /Windows 驱动程序

[复制链接]
发表于 2005-6-14 01:22:59 | 显示全部楼层 |阅读模式
从 FreeBSD 5.3-RELEASE 开始, 已经可以 “直接” 支持网络驱动接口规范 (NDIS)。 FreeBSD NDISulator (也被称为 Project Evil) 可以支持二进制形式的 Windows 驱动程序,并让它相信正在运行的是 Windows。 这是一个相对较新的功能,但许多测试证明, 它确实相当有效。

要使用 NDISulator, 您需要三件东西:

内核源代码

二进制形式的 Windows XP 驱动程序 (扩展名是 .SYS)

Windows XP 驱动程序配置文件 (扩展名是 .INF)

您可能需要编译 ndis(4) 袖珍端口驱动封装模块。 这一操作需要以 root 身份来完成:

# cd /usr/src/sys/modules/ndis
# make && make install
找到您的卡所需的文件。 一般来说, 您应该能在随卡的 CD 或者制造商的网站上找到。下面的例子中, 我们将使用 W32DRIVER.SYS 和 W32DRIVER.INF 这两个名字。

接下来的步骤是将二进制形式的驱动程序组装成内核模块。 要完成这一任务, 需要以 root 身份进入 if_ndis 模块的目录, 并将 Windows 驱动程序复制到这里:

# cd /usr/src/sys/modules/if_ndis
# cp /path/to/driver/W32DRIVER.SYS ./
# cp /path/to/driver/W32DRIVER.INF ./
接下来我们将使用 ndiscvt 工具来创建驱动定义的头文件 ndis_driver_data.h, 用以构建驱动程序:

# ndiscvt -i W32DRIVER.INF -s W32DRIVER.SYS -o ndis_driver_data.h
选项 -i 和 -s 分别用于指定配置和二进制形式的驱动程序。 我们使用 -o ndis_driver_data.h 参数, 因为 Makefile 在构建内核模块时会查找它。

Note: 某些 Windows 驱动程序需要一些额外的文件才能正常工作。 您可以把它们放到 ndiscvt 命令的 -f 参数后面。 请参考 ndiscvt(8) 联机手册了解更多详情。

最后, 就可以构建并安装内核模块了:

# make && make install
要使用驱动程序, 您需要加在适当的内核模块:

# kldload ndis
# kldload if_ndis
第一个命令会加载 NDIS 袖珍端口驱动封装模块, 第二个则加载实际的网卡。 请查看 dmesg(8) 的输出以了解是否在加载过程中存在错误。 如果一切正常, 您应该能看到类似下面的输出:

ndis0: <Wireless-G PCI Adapter> mem 0xf4100000-0xf4101fff irq 3 at device 8.0 on pci1
ndis0: NDIS API version: 5.0
ndis0: Ethernet address: 0a:b1:2c:d3:4e:f5
ndis0: 11b rates: 1Mbps 2Mbps 5.5Mbps 11Mbps
ndis0: 11g rates: 6Mbps 9Mbps 12Mbps 18Mbps 36Mbps 48Mbps 54Mbps
发表于 2005-6-17 13:12:16 | 显示全部楼层
很好,有点感兴趣。多谢!
回复 支持 反对

使用道具 举报

发表于 2005-6-22 18:01:33 | 显示全部楼层
这个有点难测试。。。
找不到需要用它的设备哦,呵呵。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表