首页 > 代码库 > 汉澳sinox通过ndis执行windows驱动程序

汉澳sinox通过ndis执行windows驱动程序

汉澳sinox不仅能通过wine执行windows应用程序。还能通过ndis执行windows驱动程序

 

汉澳sinox使用 Windows NDIS 驱动程序

详细实现方法是用ndisgen把windows驱动程序sys驱动程序转换成内核模块ko文件。然后让系统加载ko模块就能用了。ndis驱动负责模拟转换工作。

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

注意: ndis(4) 驱动在设计时主要提供了 PCI、 CardBus 和 PCMCIA 设备的支持, 而 USB 设备眼下则没有提供支持,所以usb无线网卡没得用、

要使用 NDISulator, 您须要三件东西:
1.
内核的源码 ,已经有

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

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

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

注意: 不能在 amd64 上使用 Windows/i386 驱动程序。

必须使用 Windows/amd64 驱动才干在其上正常工作。

  接下来的步骤是将二进制形式的驱动程序组装成内核模块。 要完毕这一任务, 须要以 root 用户的身份运行 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 袖珍port驱动封装模块, 而第二条命令则载入实际的网络接口。

  如今请查看 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”

汉澳sinox通过ndis执行windows驱动程序