|
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]
|
|