Centos7.4.1708 安裝usb無限網卡驅動

今天總結一下前幾天折騰的usb無線網卡驅動。

一、確定網卡驅動

實驗機器內核版本信息如下:

[root@localhost ~]# uname -a
Linux localhost.localdomain 3.10.0-693.21.1.el7.x86_64 #1 SMP Sat Jun 2 02:26:41 CST 2018 x86_64 x86_64 x86_64 GNU/Linux
[root@localhost ~]# 

當拿到usb網卡,第一件事情就是確定無限網卡的驅動,如果比較新的網卡,驅動可能不太好找或者不穩定,這是在linux下面搞驅動的痛苦。通過lsusb命令查看驅動:

​
[root@localhost ~]# 
[root@localhost ~]# lsusb
Bus 002 Device 003: ID 0bda:8179 Realtek Semiconductor Corp. RTL8188EUS 802.11n Wireless Network Adapter
Bus 002 Device 002: ID 8087:0024 Intel Corp. Integrated Rate Matching Hub
Bus 002 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 001 Device 004: ID 413c:a001 Dell Computer Corp. Hub
Bus 001 Device 003: ID 0424:2512 Standard Microsystems Corp. USB 2.0 Hub
Bus 001 Device 002: ID 8087:0024 Intel Corp. Integrated Rate Matching Hub
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
[root@localhost ~]# 

通過上面命令可知:Bus 002 Device 003: ID 0bda:8179 Realtek Semiconductor Corp. RTL8188EUS 802.11n Wireless
網卡芯片型號是RTL8188EUS,這種網卡屬於比較舊的,驅動還是比較容易找到,如果大家找不到,可以去這裏下載,我已經上傳到csdn中。

二、編譯並安裝驅動

2.1、編譯安裝

注意,不同內核版本驅動文件.ko是不兼容,即使是小版本號不一致也是不行,都需要自己編譯纔可以。執行make && make install命令,我在編譯過程中沒有出現任何問題

[root@localhost rtl8188EUS_rtl8189ES_linux_v4.1.8_9499.20131104]# 
[root@localhost rtl8188EUS_rtl8189ES_linux_v4.1.8_9499.20131104]# make
make ARCH=x86_64 CROSS_COMPILE= -C /lib/modules/3.10.0-693.21.1.el7.x86_64/build M=/root/wlan0/rtl8188EUS_rtl8189ES_linux_v4.1.8_9499.20131104  modules
make[1]: Entering directory `/usr/src/kernels/3.10.0-693.el7.x86_64'
  CC [M]  /root/wlan0/rtl8188EUS_rtl8189ES_linux_v4.1.8_9499.20131104/core/rtw_cmd.o
  CC [M]  /root/wlan0/rtl8188EUS_rtl8189ES_linux_v4.1.8_9499.20131104/core/rtw_security.o
  CC [M]  /root/wlan0/rtl8188EUS_rtl8189ES_linux_v4.1.8_9499.20131104/core/rtw_debug.o
  CC [M]  /root/wlan0/rtl8188EUS_rtl8189ES_linux_v4.1.8_9499.20131104/core/rtw_io.o
  CC [M]  /root/wlan0/rtl8188EUS_rtl8189ES_linux_v4.1.8_9499.20131104/core/rtw_ioctl_query.o
  CC [M]  /root/wlan0/rtl8188EUS_rtl8189ES_linux_v4.1.8_9499.20131104/core/rtw_ioctl_set.o
  CC [M]  /root/wlan0/rtl8188EUS_rtl8189ES_linux_v4.1.8_9499.20131104/core/rtw_ieee80211.o
  。。。
  Building modules, stage 2.
  MODPOST 1 modules
  CC      /root/wlan0/rtl8188EUS_rtl8189ES_linux_v4.1.8_9499.20131104/8188eu.mod.o
  LD [M]  /root/wlan0/rtl8188EUS_rtl8189ES_linux_v4.1.8_9499.20131104/8188eu.ko
make[1]: Leaving directory `/usr/src/kernels/3.10.0-693.el7.x86_64'
[root@localhost rtl8188EUS_rtl8189ES_linux_v4.1.8_9499.20131104]#
[root@localhost rtl8188EUS_rtl8189ES_linux_v4.1.8_9499.20131104]# make install
install -p -m 644 8188eu.ko  /lib/modules/3.10.0-693.21.1.el7.x86_64/kernel/drivers/net/wireless/
/sbin/depmod -a 3.10.0-693.21.1.el7.x86_64
[root@localhost rtl8188EUS_rtl8189ES_linux_v4.1.8_9499.20131104]# 

2.2、加載、卸載驅動

make install只是把驅動文件放到了目錄中,但是還沒有進行加載。驅動加載使用insmod,卸載驅動使用rmmod,如下所示:

[root@localhost rtl8188EUS_rtl8189ES_linux_v4.1.8_9499.20131104]# cd /lib/modules/3.10.0-693.21.1.el7.x86_64/kernel/drivers/net/wireless/
[root@localhost wireless]# insmod 8188eu.ko  
[root@localhost wireless]#

當加載完驅動之後,如何確定我們的驅動是否好用?輸入ifconfig -a 或者iwconfig,如果多一個網卡則表示驅動已經可以正常使用,例如:

enp0s29u1u2: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet6 fe80::2bb:5ff:fe00:5a76  prefixlen 64  scopeid 0x20<link>
        ether 00:bb:05:00:5a:76  txqueuelen 1000  (Ethernet)
        RX packets 11  bytes 23713 (23.1 KiB)
        RX errors 0  dropped 2  overruns 0  frame 0
        TX packets 1  bytes 3942 (3.8 KiB)
        TX errors 0  dropped 5 overruns 0  carrier 0  collisions 0

三、連接網絡

3.1、掃描wifi信號

在連接網絡之前,需要先執行ifconfig enp0s29u1u2 up 激活網卡。

通過名iwlist scanning進行wifi信號掃描

[root@localhost wireless]# iwlist scanning
lo        Interface doesn't support scanning.

enp0s29u1u2  Scan completed :
          Cell 01 - Address: 74:4A:A4:BD:FE:DF
                    ESSID:"MF910S_BDFEDF"
                    Protocol:IEEE 802.11bgn
                    Mode:Master
                    Frequency:2.462 GHz (Channel 11)
                    Encryption key:on
                    Bit Rates:72 Mb/s
                    Extra:rsn_ie=30140100000fac040100000fac040100000fac020000
                    IE: IEEE 802.11i/WPA2 Version 1
                        Group Cipher : CCMP
                        Pairwise Ciphers (1) : CCMP
                        Authentication Suites (1) : PSK
                    Quality=100/100  Signal level=97/100  
                    Extra:fm=0003          
em1       Interface doesn't support scanning.

em2       Interface doesn't support scanning.
[root@localhost wireless]# 

當掃描出wifi信號則表示我們驅動是完全可用的。

3.2 鏈接wifi

目前有兩種方式連接wifi信號:iwconfig、wpa_supplicant。這兩種方式主要區別(非常重要)

命令 加密方式 支持驅動
iwconfig 只支持wep,不支持wpa/wpa2 幾乎所有驅動
wpa_supplicant 支持wep,wpa/wpa2 部分驅動不支持

通過上表可知,大部分wifi加密方式都是wpa/wpa2,因此只能使用wpa_supplicant方式。如果wifi是無密碼的,那麼使用這兩種命令都是可以的。


3.2.1、生成配置文件

首先通過wpa_passphrase命令行生成配置項,wpa_passphrase [essid] [password]:

[root@localhost wlan0]# 
[root@localhost wlan0]# wpa_passphrase "MF910S_BDFEDF" "8AJ8ACQDDQ"
network={
        ssid="MF910S_BDFEDF"
        #psk="8AJ8ACQDDQ"
        psk=7b19b5ebf95d70e973e9b0040eae1f104aa01428b4e17748bc527b71dc028f97
}
[root@localhost wlan0]# 

將輸入內容追加到文件/etc/wpa_supplicant/wpa_supplicant.conf文件末尾,並新增幾項配置,具體如下:

[root@localhost ~]# 
[root@localhost ~]# vi /etc/wpa_supplicant/wpa_supplicant.conf 
ctrl_interface=/var/run/wpa_supplicant
ctrl_interface_group=wheel

network={
        ssid="MF910S_BDFEDF"
        #psk="8AJ8ACQDDQ"
        psk=7b19b5ebf95d70e973e9b0040eae1f104aa01428b4e17748bc527b71dc028f97
        proto=RSN
        key_mgmt=WPA-PSK
        pairwise=CCMP TKIP
        group=CCMP TKIP
}

新增配置項爲,proto,key_mgmt,pariwise,group(這幾項我並清楚是什麼意思,也是從國外網站複製出來的)。


3.2.2、創建配置網卡配置文件

[root@localhost ~]# cat /etc/sysconfig/network-scripts/ifcfg-enp0s29u1u2 
#DHCP client
DEVICE=enp0s29u1u2
BOOTPROTO=dhcp
ONBOOT=yes
ssid="MF910S_BDFEDF"
#psk="8AJ8ACQDDQ"
psk=7b19b5ebf95d70e973e9b0040eae1f104aa01428b4e17748bc527b71dc028f97
WPA=yes
[root@localhost ~]# 

其中ssid、psk均和上一步驟保持一致。

3.2.3、連接wifi


[root@localhost ~]# wpa_supplicant -ienp0s29u1u2 -B -c /etc/wpa_supplicant/wpa_supplicant.conf
Successfully initialized wpa_supplicant
nl80211: Driver does not support authentication/association or connect commands
enp0s29u1u2: Failed to initialize driver interface
[root@localhost ~]# 

  當通過wpa_supplicant連接的時候提示:Failed to initialize driver interface。由此可知當前網卡不支持nl80211驅動。瞬間陷入苦惱,經過一番谷歌,得知wpa_supplicat還支持另外一種模式,WEXT(Wireless Extensions),可以通過命令行參數-Dwext指定該模式,因此抱着嘗試心態,試了一下:

[root@localhost ~]# wpa_supplicant  -Dwext  -ienp0s29u1u2 -B -c /etc/wpa_supplicant/wpa_supplicant.conf
Successfully initialized wpa_supplicant
rfkill: Cannot get wiphy information
ioctl[SIOCSIWMODE]: Operation not permitted
ioctl[SIOCSIWAP]: Operation not permitted
[root@localhost ~]# 
[root@localhost ~]# 
[root@localhost ~]# 

雖然上面有警告信息,但是通過iwconfig查看,發現連接成功:

[root@localhost ~]# iwconfig
lo        no wireless extensions.
enp0s29u1u2  IEEE 802.11bgn  ESSID:"MF910S_BDFEDF"  Nickname:"<WIFI@REALTEK>"
          Mode:Managed  Frequency:2.462 GHz  Access Point: 74:4A:A4:BD:FE:DF   
          Bit Rate:72.2 Mb/s   Sensitivity:0/0  
          Retry:off   RTS thr:off   Fragment thr:off
          Encryption key:****-****-****-****-****-****-****-****   Security mode:open
          Power Management:off
          Link Quality=88/100  Signal level=96/100  Noise level=0/100
          Rx invalid nwid:0  Rx invalid crypt:0  Rx invalid frag:0
          Tx excessive retries:0  Invalid misc:0   Missed beacon:0
em1       no wireless extensions.
em2       no wireless extensions.
[root@localhost ~]# 

當出現Mode:Managed Frequency:2.462 GHz Access Point: 74:4A:A4:BD:FE:DF,則表示連接成功,接下來就可以通過dhclient獲取ip了

四、總結

通過這次經歷,加深了iwconfig和wpa_supplicant區別(大坑),同時瞭解到nl80211和WEXT兩種不同驅動模塊。wpa_supplicant默認是通過nl80211方式,當這種方式提示失敗後,方可嘗試WEXT方式。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章