1、使用 ndiswrapper,然后用Realtek芯片的Windows驱动程序。很多在Linux没有驱动程序的网卡都可以通过这种方式来驱动,不过一来用ndiswrapper实际上还是用到了close source的驱动程序;二来Windows的驱动程序也不能利用Realtek网卡的丰富功能(包括AP、Ad-hoc等链接方式)。所以这只是最后的选择。viewtopic.php?t=2764 这篇文章提供了使用ndiswrapper的方法。
2、使用 realtek 自己提供的Linux驱动程序。realtek的Linux支持中规中矩,驱动程序也做得不错。不过我们现在用的kernel是 2.6.12 的,使用了新的module格式,驱动程序也不支持。而且这款驱动程序实际上也是close source的,我也不太喜欢用。
3、不过值得庆幸的是,Realtek作为低价位的芯片生产商,永远不乏用户。其中便有geek等级的用户为它编写了Linux下的完全开源的驱动程序,就是rtl8180-sa2400系列的驱程。现在rtl8180-sa2400已经使用了新的架构重新开发,新的驱动可以应用在 2.6.12 的内核上。想要看你的网卡是否被这款驱动程序支持,可以看看他的主页:http://rtl8180-sa2400.sourceforge.net
下面说一下这个驱程的安装要点。
首先,因为我们需要编译内核,所以需要内核的源码支持。而编译内核不能用默认的gcc-4.0版本,我们需要安装gcc-3.4。
代码: 全选
$ sudo apt-get install gcc-3.4 linux-source-2.6.12
$ cd /usr/src
$ sudo tar -jxf linux-source-2.6.12.tar.bz2
$ cd linux-source-2.6.12
$ sudo cp /boot/config-$(uname -r) .config
$ sudo make oldconfig
代码: 全选
$ sudo make bzImage
代码: 全选
$ sudo apt-get install cvs
代码: 全选
kid@venus:~/Build$ cvs -d:pserver:[email protected]:/cvsroot/rtl8180-sa2400 login
Logging in to :pserver:[email protected]:2401/cvsroot/rtl8180-sa2400
CVS password:
然后继续执行:
代码: 全选
kid@venus:~/Build$ cvs -z3 -d:pserver:[email protected]:/cvsroot/rtl8180-sa2400 co -P ieee80211 rtl818x-newstack
cvs checkout: Updating ieee80211
U ieee80211/LICENSE
U ieee80211/Makefile
U ieee80211/README
U ieee80211/ieee80211.h
U ieee80211/ieee80211_crypt.c
U ieee80211/ieee80211_crypt.h
U ieee80211/ieee80211_crypt_ccmp.c
U ieee80211/ieee80211_crypt_tkip.c
U ieee80211/ieee80211_crypt_wep.c
U ieee80211/ieee80211_module.c
U ieee80211/ieee80211_rx.c
U ieee80211/ieee80211_softmac.c
U ieee80211/ieee80211_softmac_wx.c
U ieee80211/ieee80211_tx.c
U ieee80211/ieee80211_wx.c
cvs checkout: Updating rtl818x-newstack
U rtl818x-newstack/AUTHORS
U rtl818x-newstack/CHANGES
U rtl818x-newstack/COPYING
U rtl818x-newstack/INSTALL
U rtl818x-newstack/LICENSE
U rtl818x-newstack/Makefile
U rtl818x-newstack/README
U rtl818x-newstack/README.adhoc
U rtl818x-newstack/README.master
U rtl818x-newstack/a
U rtl818x-newstack/ieee80211.h
U rtl818x-newstack/ieee80211_crypt.h
U rtl818x-newstack/r8180.h
U rtl818x-newstack/r8180_93cx6.c
U rtl818x-newstack/r8180_93cx6.h
U rtl818x-newstack/r8180_core.c
U rtl818x-newstack/r8180_gct.c
U rtl818x-newstack/r8180_gct.h
U rtl818x-newstack/r8180_hw.h
U rtl818x-newstack/r8180_max2820.c
U rtl818x-newstack/r8180_max2820.h
U rtl818x-newstack/r8180_pm.c
U rtl818x-newstack/r8180_pm.h
U rtl818x-newstack/r8180_rtl8225.c
U rtl818x-newstack/r8180_rtl8225.h
U rtl818x-newstack/r8180_rtl8255.c
U rtl818x-newstack/r8180_rtl8255.h
U rtl818x-newstack/r8180_sa2400.c
U rtl818x-newstack/r8180_sa2400.h
U rtl818x-newstack/r8180_wx.c
U rtl818x-newstack/r8180_wx.h
kid@venus:~/Build$
小提示:如果你用的是Realtek 8187芯片(802.11b/g)的网卡,可以checkout rtl8187-newstack,获取8187芯片的驱程。
下面我们就可以开始编译驱动了。
代码: 全选
kid@venus:~/Build$ cd ieee80211/
kid@venus:~/Build/ieee80211$ ls
CVS ieee80211_crypt_tkip.c ieee80211_rx.c ieee80211_wx.c
ieee80211_crypt.c ieee80211_crypt_wep.c ieee80211_softmac.c LICENSE
ieee80211_crypt_ccmp.c ieee80211.h ieee80211_softmac_wx.c Makefile
ieee80211_crypt.h ieee80211_module.c ieee80211_tx.c README
kid@venus:~/Build/ieee80211$ make KSRC=/usr/src/linux-source-2.6.12
代码: 全选
kid@venus:~/Build/ieee80211$ ls *.ko
ieee80211_crypt_ccmp-rtl.ko ieee80211_crypt_tkip-rtl.ko ieee80211-rtl.ko
ieee80211_crypt-rtl.ko ieee80211_crypt_wep-rtl.ko
kid@venus:~/Build/ieee80211$ sudo rm /lib/modules/$(uname -r)/kernel/drivers/net/wireless/ieee80211/* # !!此步危险,请先备份!
kid@venus:~/Build/ieee80211$ sudo cp *.ko /lib/modules/$(uname -r)/kernel/drivers/net/wireless/ieee80211
代码: 全选
kid@venus:~/Build$ cd rtl818x-newstack/
kid@venus:~/Build/rtl818x-newstack$ ls
a ieee80211.h r8180_core.c r8180_max2820.h r8180_rtl8255.h README.adhoc
AUTHORS INSTALL r8180_gct.c r8180_pm.c r8180_sa2400.c README.master
CHANGES LICENSE r8180_gct.h r8180_pm.h r8180_sa2400.h
COPYING Makefile r8180.h r8180_rtl8225.c r8180_wx.c
CVS r8180_93cx6.c r8180_hw.h r8180_rtl8225.h r8180_wx.h
ieee80211_crypt.h r8180_93cx6.h r8180_max2820.c r8180_rtl8255.c README
kid@venus:~/Build/rtl818x-newstack$ make KSRC=/usr/src/linux-source-2.6.12
代码: 全选
kid@venus:~/Build/rtl818x-newstack$ sudo make install KSRC=/usr/src/linux-source-2.6.12
kid@venus:~/Build/rtl818x-newstack$ sudo depmod -ae
下面是这篇文章的最后一步,要把wlan设备填进modprobe的启动参数中。
代码: 全选
kid@venus:~/Build/rtl818x-newstack$ sudo echo "install wlan0 modprobe ieee80211_crypt-rtl && modprobe ieee80211_crypt_wep-rtl && modprobe ieee80211-rtl && modprobe r8180" > /etc/modprobe.d/wireless-r8180
kid@venus:~/Build/rtl818x-newstack$ sudo echo "remove wlan0 modprobe -r r8180 && modprobe -r ieee80211_crypt_wep-rtl && modprobe -r ieee80211-rtl && modprobe -r ieee80211_crypt-rtl" >> /etc/modprobe.d/wireless-r8180
kid@venus:~/Build/rtl818x-newstack$ sudo modprobe wlan0
update: deb包的安装
请首先将 /lib/modules/2.6.12-10-686/kernel/drivers/net/wireless/ieee80211 删除。(注意备份!)
代码: 全选
sudo dpkg -i rtl818x-modules-2.6.12-10-686-i386.deb