歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux基礎 >> Linux教程 >> Fedora 16下編譯安裝無線網卡驅動

Fedora 16下編譯安裝無線網卡驅動

日期:2017/2/28 15:55:46   编辑:Linux教程

大學裡不知有多少開源愛好者,在為不同版本的Linux驅動而頭疼。特別是像我這裡用校園網的情況,有線上網必須要安

裝“星空極速”這個垃圾軟件撥號才能上網。想用無線,用的Fedora又不像Ubuntu那樣有默認無線網卡驅動,所以還要自己下載編

譯安裝。本以為下載,編譯一下不就行了?可真正做的時候還真沒那麼容易。鑒於今晚終於將數星期努力付諸實踐並取得成功,個

人把安裝過程記錄一下。一來幫住遇到同樣情況的小白們,發揚開源社區精神。二來抒發一下終於能在linux裡上網的激動心情。。

(高手莫噴阿。。。。)。

OK,廢話完畢,進入正題。

首先說明,我的無線網卡是Broadcom Corporation BCM4313 ,系統是DVD版本Linux fedora 16 3.1.0-7.fc16.i686.PAE完全

安裝版。(這裡建議最好安裝完全版,因為編譯環境需要GCC,kernel-headers,kernel-devel. PAE版本的還需要kernel-PAE-

devel。如果安裝的是桌面版的或者沒有選擇安裝這些,就需要先手動安裝,相當麻煩的)。

命令行下安裝驅動應該知道基本的復制,解壓,文本編輯命令。(你要是還不知道這些,就請先看看基礎命令再來聯網吧!)

一:確認無線網卡 [....]# lspci -vnn|grep 14e4

03:00.0 Network controller [0280]: Broadcom Corporation BCM4313 802.11b/g LP-PHY [14e4:4727] (rev 01)

這是我的無線網卡信息

二:安裝編譯環境 [....]# yum install kernel-headers kernel-devel gcc

這裡要提一下,可能會遇到很尴尬的問題:yum安裝是需要聯網的,而我們正在做的事就是想讓系統連上網。所以我前面說最好安裝完全版的系統,這樣編譯環境就已經配置好了。再說作為練習機,最好是安裝所有的軟件。

三:下載驅動,解壓到 /usr/local/src/

我的驅動壓縮包是從這裡下載的http://www.broadcom.com/support/802.11/linux_sta.php

四:編譯 進入解壓後的目錄 ["這裡是解壓後的目錄"]# make

這裡應該會出現錯誤如下

KBUILD_NOPEDANTIC=1 make -C /lib/modules/`uname -r`/build M=`pwd`
make[1]: 進入目錄“/usr/src/kernels/3.1.0-7fc16.i686.PAE”
LD /usr/local/src/hybrid-wl/built-in.o
CC [M] /usr/local/src/hybrid-wl/src/shared/linux_osl.o
CC [M] /usr/local/src/hybrid-wl/src/wl/sys/wl_linux.o
/usr/local/src/hybrid-wl/src/wl/sys/wl_linux.c: 在函數‘wl_attach’中:
/usr/local/src/hybrid-wl/src/wl/sys/wl_linux.c:485:3: 錯誤:隱式聲明函數‘init_MUTEX’ [-Werror=implicit-function-declaration]
cc1:有些警告被當作是錯誤


make[2]: *** [/usr/local/src/hybrid-wl/src/wl/sys/wl_linux.o] 錯誤 1
make[1]: *** [_module_/usr/local/src/hybrid-wl] 錯誤 2
make[1]: 離開目錄“/usr/src/kernels/3.1.0-7fc16.i686.PAE”
make: *** [all] 錯誤 2

解決方法為:[....]# vi /src/wl/sys/wl_linux.c

進入文本編輯,找到init_MUTEX(&wl->sem).....................這個,需要慢慢找,耐心。。。。

改為sema_init(&wl->sem,1)

並在下一行加上 :

#ifndef init_MUTEX
sema_init(&wl->sem,1);
#else
init_MUTEX(&wl->sem);
#endif...............................................................加的這段,有點編程基礎的應該明白吧。

保存退出。重新編譯。

這樣弄完,編譯應該沒問題了。要是還有問題,那估計是上面那個字符打錯了,注意細節!!!


五:後續工作 進入目錄 # insmod wl.ko

應該會出現"error insort 'wl.ko'............."這樣的錯誤。

解決方法:目錄 # cp wl.ko /lib/modules/3.1.0-7.fc16.i686.PAE/kernel/net/wireless/

之後重復 insmod wl.ko

然後 #depmod -a

#modprobe wl

重啟

#echo modprobe wl>>/etc/rc.local


之後。。。。。。。。。。。。。。驚喜!!!!!!!!!!


後記:Fedora 15與16有繼承關系,在15中應該也行、、、、、、、

Copyright © Linux教程網 All Rights Reserved