无线上网是近几年来网络发展的重点。由于脱离了物理的线缆限制,无线上网已经成为众多家庭和办公环境的首选方式。许多传统的基于有线局域网的环境也都在向无线迁移,这对于Linux下的驱动程序提出了很迫切。众所周知,对于无线网卡这种新产物,Linux的驱动支持总是慢一拍,大多数网卡的驱动盘都是只有Windows的驱动,直到目前也很少有附加Linux驱动的。这对于Linux在国内的普及和发展造成了很大的障碍。
一、引言
这两天根据实验室内部的需要,承担了改造现有网络,增加无线AP的工程。由于本实验室长期从事Unix/Linux方面的研究和工程项目,有大量的Linux主机需要解决无线上网问题。为此笔者一直在广泛的搜寻Linux下面可以支持无线网卡,也曾经在GOOGLE上查阅了无数资料,包括硬件厂商的、第三方开源支持的,等等。但是这些资料看起来很多,但是实际上符合我的需求的可以说很少,主要有以下几个问题:
1. 现有的叙述Linux下面无线网卡支持方案的文章,绝大多是讲使用ndis wrapper的方式。这个软件包只支持2.6以上内核,对于内核版本2.4.20的根本不支持。而实验室内大多数机器都在使用传统的RedHat 9.0,其内核恰恰用的是2.4.20,如果再需要换内核就比较麻烦了。另外,它使用的重新利用WindowsXP驱动的方式,从里面分析二进制指令以转化成Linux驱动,但是目前转化率并不是100%完善,对windows xp的驱动也不是100%可用。
2. ndis wrapper需要重编译内核,这造成安装过程非常麻烦,另外很多已经在运行的应用是根本不允许再编译内核的。因此,最好拿来驱动编出模块,直接加载就能用。笔者认为驱动程序就是应该使用上尽量简化,比较反感需要重新编译内核的任何应用。
3. 所讲的无线网卡多是PCMICA、USB的,对于标准PCI的讲的相对较少。而我们需要支持的大多数是PC机,使用PCI网卡是最方便的,也是最省钱的。
4. 所讲的无线网卡在市场上不一定好买,所述的型号都是比较老的,或者说是国外广泛使用而在国内市场很少见的。而对于现在市面上最流行的TP-link、D-Link等常见网卡,却很难找到是否可以支持的明确回答,往往回答都很含混,使得读者没有方法判断,也没有精力去买挨个买网卡做实验。
鉴于以上分析,我试用了Madwifi的驱动(http://www.madwifi.org),使用了当前最好买也最便宜(当然假货也最多)的Tp-link 550G 802.11G网卡。这个网卡是TP-link 802.11g的代表产品,是标准PCI接口的,带tp-link的域展功能(将802.11G的有效距离从30、40米扩展到最远108米,是TP-Link的一大独特卖点)。之所以用tp-link,也主要是因为它便宜,好买,对于我们这一下买几十个的规模非常经济。如果改D-link,则每个网卡要贵上一倍。
下面的讲述就不做什么原理分析了,完全按照已经实现的步骤。因此要求读者有最基础的Linux驱动配置知识。所选用的操作系统版本为RedHat 9,内核为2.4.20。对于2.6以上的内核,Madwifi驱动也作了完美支持,读者可以在http://www.madwifi.org找到类似的升级方法。