以 Broadcom Corporation BCM4311、BCM4312、BCM4313、BCM4321 或 BCM4322 为基础的无线网络卡
2015-02-09 00:00
183 查看
以 Broadcom Corporation BCM4311、BCM4312、BCM4313、BCM4321 或 BCM4322 为基础的无线网络卡
" src="http://static.oschina.net/uploads/img/201502/09231246_xzTl.png" title="" height="15" width="15"> CentOS 对这些芯片组并没有原生的支持。这页的英文版本现时由
Miloš Blažević 维护。
![]() | 注:基于这个 Broadcam 驱动程序的极度限制性条款,ELRepo 软件库的开发者放弃以 rpm 组件来提供它 ―― 因此这份文件被创建的目的是要提供一个全面的驱动程序安装说明。 |
![]() | 注:本作者至今只测试了 Broadcom 的 BCM4311 及 BCM4312 芯片组。 |
以 Broadcom Corporation BCM4311、BCM4312、BCM4313、BCM4321 或 BCM4322 为基础的无线网络卡
第 1 步:辨认无线网络芯片及安装时依赖的组件
第 2 步:下载并解压 Broadcom 驱动程序的压缩档
第 3 步:编译 Broadcom 驱动模块
第 4 步上:将驱动模块装入内核中
第 4 步下:在开机时将驱动模块装入内核中
若要安装以 Broadcom BCM4311、BCM4312、BCM4313、BCM4321 或 BCM4322 为基础的无线网络卡,请遵照以下的步骤:
第 1 步:辨认无线网络芯片及安装时依赖的组件
首先,请确定你是位「拥有 Broadcom BCM43xx 无线网络卡的幸运儿」:[user@host ~]$ /sbin/lspci | grep Broadcom 0b:00.0 Network controller: Broadcom Corporation BCM4312 802.11a/b/g (rev 01)
辨认完无线网络芯片型号之后,请确定你不会欠缺编译及安装时所需的组件:
[root@host]# yum install kernel-headers kernel-devel gcc
当然,假若你要为 Xen 内核(kernel-xen)编译驱动程序,你必须安装 kernel-xen-devel 而不是 kernel-devel。
第 2 步:下载并解压 Broadcom 驱动程序的压缩档
请从Broadcom 的官方网站下载 Broadcom BCM43xx 的 linux 驱动程序压缩档到你的机器并将它解压到 /usr/local/src/hybrid-wl,请随你所需将这个目录的拥有者改为无特权的用户:
[root@host ~]# mkdir -p /usr/local/src/hybrid-wl [root@host hybrid-wl]# cd /usr/local/src/hybrid-wl [root@host hybrid-wl]# tar xvfz /path/to/the/tarball/hybrid-portsrc-x86_64-v5.10.91.9.3.tar.gz(下载档的名称) [root@host hybrid-wl]# chown -R someuser.somegroup /usr/local/src/hybrid-wl
![]() | 注:为什么不随便将它解压到一个位置并保留缺省的拥有者? 原因是上面的做法会把驱动模块的源代码保留在系统上 ―― 在你放置它们的位置 ―― 好让你可以随时按需要创建驱动程序(譬如:你将内核升了级 ―― 因为驱动模块永远根据某个内核来编译),还有,就是你可以用无特权的用户来编译! |
第 3 步:编译 Broadcom 驱动模块
驱动模块可以这样编译:[user@host hybrid-wl]$ make -C /lib/modules/`uname -r`/build/ M=`pwd`
请留意引号(也就反引号)。
现在你很可能会获得一个错误信息,而不是一个编译好的驱动模块(实际上,本作者仍未遇过这个信息以外的情况)。这则信息的内容大致上是:
make: Entering directory `/usr/src/kernels/2.6.18-164.el5-x86_64' LD /tmp/hybrid/hybrid/hybrid/built-in.o CC [M] /tmp/hybrid/hybrid/hybrid/src/wl/sys/wl_linux.o In file included from /tmp/hybrid/hybrid/hybrid/src/wl/sys/wl_linux.c:20: /tmp/hybrid/hybrid/hybrid/src/include/typedefs.h:70: error: conflicting types for ‘bool’ include/linux/types.h:36: error: previous declaration of ‘bool’ was here make[1]: *** [/tmp/hybrid/hybrid/hybrid/src/wl/sys/wl_linux.o] Error 1 make: *** [_module_/tmp/hybrid/hybrid/hybrid] Error 2 make: Leaving directory `/usr/src/kernels/2.6.18-164.el5-x86_64'
正如你所见,
typedefs.h 这个文件的第 70 行出了一个问题。要解决它,请将第 70 行的代码改为注释,好让它变成:
/* #ifndef TYPEDEF_BOOL typedef unsigned char bool; #endif */
你亦可以通过在标头档加入以下内容(勿论这一行是否已经存在)来简单地解决这个问题:
#define TYPEDEF_BOOL
现在,请尝试再次编译驱动模块:
[user@host hybrid-wl]$ make -C /lib/modules/`uname -r`/build/ M=`pwd`
编译器的输出大致上是这样:
make: Entering directory `/usr/src/kernels/2.6.18-164.el5-x86_64' CC [M] /tmp/hybrid/hybrid/hybrid/src/wl/sys/wl_linux.o CC [M] /tmp/hybrid/hybrid/hybrid/src/wl/sys/wl_iw.o CC [M] /tmp/hybrid/hybrid/hybrid/src/shared/linux_osl.o LD [M] /tmp/hybrid/hybrid/hybrid/wl.o Building modules, stage 2. MODPOST CC /tmp/hybrid/hybrid/hybrid/wl.mod.o LD [M] /tmp/hybrid/hybrid/hybrid/wl.ko make: Leaving directory `/usr/src/kernels/2.6.18-164.el5-x86_64'
一旦这个模块被建成,你便可以删除不必要的符号:
[user@host hybrid-wl]$ strip --strip-debug wl.ko
你会发现驱动模块的文件尺寸会明显地缩小(由 2.2MB 降至 1.5MB)。而且,你的驱动模块仍能正常运作
![](http://static.oschina.net/uploads/img/201502/09231248_eHyy.png)
第 4 步上:将驱动模块装入内核中
当你成功地编译了驱动模块后,你便可以将它装入内核中,并设置在开机时自动装入这个驱动程序(要这样做,你必须利用 root 的权限)。当然,做这一切之先,你必须从内核删除现在的无线驱动模块(假如有的话):[root@host ~]# rmmod bcm43xx [root@host ~]# rmmod b43 [root@host ~]# rmmod b43legacy [root@host ~]# rmmod ndiswrapper
现在我们装入驱动模块:
[root@host hybrid-wl]# modprobe wl.ko
你也可采用:
[root@host hybrid-wl]# insmod wl.ko
假如你在无线驱动程序以外没有应用 ndiswrapper 这个内核模块,你可以删除它,但这并非必需的。
第 4 步下:在开机时将驱动模块装入内核中
首先,请将驱动模块的文件复制到一个可以让内核找到它的地方:[root@host hybrid-wl]# cp -vi /usr/local/src/hybrid-wl/wl.ko /lib/modules/`uname -r`/extra/
这样做是为了与其它已经/将会从 kmod 组件安装的外置模块(例如:fuse、ntfs-3g、等)保持一贯性。
按着,请执行:
[root@host ~]# depmod $(uname -r)
以便能创建一个模块的互赖性清单。
编译
/etc/modprobe.d/blacklist 这个文件并加入以下内容:
blacklist bcm43xx blacklist ndiswrapper blacklist b43 blacklist b43legacy
通过这样做,你可以避免这些模块在开机时被装入内核中。此外,假如你在
/etc/modprobe.conf 内有一行是指定无线界面的驱动程序,例如:
alias eth1 bcm43xx 或 alias eth1 b43 或 alias eth1 b43legacy
请将这行注释掉:
#alias eth1 bcm43xx 或 #alias eth1 b43 或 #alias eth1 b43legacy
并为你的无线网络卡加入新的驱动程序别名:
alias eth1 wl
这一切都假设你的无线网络界面设备档是 eth1。
现在,请编译
/etc/modprobe.d/modprobe.conf.dist 这个文件并加入以下内容:
alias ieee80211_crypt_tkip ieee80211_crypt_tkip
alias eth1 wl
现在你的驱动应该在每次开机时都会被装入(当然除了在你安装了新内核之后,到时你必须依照以上步骤将它重新编译)。
相关文章推荐
- 以 Broadcom Corporation BCM4311、BCM4312、BCM4313、BCM4321 或 BCM4322 为基础的无线网络卡
- 以 Broadcom Corporation BCM4311, BCM4312为基础的无线网络卡
- 无线网络基础知识要点概括
- 综合布线基础:无线网络
- 无线网络WPA加密算法基础
- 无线网络基础知识
- debian下配置网络 安装无线网卡驱动 Broadcom BCMXX系列
- WLAN 无线网络基础知识
- 电信CDMA 无线网络优化 基础知识
- 无线网络的一些基础概念
- 无线网络技术基础 01
- WLAN 无线网络 03 - RF 基础
- 综合布线基础:无线网络
- debian下配置网络 安装无线网卡驱动 Broadcom BCMXX系列
- Atitit 物联网之道 艾龙著 attilax著 1. 理论基础(控制理论 信息理论) 2 2. 1.5 物联网的关键技术12 2 2.1. 1.5.1 网络与通信技术12 1.5.2 无线传感
- 计算机网络基础教程 - 计算机网络概述(2) 无线网络与wifi
- 802.11无线网络学习(三):802.11 MAC基础
- 无线网络基础
- 无线网络基础知识
- arch无线网络配置 BCM43142无线网卡