最近新入了一个Thinkpad,安装ubuntu16.04之后,不能识别无线网卡,解法如下:
1. 查看无线网卡型号
$ lspci
我无线网卡的型号是Realtek Semiconductor Co., Ltd. Device c821
2. 下载驱动程序,编译内核模块
$ git clone https://github.com/tomaspinho/rtl8821ce
$ cd rtl8821ce
$ chmod +x dkms-install.sh
$ chmod +x dkms-remove.sh
$ sudo ./dkms-install.sh
如果网卡型号和我的不同,可以试试realtek的其它驱动包: git clone https://github.com/lwfinger/rtlwifi_new
3. 加载网卡驱动
查看驱动模块是否被加载
$ lspci -v
这时看到Device c821设备下面有Kernal modeles, 但是没有Moder driver in use, 也就是说模型编出来了,但插入内核失败了,于是手动加载内核模块
$ sudo modprobe 8821ce
此时报错:ERROR:Required key not available,这是由于Ubuntu Kernel 使用 EFI_SECURE_BOOT_SIG_ENFORCE
内核配置,这样会阻止内核载入第三方模块,就是说你自己编的ko模块不能被加载到内核。如果你也遇到了这个问题,解法如下。
4. 修改内核设置,允许加载三方模块
$ sudo apt install mokutil
$ sudo mokutil --disable-validation
此时输入一个8位以上的密码,之后重启系统,出现如下蓝屏,选择Change Secure Boot state
系统会让你输入刚才设置密码中的几个数,界面如下:
后续再选择菜单中的Yes和Reboot,重启后,我编模块就被内核自动加载了,如果加载不了,手动再用modprobe试试看。