Centos7.4.1708 安裝usb無限網絡卡驅動
今天總結一下前幾天折騰的usb無線網絡卡驅動。
一、確定網絡卡驅動
實驗機器核心版本資訊如下:
[[email protected] ~]# 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
[[email protected] ~]#
當拿到usb網絡卡,第一件事情就是確定無限網絡卡的驅動,如果比較新的網絡卡,驅動可能不太好找或者不穩定,這是在linux下面搞驅動的痛苦。通過lsusb命令檢視驅動:
[[email protected] ~]#
[[email protected] ~]# 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
[ [email protected] ~]#
通過上面命令可知:Bus 002 Device 003: ID 0bda:8179 Realtek Semiconductor Corp. RTL8188EUS 802.11n Wireless
網絡卡晶片型號是RTL8188EUS,這種網絡卡屬於比較舊的,驅動還是比較容易找到,如果大家找不到,可以去這裡下載,我已經上傳到csdn中。
二、編譯並安裝驅動
2.1、編譯安裝
注意,不同核心版本驅動檔案.ko是不相容,即使是小版本號不一致也是不行,都需要自己編譯才可以。執行make && make install命令,我在編譯過程中沒有出現任何問題
[[email protected] rtl8188EUS_rtl8189ES_linux_v4.1.8_9499.20131104]#
[[email protected] 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'
[[email protected] rtl8188EUS_rtl8189ES_linux_v4.1.8_9499.20131104]#
[[email protected] 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
[[email protected] rtl8188EUS_rtl8189ES_linux_v4.1.8_9499.20131104]#
2.2、載入、解除安裝驅動
make install只是把驅動檔案放到了目錄中,但是還沒有進行載入。驅動載入使用insmod,解除安裝驅動使用rmmod,如下所示:
[[email protected] rtl8188EUS_rtl8189ES_linux_v4.1.8_9499.20131104]# cd /lib/modules/3.10.0-693.21.1.el7.x86_64/kernel/drivers/net/wireless/
[[email protected] wireless]# insmod 8188eu.ko
[[email protected] 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訊號掃描
[[email protected] 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.
[[email protected] 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]:
[[email protected] wlan0]#
[[email protected] wlan0]# wpa_passphrase "MF910S_BDFEDF" "8AJ8ACQDDQ"
network={
ssid="MF910S_BDFEDF"
#psk="8AJ8ACQDDQ"
psk=7b19b5ebf95d70e973e9b0040eae1f104aa01428b4e17748bc527b71dc028f97
}
[[email protected] wlan0]#
將輸入內容追加到檔案/etc/wpa_supplicant/wpa_supplicant.conf檔案末尾,並新增幾項配置,具體如下:
[[email protected] ~]#
[[email protected] ~]# 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、建立配置網絡卡配置檔案
[[email protected] ~]# cat /etc/sysconfig/network-scripts/ifcfg-enp0s29u1u2
#DHCP client
DEVICE=enp0s29u1u2
BOOTPROTO=dhcp
ONBOOT=yes
ssid="MF910S_BDFEDF"
#psk="8AJ8ACQDDQ"
psk=7b19b5ebf95d70e973e9b0040eae1f104aa01428b4e17748bc527b71dc028f97
WPA=yes
[[email protected] ~]#
其中ssid、psk均和上一步驟保持一致。
3.2.3、連線wifi
[[email protected] ~]# 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
[[email protected] ~]#
當通過wpa_supplicant連線的時候提示:Failed to initialize driver interface。由此可知當前網絡卡不支援nl80211驅動。瞬間陷入苦惱,經過一番谷歌,得知wpa_supplicat還支援另外一種模式,WEXT(Wireless Extensions),可以通過命令列引數-Dwext指定該模式,因此抱著嘗試心態,試了一下:
[[email protected] ~]# 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
[[email protected] ~]#
[[email protected] ~]#
[[email protected] ~]#
雖然上面有警告資訊,但是通過iwconfig檢視,發現連線成功:
[[email protected] ~]# iwconfig
lo no wireless extensions.
enp0s29u1u2 IEEE 802.11bgn ESSID:"MF910S_BDFEDF" Nickname:"<[email protected]>"
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.
[[email protected] ~]#
當出現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方式。