|
Dennis.Wang (著)
通过自己的摸索和搜索帮助,终于将无线网卡在BLFS下驱动了起来。
记得自己在以前写过一篇关于在ubuntu 6.10下面驱动我的无线网卡netgear wg511 v3.0的文章,因此在这方面有点经验的说。今天在google的时候还把自己当初在ubuntu中文论坛上的发表的那篇给搜出来了,想想当初自己那么菜,还能显摆显摆,感觉有点可笑。这次,我是一个彻底的BLFS分子,搞不定它就让我感觉不应该了。所以,在这信念的驱使下,到底还是让我得偿夙愿了。
首先我不得不提的是我的无线网卡很不幸的没有被内核的prism54支持,因为它只支持wg511 v1.0和v2.0版本的卡,v3.0是made in china版的,不被支持。虽然已经过去好几年了,照理说prism54应该考虑一下扩展,支持一下china版本的v3.0,但是prism54组织似乎并无此意,也许这是浪费时间。因此,只有通过ndiswrapper来使自己的win驱动跑在linux下了。如果想知道自己的无线网卡是否被prism54支持,可以到prism54.org上查询。
这里不得不先说说自己的操作系统环境,内核是2.6.22.12(比较新,2.6.22系列内核的终结篇)。
1. 首先来配置内核,以使内核支持无线网卡:
1) Bus options (PCI, PCMCIA, EISA, MCA, ISA) --->
PCCARD (PCMCIA/CardBus) support --->
<*> PCCard (PCMCIA/CardBus) support --->
<*> CardBus yenta-compatible bridge support
2) Networking --->
Networking support --->
Wireless ---> <*> Improved wireless configuration API
<*> Generic IEEE 802.11 Networking Stack
<*> IEEE 802.11 WEP encryption (802.1x)
3) Device Drivers --->
Network device support --->
Network device support
Wireless LAN ---> Wireless LAN (IEEE 802.11)
Wan interfaces support --->
这里无论是用prism54还是ndiswrapper来驱动无线网卡,这些都是基本必须的。
使用prism54还需选择的选项如下:
Network device support --->
Wireless LAN --->
<*>Intersil Prism GT/Duette/Indigo PCI/Cardbus(也可以选择为M)
为了简便,我都将其编译进了内核,省得配置文件,如果要编译成模块的话,可以修改/etc/sysconfig/modules文件,将例如prism54加入到这里,那么系统在启动的时候,将加载prism54模块,prism54模块位于/lib/modules/2.6.22.12文件夹下。
2. 安装Wireless Tools-28
下载:http://www.hpl.hp.com/personal/J ... ess_tools.28.tar.gz
安装:
tar xvf wireless_tools.28.tar.gz
cd wireless_tools.28.tar.gz
make
make PREFIX=/usr install (as root)
安装这个包的目的是为了使用其安装的iwconfig、iwlist命令。
3. 安装Net-tools-1.60 (可选)
下载地址: http://www.tazenda.demon.co.uk/p ... -tools-1.60.tar.bz2
http://www.linuxfromscratch.org/ ... -1.60-gcc34-3.patch
http://www.linuxfromscratch.org/ ... nel_headers-2.patch
http://www.linuxfromscratch.org/ ... 0-mii_ioctl-1.patch
安装:
patch -Np1 -i ../net-tools-1.60-gcc34-3.patch &&
patch -Np1 -i ../net-tools-1.60-kernel_headers-2.patch &&
patch -Np1 -i ../net-tools-1.60-mii_ioctl-1.patch &&
yes "" | make config &&
sed -i -e 's|HAVE_IP_TOOLS 0|HAVE_IP_TOOLS 1|g' \
-e 's|HAVE_MII 0|HAVE_MII 1|g' config.h &&
sed -i -e 's|# HAVE_IP_TOOLS=0|HAVE_IP_TOOLS=1|g' \
-e 's|# HAVE_MII=0|HAVE_MII=1|g' config.make &&
make
make update (as root)
安装这个包是为了使用比较常用的ifconfig命令等。
注意:这个包里的hostname程序将覆盖掉LFS下的hostname,如果想恢复,可以重新安装Coreutils package,也可以使用coreutils-6.9-suppress_hostname-1.patch这个补丁。(这个补丁我还真没找着)
4. 安装dhcpcd-3.0.19 (可选)
为什么要安装这个包,是为了能配合路由器上的dhcp动态分配IP地址,可以使终端计算机动态获得IP。
我所做的是在路由器上将NB和PC的mac地址和IP绑定,保留了192.168.7.7、192.168.7.15、192.168.7.17地址给两块有线网卡和一块无线网卡。当然了,不安装dhcpcd也是可以的,自己指定IP就不用靠路由来动态分配了。
需要下载两个包: blfs-bootscripts-20070822.tar.bz2 和 dhcpcd-3.0.19.tar.bz2
安装命令如下:
tar xvf dhcpcd-3.0.19.tar.bz2
cd dhcpcd-3.0.19
make
make install (as root)
配置dhcpcd: (可参照http://www.linuxfromscratch.org/blfs/view/svn/connect/dhcpcd.html)
tar xvf blfs-bootscripts-20070822.tar.bz2
cd blfs-bootscripts-20070822
make install-service-dhcpcd
install -v -d /etc/sysconfig/network-devices/ifconfig.eth0 &&
cat > /etc/sysconfig/network-devices/ifconfig.eth0/dhcpcd << "EOF"
ONBOOT="yes"
SERVICE="dhcpcd"
DHCP_START=""
DHCP_STOP="-k"
# Set PRINTIP="yes" to have the script print
# the DHCP assigned IP address
PRINTIP="no"
# Set PRINTALL="yes" to print the DHCP assigned values for
# IP, SM, DG, and 1st NS. This requires PRINTIP="yes".
PRINTALL="no"
EOF
这是一个通过dhcpcd动态给eth0这个设备分配IP的配置方法,为wlan0(一般为一块无线网卡的首选设备标识)配置一样的道理。将eth0改成wlan0就ok。ifconfig.eth0应该是为了配合ifconfig命令使用的,ifconfig eth0 up就能激活eth0,不过据我在ircd的#lfs-support了解到老外说,ifconfig已经不用了,改用ip。ip是强大,不过怎么和ifconfig.eth0配合,费解ing。。。我在使用ifconfig和ip都没有成功激活wlan0,大概配置有问题,为了不浪费时间,索性后来就装了个Wireless Assistant(KDE下的无线工具,很好使的)。
5. 安装Wireless Assistant 0.5.7(KDE可选)
下载地址: http://www.kde-apps.org/content/show.php?content=21832
在这里你会看到这么一段话:
* MAIN REQUIREMENTS:
- wireless-tools 27 or newer (with iwlib)
- dhcpcd or dhclient
- sudo
- wpa_supplicant with wpa_cli for WPA-PSK support
意思是说这个包需要上面几个依赖条件,wireless-tools为了配置无线是必需的,dhcpcd or dhclient就是上面提到过的dhcpcd,sudo是为了方便的使用su命令来使普通用户获得root用户的权限,wpa的这个是无线的加密包。我选择了前三个,因为我在配置无线路由的时候,只用到了WEP加密(或者不用加密),所以不需要wpa这个包。
至于sudo如何安装,在BLFS的教程里说的很明白:
下载地址: http://anduin.linuxfromscratch.o ... udo-1.6.8p12.tar.gz
http://www.linuxfromscratch.org/ ... -envvar_fix-1.patch
安装:
tar xvf sudo-1.6.8p12.tar.gz
cd sudo-1.6.8p12
patch -Np1 -i ../sudo-1.6.8p12-envvar_fix-1.patch &&
./configure --prefix=/usr --libexecdir=/usr/lib \
--enable-noargs-shell --with-ignore-dot --with-all-insults \
--enable-shell-sets-home &&
make
make install (as root)
配置/etc/sudoers
一个典型的例子:
# User alias specification
User_Alias ADMIN = [YourLoginId]
root ALL=(ALL) ALL
# Allow people in group ADMIN to run all commands without a password
ADMIN ALL = NOPASSWD: ALL
6. ndiswrapper 1.49
下载ndiswrapper软件包,可以到http://ndiswrapper.sourceforge.n ... 测越新的版本 好处有三点: 1) 所支持的无线网卡越来越多; 2) 修正了一些bug; 3) 匹配内核的版本。
我切身的体验是以前在用ubuntu的时候,内核版本低,所以用ndiswrapper 1.10是可以的; 现在内核版本高了,1.10就不能用了,make的时候会出错。所以,在选择1.49后还是相当不错的。因此,至于选择哪个ndiswrapper版本,至少要看匹配不匹配内核。
下面以1.49版本为例:
1) 下载完了包后,运行以下命令:
tar xvf ndiswrapper-1.49.tar.gz
cd cd ndiswrapper-1.49
make uninstall (这一步对于第一次安装的用户来说没什么用,主要是为了卸载以前安装过的程序)
make
make install (as root)
至此,ndiswrapper安装完毕。(注: 实际上学会看README or INSTALL 对于安装配置来讲,是非常重要的,上述的命令在INSTALL里都有提及。)
2) 安装wg511的windows驱动:
ndiswrapper -i ~/Driver/netwg511.inf
我的路径是~/Driver,主要能找到netwg511.inf文件就可以。在Driver文件夹下应当不缺少WG511ICB.sys,否则可能会安装失败,我没有试过没有WG511ICB.sys的情况。
ndiswrapper -l (查看驱动是否正确被安装)
如果出现下面的内容,则说明驱动安装成功。
netwg511 : driver installed
device (1260:3890) present
为了进一步确认,运行dmesg,将看到输出的内容中包含如下所示:
ndiswrapper version 1.49 loaded (smp=yes, preempt=no)
ndiswrapper: driver netwg511 (NETGEAR,09/06/2004, 2.1.25) loaded
如果有这些内容,则确信驱动安装真的没问题了。
3) 加载ndiswrapper:
modprobe ndiswrapper
在此之前,运行一下depmod -a似乎有点用处,不过INSTALL里没有提到,做不做都无所谓,看个人兴趣了。
在加载模块的时候,无线网卡的灯应该是有亮光的,至少是闪了,说明模块加载成功了,lsmod可以看到ndiswrapper。
4) 配置wlan0:
这里我对iwconfig的使用不是很顺手,因此我选择了Wireless Assistant(当然需要KDE环境)。它对配置无线网卡很方便,进到软件内后,都有很明确的提示,照着做就是了。
如果用wlan0的话,就是下面几步:
iwlist wlan0 scanning (扫描无线接入点)
iwconfig wlan0 mode managed (设置mode)
iwconfig wlan0 key restricted XXXXX (设置WEP加密)
iwconfig wlan0 essid xxxx (将essid和你的无线路由的ssid设置一致)
dhcpcd wlan0 (激活wlan0,如果是指定固定IP,则ifconfig wlan0 up)
5) 启用wlan0后自动加载ndiswrapper:
ndiswrapper -m
这条命令将在/etc/modprobe.conf里加一条: alias wlan0 ndiswrapper
经过测试,不用在/etc/sysconfig/modules文件里添加 ndiswrapper,系统已可自动加载ndiswrapper。
至此,关于无线网卡的内容完毕。
我的blog: http://hstaotao.spaces.live.com/ ... ,一起提高。 |
|