Centos7 Virtualbox虚拟机安装Tenda U12 11AC USB无线网卡驱动

来源:互联网 发布:淘宝店铺被扣24分 编辑:程序博客网 时间:2024/04/27 19:51


系统:Centos7 内核版本 3.10.0-693.5.2.el7.x86_64

打算尝试下无线破解,因为虚拟机无法识别电脑自带的无线网卡,所以买了一个USB无线网卡U12

编译驱动时,提示未定义IEEE80211_BAND_2GHZ,这是由于U12的驱动基于linux 无线框架,用到了

linux内核中的cfg80211和 mac80211模块,最后折腾了几个小时,重新编译内核总算是编译通过,特此纪录。

1、确保虚拟机能够识别到usb设备

在vritualbox “设置”-》“USB设备”中添加usb设备,提示需要安装 “VirtualBox Extension Pack 增强工具包”

参考Virtualbox如何安装增强工具包,安装完成后插入usb无线网卡,在“设置”“usb设备”添加usb设备



然后启动虚拟机,插入usb无线网卡,执行dmesg,可以发现usb已经识别到:

[  343.627966] usb 1-1: new high-speed USB device number 2 using xhci_hcd[  343.931669] usb 1-1: New USB device found, idVendor=2604, idProduct=0012[  343.931679] usb 1-1: New USB device strings: Mfr=1, Product=2, SerialNumber=3[  343.931684] usb 1-1: Product: 802.11n NIC[  343.931688] usb 1-1: Manufacturer: Realtek[  343.931691] usb 1-1: SerialNumber: 123456

2、编译光盘中的无线驱动

2.1、解压光盘中无线驱动资料

Tenda/linux/RTL8812AU_linux_v5.1.5_19247.20160830.zip

2.2、编译驱动源码

阅读ReleaseNotes.pdf,注意该驱动支持的内核版本为Linux (kernel 2.6.18 ~ 4.4),检查下当前系统内核版本:
[vagrant@localhost ~]$ uname -r3.10.0-693.5.2.el7.x86_64
阅读install.sh,可以发现将driver目录下的文件解压后,执行make即可
[vagrant@localhost rtl8812AU_linux_v5.1.5_19247.20160830]$ lsclean  core  hal  ifcfg-wlan0  include  Kconfig  Makefile  os_dep  platform  runwpa  wlan0dhcp[vagrant@localhost rtl8812AU_linux_v5.1.5_19247.20160830]$ make
编译时报错,IEEE80211_BAND_2GHZ未定义,如之前分析,这是由于U12基于linux无线框架,需要内核中包含cfg80211和mac80211模块
所以需要重新编译内核

2.3、重新下载内核并编译

2.3.1 、查看当前内核版本并下载kernel源码(解压到/usr/src/kernels/目录下),重新编译

[vagrant@localhost kernels]$ uname -r3.10.0-693.5.2.el7.x86_64[vagrant@localhost tenda]$ wget https://www.kernel.org/pub/linux/kernel/v3.0/linux-3.10.69.tar.gz[vagrant@localhost tenda]$ tar -zxvf linux-3.10.69.tar.gz -C /usr/src/kernels/[vagrant@localhost tenda]$ cd  /usr/src/kernels/[vagrant@localhost linux-3.10.69]$ cp /boot/config-3.10.0-693.5.2.el7.x86_64 .config[vagrant@localhost linux-3.10.69]$ make menuconfig[vagrant@localhost linux-3.10.69]$ make;make modules_install;make install;
make menuconfig时检查下cfg80211和mac80211是否有编译到(我选择了编译成模块,当然也可以直接编译进内核)
在“networking”-》“wireless”下


2.3.2、修改内核启动项,使用新的内核

查看启动项 cat /boot/grub2/grub.cfg | grep 3.10.69设置默认启动项 grub2-set-default "CentOS Linux (3.10.69) 7 (Core)"查看默认启动项 grub2-editenv list生成配置 grub2-mkconfig -o /boot/grub2/grub.cfg

2.4、重启系统,编译无线driver然后安装相关模块:

insmod /lib/modules/3.10.69/kernel/net/rfkill/rfkill.koinsmod /lib/modules/3.10.69/kernel/net/wireless/cfg80211.koinsmod /lib/modules/3.10.69/kernel/net/mac80211/mac80211.koinsmod 8812au.ko
最后插入然后拔掉网卡,dmesg可以看到如下内容,说明驱动安装成功了
[  570.309630] usb 1-1: USB disconnect, device number 2[  570.309681] RTW: +rtw_dev_remove[  570.309683] RTW: rtw_wdev_unregister(wdev=ffff88003618c000)[  570.309729] RTW: rtw_ndev_notifier_call(wlp0s12u1) state:6[  570.309741] RTW: rtw_ndev_uninit(wlp0s12u1) if1[  570.316987] RTW: rtw_ndev_notifier_call(wlp0s12u1) state:17[  570.316992] RTW: rtw_wiphy_unregister(phy0)[  570.317036] RTW: rtw_usb_primary_adapter_deinit(wlp0s12u1)[  570.317037] RTW: rtw_dev_unload: bup==_FALSE[  570.317041] RTW: +r871xu_dev_remove, hw_init_completed=0[  570.317101] RTW: WARN free_recv_skb_queue not empty, 8[  570.317113] RTW: rtw_wdev_free(wdev=ffff88003618c000)[  570.317114] RTW: rtw_wiphy_free(phy0)[  570.317121] RTW: -r871xu_dev_remove, done