Chinaunix首页 | 论坛 | 博客
  • 博客访问: 15182646
  • 博文数量: 7460
  • 博客积分: 10434
  • 博客等级: 上将
  • 技术积分: 78178
  • 用 户 组: 普通用户
  • 注册时间: 2008-03-02 22:54
文章分类

全部博文(7460)

文章存档

2011年(1)

2009年(669)

2008年(6790)

分类: BSD

2008-04-06 18:47:18

11.8.1.1 使用 Windows® NDIS 驱动程序

  不幸的是,许多厂商由于认为驱动程序会涉及许多敏感的商业机密,至今仍不愿意将把驱动程序作为开放源代码形式发布列入他们的时间表。 因此, FreeBSD 和其他操作系统的开发者就只剩下了两种选择: 要么经历长时间的痛苦过程来对驱动进行逆向工程,要么使用现存的为 Microsoft® Windows 平台提供的预编译版本的驱动程序。 包括参与 FreeBSD 开发的绝大多数开发人员, 都选择了后一种方法。

  得益于 Bill Paul (wpaul) 的工作, 从 FreeBSD 5.3-RELEASE 开始, 已经可以 “直接地” 支持网络驱动接口标准 (NDIS, Network Driver Interface Specification) 了。 FreeBSD NDISulator (也被称为 Project Evil) 可以支持二进制形式的 Windows 驱动程序, 并让它相信正在运行的是 Windows。 由于 ndis(4) 驱动使用的是用于 Windows 的二进制形式的驱动, 因此它只能在 i386™ 和 amd64 系统上使用。

注意: ndis(4) 驱动在设计时主要提供了 PCI、 CardBus 和 PCMCIA 设备的支持, 而 USB 设备目前则没有提供支持。

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

   1.

      内核的源代码
   2.

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

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

  您需要找到用于您的卡的这些文件。 一般而言, 这些文件可以在随卡附送的 CD 或制造商的网站上找到。 在下面的例子中, 我们用 W32DRIVER.SYS 和 W32DRIVER.INF 来表示这些文件。

注意: 不能在 FreeBSD/amd64 上使用 Windows/i386 驱动程序。 必须使用 Windows/amd64 驱动才能在其上正常工作。

  接下来的步骤是将二进制形式的驱动程序组装成模块。 要完成这一任务, 需要以 用户的身份执行 ndisgen(8):

# ndisgen /path/to/W32DRIVER.INF /path/to/W32DRIVER.SYS

  ndisgen(8) 是一个交互式的程序, 它会提示您输入所需的一些其他的额外信息; 这些工作完成之后,它会在当前目录生成一个内核模块文件, 这个文件可以通过下述命令来加载:

# kldload ./W32DRIVER.ko

  除了刚刚生成的内核模块之外, 还必须加载 ndis.ko 和 if_ndis.ko 这两个内核模块, 在您加载需要 ndis(4) 的模块时,通常系统会自动完成这一操作。 如果希望手工加载它们, 则可以使用下列命令:

# kldload ndis
# kldload if_ndis

  第一个命令会加载 NDIS 袖珍端口驱动封装模块,而第二条命令则加载实际的网络接口。

  现在请查看 dmesg(8) 来了解是否发生了错误。 如果一切正常, 您会看到类似下面的输出:

ndis0: 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

  这之后, 就可以像使用其它网络接口 (例如 dc0) 一样来使用 ndis0 设备了。

  与任何其它模块一样, 您也可以配置系统, 令其在时自动加载 NDIS 模块。 首先,将生成的模块 W32DRIVER.ko 复制到 /boot/modules 目录中。 接下来, 在 /boot/loader.conf 中加入:

W32DRIVER_load="YES"
阅读(311) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~