Arch Linux 内核更新 修复无线模块rtl8821ce编译失败的问题

https://www.hcaijin.com/kernel-upgrade-fix-rtl8821ce/

查看无线驱动信息

通过ip l可以看到只有有线网卡

1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
2: enp3s0: <BROADCAST,MULTICAST> mtu 1500 qdisc fq_codel state DOWN mode DEFAULT group default qlen 1000
    link/ether 8c:16:45:3f:68:0d brd ff:ff:ff:ff:ff:ff

 

查看无线网卡驱动,找到相应的驱动去下载就好了

lspci | grep -i 'newwork'

Network controller: Realtek Semiconductor Co., Ltd. RTL8821CE 802.11ac PCIe Wireless Network Adapter

 

下载无线驱动源码

git clone https://github.com/endlessm/linux

由于这个项目特别的大,这里只需要下载drivers/net/wireless/rtl8821ce

编译

修改Makefile

这里需要修改Makefile中TopDIR变量的值为当前路径,否则会提示错误退出

cd drivers/net/wireless/rtl8821ce
sed -i 's/export TopDIR ?=/export TopDIR ?= $(shell pwd)/g' Makefile

 

执行make

在最新的内核版本(4.16.9-1-ARCH)下编译失败,提示如下:

graz@graz ~/Source/driver_net_wireless/rtl8821ce % make
/usr/bin/make ARCH=x86_64 CROSS_COMPILE= -C /lib/modules/4.16.9-1-ARCH/build M=/home/graz/Source/driver_net_wireless/rtl8821ce  modules
make[1]: Entering directory '/usr/lib/modules/4.16.9-1-ARCH/build'
  CC [M]  /home/graz/Source/driver_net_wireless/rtl8821ce/core/rtw_cmd.o
In file included from ./include/linux/list.h:9,
                 from ./include/linux/module.h:9,
                 from /home/graz/Source/driver_net_wireless/rtl8821ce/include/basic_types.h:81,
                 from /home/graz/Source/driver_net_wireless/rtl8821ce/include/drv_types.h:31,
                 from /home/graz/Source/driver_net_wireless/rtl8821ce/core/rtw_cmd.c:22:
./include/linux/kernel.h:6:10: fatal error: stdarg.h: No such file or directory
 #include <stdarg.h>
          ^~~~~~~~~~
compilation terminated.

 

通过locate stdarg.h找到头文件 “/usr/lib/gcc/x86_64-pc-linux-gnu/8.1.0/include/stdarg.h”

ln -s /usr/lib/gcc/x86_64-pc-linux-gnu/8.1.0/include/stdarg.h include/

 

软链接创建好后,就可以执行make编译成功

安装

sudo make install
modprobe 8821ce

最后,没有报错的话,通过ip l 就可以找到这个无线网卡了

1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
2: enp3s0: <BROADCAST,MULTICAST> mtu 1500 qdisc fq_codel state DOWN mode DEFAULT group default qlen 1000
    link/ether 8c:16:45:3f:68:0d brd ff:ff:ff:ff:ff:ff
3: wlp5s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP mode DORMANT group default qlen 1000
    link/ether 70:c9:4e:d8:6d:01 brd ff:ff:ff:ff:ff:ff

 

  • 4
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
首先,真实的这是我踩了4天的坑,新入手的 Thinkpad E470C i5-6125U 商务极速版 一块ssd256G(我不是打广告哈),我是想吐槽它,因为涉及的是网,所以直接说它的以太网(就是有线,再白话文点就是插网线的驱动网)是集成的网卡rlt8111/8618/8411,下面划重点啦哈!!!【敲黑板,duang duang duang】无线网是 Retaltek Semicondutor Co. Ltd Device c821【就是rtl8821ce】【Retaltek有官网说明】,没错就是这个坑比的网卡,2017年9月04一位外国友人在unix&linux;的官网上写道【Your wireless device is a Realtek RTL8821CE that is not yet supported in Linux. I would contact Lenovo about a replacement for your laptop that is made by Intel. Lenovo uses a whitelist in the BIOS and they will only boot if a supported wireless card is present in the internal slot】就是告诉你linux现在不支持这个型号的网卡,nmm这还搞什么搞?我气得想退货,反正我还没到7天无理由退货,我女票也在旁边说退了吧,这花钱买个不好使的,咋用?【没绣啊】但是我想作为一名理科男中的IT男怎么能被这点困难吓退?没有困难要制造困难再去解决,有困难就要埋头苦干的去解决困难,正在我沉浸在着解决这个困难的时候大家对我投来各种羡慕的幻想中,女票一巴掌打在我的头上!!!吃饭。。。想啥美事呢,这天还没黑呢。东北的女人果然惹不起,乖乖吃完饭继续来战这个问题。【都是一个一个字敲出来的大家就当娱乐一下,别紧张下面一定能解决这个问题】【这个很重要先在Bios里面把secrety root 设置成disable 】

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值