LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 2263|回复: 9

发布: BLFS上成功驱动无线网卡 (希望对大家有所帮助)

[复制链接]
发表于 2007-11-22 16:22:25 | 显示全部楼层 |阅读模式
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/ ... ,一起提高。
  • 发表于 2007-11-22 18:21:12 | 显示全部楼层
    谢谢分享。

    我对无线网络已彻底死心,改用 power line 去也!
    回复 支持 反对

    使用道具 举报

    发表于 2007-11-23 14:49:16 | 显示全部楼层
    或许对我有帮助,感谢楼主!
    回复 支持 反对

    使用道具 举报

     楼主| 发表于 2007-11-23 19:51:00 | 显示全部楼层
    Post by d00m3d;1786260
    谢谢分享。

    我对无线网络已彻底死心,改用 power line 去也!


    d00m3d兄,只因我用本子上网,拽着根长的网线进屋实在是麻烦。买了无线路由,不把无线网卡在BLFS上搞起来实在不甘心。呵呵!
    回复 支持 反对

    使用道具 举报

    发表于 2007-11-24 06:52:50 | 显示全部楼层
    我最初的想法跟你是一樣的,無奈居住環境附近滿佈無線網絡,整天都在 jam 線,不論用哪個 channel,哪個 mode(b/g/super g)都不行,於是買了 10dBi 強力增益天線及 5dBi 接入天線,情況有一點點好轉,但始終會被外界干擾而中途掉線,很不爽! :X

    結果只好用回有線,好處是網絡更穩定更快,但不好的是拖着長長的網線隨處走,同樣不爽,最後也受不了,重金購買 powerline 的 adaptor 利用家電來建立網絡,現在好了,哪個房間只要有電源插都能上網了,既穩定又快速 :)
    回复 支持 反对

    使用道具 举报

     楼主| 发表于 2007-11-24 10:09:13 | 显示全部楼层
    Post by d00m3d;1786955
    我最初的想法跟你是一樣的,無奈居住環境附近滿佈無線網絡,整天都在 jam 線,不論用哪個 channel,哪個 mode(b/g/super g)都不行,於是買了 10dBi 強力增益天線及 5dBi 接入天線,情況有一點點好轉,但始終會被外界干擾而中途掉線,很不爽! :X

    結果只好用回有線,好處是網絡更穩定更快,但不好的是拖着長長的網線隨處走,同樣不爽,最後也受不了,重金購買 powerline 的 adaptor 利用家電來建立網絡,現在好了,哪個房間只要有電源插都能上網了,既穩定又快速 :)


    好家伙,too strong.  以前我听说过电力网,但是从没有亲眼看到。满布无线网络,真的很恐怖噢!莫非不用自己申请宽带,弄块无线网卡就可以接入别人的无线网络了?如果可以,倒是挺省钱的嘛! ;)
    回复 支持 反对

    使用道具 举报

    发表于 2007-11-25 11:22:10 | 显示全部楼层
    這是我的 T41 ThinkPad 在 xp 下搜到家裡附近的無線網絡,共三頁有多(屏蔽了 ssid 及 mac 地址)!

    你說的不錯,是可以佔用別人的網絡的,尤其是哪些不設防,既不加密又不用 mac filter 的傢伙,但又有啥用呢?自己家中最強最優質的網絡都不穩定,能指望別人的網絡會好嗎?一般數分鐘便會斷掉,並非因為糟發現後連線被拒,而是連線質量太差,過多的網絡下互相干擾!

    本帖子中包含更多资源

    您需要 登录 才可以下载或查看,没有帐号?注册

    x
    回复 支持 反对

    使用道具 举报

    发表于 2007-11-25 21:27:08 | 显示全部楼层
    家里用路由器布一个简单的星形有线网不就行了,每个房间一个结点。
    回复 支持 反对

    使用道具 举报

    发表于 2007-11-26 19:34:06 | 显示全部楼层
    建星形有线网就等於要到处安装网线了。。。
    回复 支持 反对

    使用道具 举报

    发表于 2007-11-26 21:45:16 | 显示全部楼层
    收藏!等哪天中上福彩,买个本本就能用上了 :Coffee:
    回复 支持 反对

    使用道具 举报

    您需要登录后才可以回帖 登录 | 注册

    本版积分规则

    快速回复 返回顶部 返回列表