用ndiswrapper驱动无线网卡
最近试了一下在Debian下安装无线网卡,由于是笔记本电脑的PCMCIA卡,这种卡多数只提供Windows的驱动程序而没有Linux的驱动,查了一些资料,发现可以通过ndiswrapper来完成将Windows驱动直接加载到Linux中使用的功能。下面就讲一下如何在Debian下安装ndiswrapper并配置无线网卡。
查到的文字中多数通过下载ndiswrapper源码,并通过重新编译核心等复杂的方法来完成,因为ndiswrapper需要编译一些用户工具并安装一个核心模块。这里介绍一下通过Debian的一些工具来辅助完成模块编译等工作的过程。要说明一下的是,如果你使用的是稳定版本或非稳定版本的较早期一点的核心,你可能直接在Debian的官方或非官方包中找到你想要的驱动。我使用的是Debian的unstable版本,最初测试时用的核心是kernel-images-2.6.8-3-686,并且可以发现安装包中有这个核心已经编译好的ndiswrapper模块。这样,所有的安装过程就简单到执行几条apt-get命令:
root@debian ~# apt-get install ndiswrapper-modules-2.6.8-2-386
root@debian ~# apt-get install ndiswrapper-common
不幸的是,我太喜欢新的东东了,所以过了几天,我的核心升级到了2.6.17-1,这时,对应的ndiswrapper模块没有了。这时,也不要先考虑到ndiswrapper的站点上去下载源码并编译,可以考虑通过下载并编译Debian包源码来完成ndiswrapper驱动的安装。Debian的安装包中的确有一个叫ndiswrapper-source的包,简单的想法肯定的下载后,下载当前核心的头文件(kernel-headers-2.6.17-1),然后编译并安装ndiswrapper的核心模块。不过,Debian提供更为简洁的方法来完成这些工作。
Debian中有一个叫module-assistant的工具,这个工具可以用来创建一个以当前核心为基础的模块核心编译环境,并提供菜单式的简洁操作界面来编译核心所支持的第三方模块。如果你的系统上还没有安装这个工具,通过下面的命令来安装:
root@Debian ~# apt-get install module-assistant
安装完成后,直接运行 module-assistant 可以看到一个 curses 的图形界面,提供一些菜单项,包括:
- OVERVIEW: 总体介绍module-assistant的功能;
- UPDATE:更新缓存信息,类似于apt-get update的功能,从镜像站获得包更新;
- PREPARE:准备模块编译所需环境,如下载相应核心的头文件,配置文件,安装必要的工具等;
- SELECT:选择需要编译的核心模块;
- EXIT: 退出module-assistant。
与dselect相类似,一次模块的编译工作可以通过顺序选择一次菜单来完成。中间会有一些提示确认信息或安装一些新的软件包,根据提示确认即可。依次选择UPDATE和PREPARE后,module-assistant已经作好编译核心模块的必要准备工作。选择select项,进入一个新的选择页面,其中列出了可供选择的所有核心模块,从列表中找到ndiswrapper选中后确认,出现一个新的菜单。这个菜单是对于选中的模块可进行的操作列表,不再详细说明。仍然可以通过顺序选取每一项来完成模块的编译(前两项LIST和SEARCH可以不必选)。选择GET将从Debian提供的镜像站下载ndiswrapper源码,选取BUILD进行模块编译,这可能需要一些时间。最后,选择INSTALL,编译出的ndiswrapper核心模块被安装到系统的核心模块并自动完成模块的依赖更新和本模块依赖的软件的安装(如会安装ndiswrapper-common,ndiswrapper-utils包等)。
顺利的话,上面的过程完成后,ndiswrapper驱动就安装完成了,并且ndiswrapper工具也自动被安装到系统中了。安装完ndiswrapper是否就可以使用无线网卡了呢?还不行,上面的工作只代表着在Linux下使用Windows的基于ndis驱动的准备工作完成了。下面我们来安装无线网卡驱动程序,并简单说明一下如何进行配置。
安装PCMCIA无线网卡驱动
我用的是一款TENDA的PCMCIA无线网卡,查看驱动后,从inf文件中发现其基于Marvell的芯片做的,用的实际上是Marvell的驱动(mrv8335)。使用ndiswrapper时,通常只需要驱动程序中的inf文件和sys扩展名的文件。简单的方法是让ndiswrapper自己来选择需要哪些文件。将无线网卡驱动在Debian下解开(Debian下可以安装unzip和unrar等工具来解压或压缩zip和rar文件),选择windows2000或windowsXP的驱动目录,找到相应的inf文件,使用类似下面的命令来安装:
root@debian ~# ndiswrapper -i mrv8335.inf
完成后,驱动程序相关的文件将被复制到 /etc/ndiswrapper目录中,由ndiswrapper来管理。通过下面的命令可以查看ndiswrapper已经支持的驱动列表:
root@debian ~# ndiswrapper -l
Installed drivers:
mrv8335 driver installed
将网卡插好后,执行命令ndiswrapper -m将ndiswrapper模块加入到modprobe的配置文件中。加载ndiswrapper模块即可看到无线网卡接口设备了,通常名称以wlan开始,第一个为wlan0:
root@debian ~# ndiswrapper -m # 只需执行一次即可
root@debian ~# modprobe ndiswrapper
通过命令iwconfig可以看到一个叫wlan0的无线接口,通过ifconfig也可以看到这个接口。通过iwlist命令可以搜索无线网络情况:
root@debian ~# iwlist wlan0 scan
接下来开始配置无线网络了,相关的配置说明可以查看wireless-tools的相关手册,这里就不多讲了。一个示例命令如下:
root@debian ~# iwconfig wlan0 essid home_ap # 设置ESSID
root@debian ~# iwconfig wlan0 mode Managed
root@debian ~# iwconfig wlan0 key restricted XXXXXXXX
我的/etc/network/interfaces里有类似如下的配置:
iface wlan0 inet dhcp
pre-up modprobe ndiswrapper
post-down rmmod ndiswrapper
wireless-essid Default
wireless-key Off
wireless-mode Managed
wireless-rate auto
这样,当我要启用无线网络时,只需要使用命令:ifup wlan0即可自动完成驱动加载等工作;而当我要关闭无线网络时,也只要命名用ifdown wlan0即可自动关闭无线模块,并卸载ndiswrapper模块。
没有评论:
发表评论