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重新配置一遍。