QQ登录

只需一步,快速开始

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 17858|回复: 29

NdisWrapper的使用方法(完成版)

[复制链接]
发表于 2005-1-19 22:45:19 | 显示全部楼层 |阅读模式
NdisWrapper

Design for  Linuxfans.org  By linky_fan

大家都用过无线网卡吧,也许是用 USB 联接的,也许是pcmia的,是不是碰到过只支持windows而不支持inux的,而为了用无线网卡而不得不回windows下的经历,linux真的就没有办法了吗? 別担心,通过 NdisWrapper Impossible  Is Nothing  :D

原文如下
http://ndiswrapper.sourceforge.net/wiki


基本要求

       
  • 必需安装最新的 kernel source (至少是 2.6.6 或 2.4.26),并且有正在使用的内核的原代码。
       
       
  • 确定在modules directory下有kernel source 的软连接。 /lib/modules/VERSION/build 应该是链接到 kernel source 的soft link,其中 VERSION 是你正在使用的 kernel 的 version。假如没有这个 link,在下面的安装步骤将有error occure。要建立这个soft link(假设已经有了kernel source)使用下面的命令
    [code:1]
    ln -s /usr/src/linux-<kernel-version> /lib/modules/VERSION/build
    [/code:1]
       
  • 确定你有编译过 kernel sources,那么所需要的 header files 就ok了。
       
  • 有些 vendors 在他们的 distributions 中 ship ndiswrapper,你可以直接用,或是自行安裝ndiswrapper,但得注意先移除已经存在的。
       
  • 确定已安裝 Wireless Tools。(也就是iwconfig等等,,,,)
    [/list:u]

    Build 自己的kernel package with ndiswrapper

    可能有些兄弟需要(或者说更乐意)编译一个属于他们自己的已经加好ndiswrapper driver patch的内核, 不要急, 接着看, 肯定让你满意

    Download the helper script from 下面 http://sourceforge.net/tracker/index.php?func=detail&aid=1068707&group_id=93482&atid=604450

    把它放在ndiswrapper 的源代码的目录下执行就会得到如下得patch
    [code:1]
    linux-2.6.9-ndiswrapper-version.patch
    [/code:1]

    安裝
    • 安装ndiswrapper
      [code:1]
      emerge ndiswrapper 就可以装好 ndiswrapper 啦!
      [/code:1]
      提醒一下,若 kernel 有变动,需要要重新安裝一次。
    • 安裝 Windows 驱动程序

      你需要下载你的无线网卡卡所使用的 Windows XP driver。
      一个支持的硬件列表如下所示: http://ndiswrapper.sourceforge.net/phpwiki/index.php/List

      为了最终能够舒舒服服的使用无线网卡under linux, 首先用lspci看一下你所用的无线网卡的型号, 注意第一列的数据 (such as 0000:00:0c.0).
      [code:1]
      lspci
      [/code:1]
      然后用如下的命令查找这块无线网卡的PCI ID(当然得根据上面得那个数据来查找这个值)
      [code:1]
      lspci  -n
      [/code:1]
      • PCI ID的值是运行后的结果的第三个column(对于有些发行版来说是第四个)
        类似于"104c:8400"这样的一个数值.
      • 接着就要区下载该网卡对应的windows下的驱动包, 在驱动列表中找到与刚才用lspci命令得到的PCI ID相同的那个包,然后unzip/cabextract/unshield 等工具解压. 在解压后的包中找到 INF 文件(后缀名一般是 .INF 或 .inf )和 SYS 文件 (后缀名一般为.SYS 或 .sys), 如果发现有很多个 INF/SYS文件, 那么开动你的脑筋吧, 从蛛丝马迹中可以判断出正确的那个滴.
      • 最后确定一下所有的这些 INF , SYS 这些文件和一些Bin (例如TI的驱动使用BIN格式的fireware)都在一个文件夹中, 然后就可以使用ndiswrapper 工具进行安装了.
        [/list:u]
        [code:1]
        ndiswrapper -i filename.inf
        [/code:1]
        这会将所需的冬冬都复制到目录 /etc/ndiswrapper,并且建立你的网卡所用的 config 文件。
        • 注意:使用的存放inf或是sys文件的文件夹的名字中不要使用空格键
        • 注意: 你可能会看到开头为"Warning: Cannot locate "的消息。假如消息息中并未包含看起來像是档案名称的冬冬,那么这个 warning 是可以忽略的(我想是吧) [/list:u]
        • 安装之后执行ndiswrapper -l, 得到的结果应该是如下边所示:
          [code:1]
          Installed ndis drivers%%%
          bcmwl5 hardware present
          [/code:1]
          这里"present"意味着你已经正确安装好的并可以使用的驱动的名字, 如同给出的结果中的bcmwl5
        • 装载modules
          运行下面的命令载入modules
          [code:1]
          modprobe  ndiswrapper
          [/code:1]
          假如没有什么错误信息,就表示驱动程序的模块现在已经载入了。你可以在terminal中开启一个dmesg来检查system log, 确认所需要的模块已经成功载入了 。这步完成以后,你应该会在system log中看到如下的信息:
          [code:1]
          ndiswrapper version V loaded
          [/code:1]
          • 确定此处的版本 V 和你下载及安裝的 ndiswrapper package 的版本一致。假如你得到的是不一样的版本,那么你的package是旧的版本,你应该将它移除后重新安装(打心眼里希望大家都可以一次搞定 )
          • 假如在 modprob'ing之后,系统被锁住了 (如按键没有反应等等),即表示 kernel 已经 crash 了。 看一下那里的 [Distributions] 和 [FAQ] 那上面或许有和你遇到相同问题的兄弟, 或许他们已经解决了(大部分的问题都是和kernel的版本有冲突)
          • 假如你先前已经成功安裝了 windows 的驱动 (使用ndiswrapper -i INFfile ),那么ndiswrapper module 会把它们全部都load进来。然后你会在system log中看到下面的信息
            [code:1]ndiswrapper: driver driver1 added[/code:1]
            • 对与每个特定的modules来说, 如果你没有看见这些信息, 那么通常的原因可能是你的/etc/ndiswrapper里没有对应的驱动, 这个时候你可以进入/etc/ndiswrapper, 查看一下是否在这个目录下还存在着其他的子目录中包含着inf和sys的文件.不然的话就要把步骤2再重新做一遍了
            • 如果系统系统使用了加载入的windows驱动并且开始工作的话, 你一定可以看到在你的system log中有这样的一笔记录:
              [code:1]wlan0: ndiswrapper ethernet device xx:xx:xx:xx:xx:xx
              [/code:1]
              [/list:u]
              [/list:u]
            • 设定界面
              要用 iwconfig 來设定无线网卡前请先看看这个命令界面是否是可用的,使用下面的指令试试:
              [code:1]
              iwconfig
              [/code:1]
              • 如果你的系统中没有这个工具 :那么就emerge吧, 它是 package 'wireless-tools' 的一部分,大家自行安装咯。
                [/list:u]
                这样会列出 wireless interface (例如, wlan0)。在下面例子中,将使用 wlan0;请以上述 iwconfig 显示出的 interface 來取代wlan0。 这里的无线网卡的配置必须和你所采用的无线接入方法(Access Point, AP)所要求的相吻和.首先用下面这句命令看看附近有什么可用的无线网络:
                [code:1]
                iwlist wlan0 scan
                [/code:1]
                注意:你在必要的时候应该先设置network的名字然后再运行上面的命令找到你的无线AP. 假如 scan 没有找到你的 AP, 在使用 "iwlist wlan0 scan" 的命令之前, 尝试运行下面的命令:
                [code:1]
                iwconfig wlan0 essid ESSID
                [/code:1]
                假如这样就可以列出你的AP了,你就可以继续后面的步骤。否则,你可能会碰到下面两件头疼的事中的其中一个:
                • 你的AP没有开启broadcast SSID(Service Set IDentifier) 或者网卡卡的 radio 关掉了。[/list:u]

                  在你看得到你的AP后, 要做的第一件事就事设置你的网络端口, 在大多数情况下,可以使用下面的命令:
                  [code:1]
                  iwconfig wlan0 mode Managed
                  [/code:1]
                  假如你使用的事 encryption (WEP)(Wired Equivalent Privacy), 则要设定 你的key:
                  [code:1]
                  iwconfig wlan0 key restricted XXXXXXXX
                  [/code:1]
                  你可以使用10位十六进制数实现40-bit的加密强度或是26位十六进制数来实现128-bit的加密强度. 你采用哪种加密方法主要是看你接入的无线AP采用的方法.(虽然大家都知道wifi的安全性之差仅次于蓝牙, 使用airsnort之类的软件很容易就可以破解掉无线网络的wep, 不过说还是要说的)如果你想用ASCII来取代16进制, look this : (e.g. iwconfig wlan0 key restricted s:password).

                  设定 network name
                  [code:1]
                  iwconfig wlan0 essid ESSID

                  请用你AP上使用的network name來取代 ESSID。
                  [/code:1]
                  现在开是设置wlan0(你的或许不叫这个名字)这个接口的一些参数,这些参数的设置方法请参考你所使用的发行版的Documents, 我这里就不多说了.如果完成后就可以 bring up 你的无线网络了,例如:
                  [code:1]
                  ifconfig wlan0 up
                  [/code:1]
                  或是
                  [code:1]
                  dhclient wlan0
                  [/code:1]
                  或者
                  [code:1]
                  dhcpcd wlan0
                  [/code:1]
                  等等。

                • 自动化
                  要是一切都很顺利的话,就可以通过执行下面的命令來得到正确无误的 modprobe settings 了,在使用 wlan0 时可以自动装载ndiswrapper,
                  [code:1]
                  ndiswrapper -m
                  [/code:1]
                  注意:按照上面这个命令做了之后, 系统不是在boot时候自动load ndiswrapper 这个module的, 如果你想在系统boot的过程中自动load ndiswrapper,  你必须设置你的modules的configure文件, 设置的方法或是修改什么文件的话都依赖于你所使用的发行版, 这些发行版中的大部分都是在boot时候load进/etc/modules下的所有modules. (Mandrake 10.X在启动时使用的modules文件是/etc/modrpobe.preload) 对于它们来说, 你可以在相应的文件中(/etc/modules)增加那么一行:
                  [code:1]
                  ndiswrapper
                  [/code:1]
                  现在你不用在为无线网卡发愁了吧, 用linux 无线你的无限咯
                  [/list]
发表于 2005-1-20 00:25:14 | 显示全部楼层
linky_fan,
回复

使用道具 举报

 楼主| 发表于 2005-1-20 19:43:10 | 显示全部楼层
linky_fan, Very Happy

干啥
回复

使用道具 举报

发表于 2005-1-22 00:45:30 | 显示全部楼层
为你的成果加油啊!
还有
你是性感+可爱的终级合体
回复

使用道具 举报

发表于 2005-1-23 22:54:44 | 显示全部楼层
# 确定在modules directory下有kernel source 的软连接。


请问这句是什么意思?
回复

使用道具 举报

 楼主| 发表于 2005-1-24 09:37:52 | 显示全部楼层
引用:

# 确定在modules directory下有kernel source 的软连接。



请问这句是什么意思?

lib/modules/VERSION/build 应该是链接到 kernel source 的soft link,其中 VERSION 是你正在使用的 kernel 的 version。
回复

使用道具 举报

 楼主| 发表于 2005-1-26 21:03:41 | 显示全部楼层
已完成     
回复

使用道具 举报

发表于 2005-1-27 04:54:55 | 显示全部楼层
版主的这篇文章和王旭 (Wang Xu)的《在 Linux 下访问无线局域网无线网》相互补充,就是无线网的正宗解决方案了  
http://linuxfocus.org/ChineseGB/December2004/article361.shtml
回复

使用道具 举报

 楼主| 发表于 2005-1-27 10:56:04 | 显示全部楼层
版主的这篇文章和王旭 (Wang Xu)的《在 Linux 下访问无线局域网无线网》相互补充,就是无线网的正宗解决方案了  
http://linuxfocus.org/ChineseGB/December2004/article361.shtml  

挺不错的文章, 不过在gentoo下面方法比这个还要简单些, emerge
回复

使用道具 举报

发表于 2005-3-5 20:54:20 | 显示全部楼层
当我modprobe  ndiswrapper 的时候,真的死机了。现在怎么办?有解决方法吗
回复

使用道具 举报

 楼主| 发表于 2005-3-5 21:47:32 | 显示全部楼层
大部分的问题都是和kernel的版本有冲突

换个版本试试吧
回复

使用道具 举报

发表于 2005-6-18 17:39:20 | 显示全部楼层
ndiswrapper version 1.2 loaded (preempt=no,smp=no)
ndiswrapper: driver net5211 (,05/31/2003,2.4.0.71) loaded
PCI: Enabling device 0000:07:00.0 (0000 -> 0002)
ACPI: PCI Interrupt 0000:07:00.0[A] -> Link [LNKB] -> GSI 10 (level, low) -> IRQ 10
PCI: Setting latency timer of device 0000:07:00.0 to 64
ndiswrapper (NdisWriteErrorLogEntry:314): log: C0001389, count: 4 (d2f64a00), return address: e0b830c1
ndiswrapper (ndiswrapper_add_pci_device:21: Windows driver couldn't initialize the device (C000009A)
ndiswrapper: probe of 0000:07:00.0 failed with error -22


前面安装都没有问题,但是结果确实这样的.我的系统是
FC4,ndiswrapper版本是1.2
谁帮我分析一下是什么原因.
回复

使用道具 举报

发表于 2005-6-19 14:34:40 | 显示全部楼层
knoppix3.8.x knoppix3.9 kanotix-2005-xx 已经内置了对ndiswrapper支持,不过本人没有条件测试
回复

使用道具 举报

 楼主| 发表于 2005-6-19 22:02:16 | 显示全部楼层
Windows driver couldn't initialize the device (C000009A)

版本有问题吧, 不是你的内核就是ndis, 确定版本可用吗?
回复

使用道具 举报

发表于 2005-6-20 08:46:56 | 显示全部楼层
搞定了。
好像是PC卡插槽的问题。
但是要安装TP-Link的驱动,还需重新编译内核,把4K堆栈的选项关掉,要不然会死机的。
回复

使用道具 举报

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

本版积分规则

GMT+8, 2024-4-27 10:48 , Processed in 0.101360 second(s), 15 queries .

© 2021 Powered by Discuz! X3.5.

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