操作系统为Red hat9, 内核版本是, 2.4.20-8
ndiswrapper是这样一个project,它并不直接编写无线网卡在linux下的驱动程序, 而是借助该无线网卡在windows 2000/xp下的驱动程序, 在linux内核中实现windows api和ndis接口, 这样只要提供该驱动程序在windows 2000/xp下的inf文件(从安装光盘取得),安装后在windows\system32\下,或者windows\system32\driver目录下,就可以使用该网卡在linux下的驱动程序了。
ndiswrapper在source forge上在主页是:http://sourceforge.net/projects/ndiswrapper/
所使用的ndiswrapper的版本:1.1(一定是,其他不行,后面会陈述原因)
ndiswrapper1.0是一个门槛,这个版本以前的版本,不可以通过make uninstall来卸载当前ndiswrapper,当要决定使用一个新的ndiswrapper版本的时候, 通常要把以前的版本卸载掉。
卸载前首先要用modprobe -r ndiswrapper来卸载这个内核模块, 用ndiswrapper -e drivername来卸载安装的一个具体驱动程序,删除/etc/ndiswrapper目录下的关于该驱动程序的文件夹, 就可以运行make uninstall命令来卸载程序了。
若使用了ndiswrapper1.0之前的版本,需要手动卸载, 方法如下:
1. 删除/usr/sbin下的'ndiswrapper'相关可执行文件。
2. 删除/sbin下的'loadndisdriver'可执行文件。
3. 删除/lib/modules/`uname -r`/misc下的ndiswrapper.o内核模块文件。
在编译安装一个新的ndiswrapper包之前, 要保证/lib/modules/`uname -r`/下有一个build目录,是指向/usr/src/linux-2.4.20-8目录的符号链接。 最好重新编译一下内核, 方法如下:
切换到/usr/src/linux-2.4.20-8目录, 运行make mrproper(保证源码树是干净的)
查看该目录下的Makefile, 去掉extendversion的custom字样。
运行make menuconfig, 可以不修改, 保存配置文件; 运行make dep.
解压缩下载的ndiswrapper.tar.gz文件, 切换到解压缩后的目录, 运行make clean(或者make distclean,在1.0版本之前没有make distclean), 直接运行make install, 看是否有错误, ndiswrapper版本0.10可以正常编译通过, 1.0版在这个版本的内核上编译通不过,1.1版可以, 1.2版可以,1.3rc1版不行。
make install 成功完成以后, 用ndiswrapper -i /path/to/inf/file/in/windows命令来指定一个inf文件, 对于d-link dwl 610来说, 该文件是:/mnt/winc/winnt/system32/drivers/netdlwl.inf(可从光盘获取),若驱动程序安装成功会提示:install drivername. 然后用ndiswrapper -l(字母),来列出加载的驱动程序, 其中应该有驱动程序加载的信息和硬件加载的信息, 0.10版本的虽然可以make install成功, 并且ndiswrapper -i inffile也成功安装, 但运行ndiswrapper -l的时候, 提示没有插入硬件, 我想是因为驱动程序的版本太老。 1.1版的可以make install成功, 运行ndiswrapper -i inffile的时候, 会提示出好多unknown lines****, 可以不必理会。 用ndis -l 查看硬件的状态信息是否正常。 然后运行modprobe ndiswrapper, 1.1版本的可以成功加载, 1.2版本的不能insmod成功,加载后若无线网卡的状态指示灯不亮, 用cardctl eject和cardctl insert命令重新插入一下卡应该工作正常。 下面就可以用iwconfig来配置网卡了。 我的工作环境配置为:
iwconfig wlan0 mode ad-hoc
iwconfig wlan0 essid llxm
iwconfig wlan0 freq 1
ifconfig wlan0 192.168.6.10
找另外一台相同ad-hoc配置的机器测试成功, 最后用ndiswrapper -m写入相关的配置信息。
redhat-config-network中可能没有相关的设备,我没有继续研究或者添加设备。
重新起动机器后, 要加载驱动程序, 只需要运行modprobe ndiswrapper, cardctl eject, cardctl insert即可。 要让开机自动加载驱动程序还没有看。 关于上面的配置需要用iwconfig 和 ifconfig重新配置一遍。