Ubuntu20.04安装无线网卡驱动教程
因为目前能买到的网卡大部分都是免驱网卡,windows上可以即插即用。但是在ubuntu上免驱网卡仍然需要装驱动,因此需要自己到github上下载别人写好的驱动,然后在本地系统上进行编译。本人在arm64平台(树莓派4b)和x86 64(intel_nuc)上都安装了Ubuntu20.04系统。使用的无线网卡是mercury 的免驱网卡 如果用的其他品牌的无线网卡驱动,可以到相应的github上找。
不管是arm平台还是x86 都可以按如下步骤操作,不过需要提前安装gcc编译器,且对内核进行提前编译,否则会报错 或者编译时缺失库文件。
首先无线网卡插到主机上,使用 lsusb指令 在列出的usb设备中看到类似如下字样则识别到网卡。
BUS 001 Device 007:ID 0bda:c811 Realtek Semiconductor Corp
而输入 lsusb -tv 发现该设备 drive= ,则缺失驱动。那么我们就可以进行驱动安装了
我使用的驱动包是用dkms 进行脚本编译的 ,因此需要先安装dkms编译环境
sudo apt update
sudo apt install build-essential git dkms
然后去github上下载驱动包,可以使用git clone指令进行仓库克隆 也可以直接下载zip压缩包
git clone https://github.com/brektrou/rtl8821CU.git
进入下载的安装包仓库中执行脚本编译
chmod +x dkms-install.sh
sudo ./dkms-install.sh
编译完成后会生成驱动的可执行文件将其注册到驱动列表即可
sudo modprobe 8821cu
此时 lsusb -tv 指令查看网卡驱动情况 如果 drive = rtl8821cu 则成功 (其他驱动则会显示相应驱动的名字)
后记
可能报错情况
1.modprobe: ERROR: could not insert '8821cu': exec format error
注册驱动时出现这个错误 ,我认为是内核版本问题 我在遇到这个问题的时候使用的编译内核版本是 linux5.1 但是 我在树莓派上成功编译并注册时 树莓派的linux内核版本是5.4 因此我将系统内核进行升级到5.4(注意只升级了内核,没升级系统)
内核升级过程:
uname -r #查看内核版本
apt-get install linux-headers-5.4.0-144-generic linux-image-5.4.0-144-generic #安装5.4内核
grub-mkconfig -o /boot/efi/EFI/ubuntu/grub.cfg # 更新启动引导文件 将5.4内核加入引导列表
reboot #重启 在boot界面 选择5.4内核启动
重启后将之前编译的文件删除 sudo make clean
然后重启编译即可 然后插入
如果还是不行则回到5.1内核 进行插入 (启动时你会看到两个内核版本可以选择)
2.缺失内核头文件
进入内核文件夹 make 重启编译即可