Linux|centos7操作系统|rtl8188gu芯片的网卡驱动使用DKMS安装管理

前言:

DKMS是一个外置模块管理工具,可以自动build,安装各类驱动

DKMS (Dynamic Kernel Module Support) 是一种框架,用于在 Linux 操作系统中构建和维护内核模块。内核模块是 Linux 内核的一部分,它们提供了许多功能,例如硬件驱动程序、网络协议栈扩展、文件系统等等。DKMS 简化了内核模块的安装和升级过程,可以自动地重新编译内核模块以适应新的内核版本。

在 DKMS 中,每个内核模块都被视为一个源代码包,并通过一个称为 dkms.conf 的配置文件进行管理。该配置文件指定了源代码的位置、编译和安装模块所需的命令,以及其他必要的信息。当内核更新时,DKMS 会自动重建和安装内核模块,以确保它们与新内核版本兼容。

DKMS 还允许用户创建和安装第三方内核模块,以扩展 Linux 内核的功能。这些模块可以从官方仓库或其他来源获得。一些常见的第三方内核模块包括虚拟机驱动程序、文件系统、网络协议栈扩展等等。

一,

DKMS的安装

该软件安装非常简单,有网有手就可以了,centos7操作系统需要epel源;

添加centos7的epel源并安装

wget -O /etc/yum.repos.d/epel.repo https://mirrors.aliyun.com/repo/epel-7.repo
yum install dkms -y

其中依赖elfutils-libelf-devel-0.168-8.el7.x86_64.rpm比较重要

二,

DKMS服务的配置文件

/etc/dkms/framework.conf ,里面有一些配置,基本不需要更改,如果有需要可以自己更改,主要是下面这两个路径 按需配置:

# source_tree="/usr/src"# DKMS Tree Location (default: /var/lib/dkms):
# dkms_tree="/var/lib/dkms"

DKMS服务启动并加入开机启动:

systemctl enable dkms
systemctl start dkms

三,

dkms安装外部驱动的准备工作

源码驱动文件建议找带dkms.conf 这样的,RTL8188GU-master.zip 这个驱动源码文件前面我已经分享在网盘了

链接:https://pan.baidu.com/s/1tQseIUjo_MVCe-kaU8cROA 
提取码:kkey 

将此驱动源码文件下载后,放置到/usr/src 目录下,注意是8188gu-1.0.1这个文件夹,其它的驱动也是如此,固定放置在/usr/src 目录下,包名-版本号的形式


该源码文件带有dkms.conf ,内容如下,存放在8188gu-1.0.1这个文件夹下面:

[root@centos10 8188gu-1.0.1]# cat dkms.conf 
PACKAGE_NAME="8188gu"
PACKAGE_VERSION="1.0.1"
MAKE[0]="'make' -j$(nproc) KVER=${kernelver}"
CLEAN="'make' clean"
BUILT_MODULE_NAME[0]="8188gu"
DEST_MODULE_LOCATION[0]="/kernel/drivers/net/wireless"
AUTOINSTALL="yes"
REMAKE_INITRD="no"

大概文件如下:

[root@centos10 8188gu-1.0.1]# pwd
/usr/src/8188gu-1.0.1
[root@centos10 8188gu-1.0.1]# ls
AMD_X86.sh  ARM64.sh  ARM_RPI.sh  core  dkms.conf  hal  include  Kconfig  Makefile  os_dep  platform  README.md

这里需要注意,dkms.conf 文件里的package name 就是文件夹的前一部分,package version 就是文件夹的后面一部分,dkms运行的时候会自动识别,本例中,整个配置文件无需改动,

自己的服务器是什么架构就先运行哪个脚本,例如是AMD86的架构,就先运行一下AMD_X86.sh,脚本会自动帮你修改Makefile 以作适配,如果此脚本不先运行将会在开始编译的时候报错如下:

  CC [M]  /usr/src/8188gu-1.0.1/core/rtw_cmd.o
gcc: error: unrecognized command line option ‘-mlittle-endian’

 当然了,如果你是树莓派的板子,那么需要先运行ARM_RPI.sh这个脚本

四,

dkms安装驱动并集成到内核

通常分三步,第一步添加驱动到内核,第二步build 驱动,第三步正式安装驱动

1,dkms add

[root@centos10 8188gu-1.0.1]# dkms add -m 8188gu -v 1.0.1
Deprecated feature: REMAKE_INITRD (/usr/src/8188gu-1.0.1/dkms.conf)
Creating symlink /var/lib/dkms/8188gu/1.0.1/source -> /usr/src/8188gu-1.0.1

2,dkms build

此命令对应于平常的编译命令里的make

[root@centos10 8188gu-1.0.1]# dkms build -m 8188gu -v 1.0.1
Sign command: /lib/modules/5.4.266-1.el7.elrepo.x86_64/build/scripts/sign-file
Signing key: /var/lib/dkms/mok.key
Public certificate (MOK): /var/lib/dkms/mok.pub
Deprecated feature: REMAKE_INITRD (/var/lib/dkms/8188gu/1.0.1/source/dkms.conf)Building module:
Cleaning build area...
'make' -j4 KVER=5.4.266-1.el7.elrepo.x86_64..........
Signing module /var/lib/dkms/8188gu/1.0.1/build/8188gu.ko
Cleaning build area...

3,dkms install

此命令对应于平常的编译命令里的make install

[root@centos10 8188gu-1.0.1]# dkms install -m 8188gu -v 1.0.1
Deprecated feature: REMAKE_INITRD (/var/lib/dkms/8188gu/1.0.1/source/dkms.conf)8188gu.ko:
Running module version sanity check.- Original module- Found /lib/modules/5.4.266-1.el7.elrepo.x86_64/kernel/drivers/net/wireless/8188gu.ko- Storing in /var/lib/dkms/8188gu/original_module/5.4.266-1.el7.elrepo.x86_64/x86_64/- Archiving for uninstallation purposes- Installation- Installing to /lib/modules/5.4.266-1.el7.elrepo.x86_64/extra/
Adding any weak-modules
depmod...

好了,就这么简简单单的安装好了rtl8188gu 网卡驱动了,那么,dkms如何管理驱动的呢?

[root@centos10 8188gu-1.0.1]# dkms status
Deprecated feature: REMAKE_INITRD (/var/lib/dkms/8188gu/1.0.1/source/dkms.conf)
8188gu/1.0.1, 5.4.266-1.el7.elrepo.x86_64, x86_64: installed

此时,我们会看到 8188gu 安装在5.4.266内核下,架构是x86_64 ,已经安装完毕了

4,

查看驱动是否加入内核

可以看到最后两行表明已经注册到内核了,

[root@centos10 8188gu-1.0.1]# modprobe 8188gu
[root@centos10 8188gu-1.0.1]# tail /var/log/messages
Jan 24 07:48:26 centos10 systemd-logind: New session 4 of user root.
Jan 24 07:48:26 centos10 systemd: Started Session 4 of user root.
Jan 24 08:01:01 centos10 systemd: Started Session 5 of user root.
Jan 24 08:16:16 centos10 kernel: usbcore: deregistering interface driver rtl8710bu
Jan 24 08:16:20 centos10 kernel: usbcore: registered new interface driver rtl8710bu
Jan 24 08:16:59 centos10 systemd: Got automount request for /proc/sys/fs/binfmt_misc, triggered by 8490 (find)
Jan 24 08:16:59 centos10 systemd: Mounting Arbitrary Executable File Formats File System...
Jan 24 08:16:59 centos10 systemd: Mounted Arbitrary Executable File Formats File System.
Jan 24 08:18:57 centos10 kernel: usbcore: deregistering interface driver rtl8710bu
Jan 24 08:19:58 centos10 kernel: usbcore: registered new interface driver rtl8710bu

如果dkms add 这个命令没有执行,忘记了,只执行了build和install,那么,dkms status 将会是这样输出的:

[root@centos10 8188gu-1.0.1]# dkms status
Deprecated feature: REMAKE_INITRD (/var/lib/dkms/8188gu/1.0.1/source/dkms.conf)
8188gu/1.0.1, 5.4.266-1.el7.elrepo.x86_64, x86_64: installed (original_module exists)

并且加载驱动的时候会报这个错,虽然此错误没什么影响,但总归是不完美嘛:

Jan 21 17:30:00 centos10 kernel: AVX2 version of gcm_enc/dec engaged.
Jan 21 17:30:00 centos10 kernel: AES CTR mode by8 optimization enabled
Jan 21 17:30:00 centos10 kernel: 8188gu: loading out-of-tree module taints kernel.
Jan 21 17:30:00 centos10 kernel: usbcore: registered new interface driver btusb

 因此,这说明dkms可以消除掉这些烦人的报错

 

卸载前面安装的8188gu驱动也非常的简单了 dkms remove就可以了:

[root@centos10 8188gu-1.0.1]# dkms remove -m 8188gu -v 1.0.1
Deprecated feature: REMAKE_INITRD (/var/lib/dkms/8188gu/1.0.1/source/dkms.conf)
Module 8188gu-1.0.1 for kernel 5.4.266-1.el7.elrepo.x86_64 (x86_64).
Before uninstall, this module version was ACTIVE on this kernel.
Removing any linked weak-modules8188gu.ko:- Uninstallation- Deleting from: /lib/modules/5.4.266-1.el7.elrepo.x86_64/extra/- Original module- Archived original module found in the DKMS tree- Moving it to: /lib/modules/5.4.266-1.el7.elrepo.x86_64/kernel/drivers/net/wireless/
depmod...Removing original_module from DKMS tree for kernel 5.4.266-1.el7.elrepo.x86_64 (x86_64)
Deleting module 8188gu-1.0.1 completely from the DKMS tree.

可以看到dkms还是非常的方便的,某个驱动需要编译的话,只要有源码包,然后仿照上面的dkms.conf 就可以简简单单的添加到内核里了,不想要这个驱动了,也是简简单单的一个命令

注意,一个驱动只需要注册 也就是add一次就可以了

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/244129.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

(C++)简单计算器

文章目录 一、实验目的、内容二、实验程序设计及结构1.需求分析变量函数 2.设计结构或流程图 三、设计过程四、测试分析第一组第二组实验中出现的bug及解决方案 五、设计的特点和结果 一、实验目的、内容 输入是一个带有括号的四则运算表达式,输出是计算得出的正确…

详细分析Java中的list.foreach()和list.stream().foreach()

目录 前言1. 基本知识2. 差异之处2.1 执行顺序2.2 串行并行2.3 复杂数据处理2.4 CRUD集合2.5 迭代器 3. 总结4. 彩蛋 前言 典故来源于项目中使用了两种方式的foreach,后面尝试体验下有何区别! 先看代码示例: 使用List的forEach&#xff1a…

手写Vue3源码

Vue3核心源码 B站视频地址:https://www.bilibili.com/video/BV1nW4y147Pd?p2&vd_source36bacfbaa95ea7a433650dab3f7fa0ae Monorepo介绍 Monorepo 是管理项目代码的一种方式,只在一个仓库中管理多个模块/包 一个仓库可以维护多个模块,…

打 jar 包运行 在windows 平台控制台和日志 乱码解决

--拒絕鷄巴囉嗦,直接解決問題 我们在Windows下运行jar包时,常常会出现乱码,主要分为dos窗口输出的日志中出现乱码和程序返回数据出现乱码。 dos窗口输出的日志中出现乱码 执行如下命令,将控制台输出编码改为UTF8: ch…

基于springboot+vue的足球青训俱乐部管理系统(前后端分离)

博主主页:猫头鹰源码 博主简介:Java领域优质创作者、CSDN博客专家、公司架构师、全网粉丝5万、专注Java技术领域和毕业设计项目实战 主要内容:毕业设计(Javaweb项目|小程序等)、简历模板、学习资料、面试题库、技术咨询 文末联系获取 研究背景…

Tkinter + removebg实现Ai抠图

我们先对removebg进行一个说明: "removebg" 是一个在线服务,它允许用户自动去除图片的背景。用户只需上传图片,系统会通过算法自动识别并去除背景,生成透明背景(PNG格式)或者用户指定的新背景图…

Qt6入门教程 10:菜单栏、工具栏和状态栏

目录 一.菜单栏 1.Qt Designer 1.1添加菜单和菜单项 1.2添加二级菜单 1.3给菜单和菜单项添加图标 1.4给菜单项添加功能 2.纯手写 二.工具栏 1.Qt Designer 1.1添加工具栏按钮 1.2工具栏的几个重要属性 2.纯手写 三.状态栏 1.Qt Designer 2.纯手写 用Qt Creator新…

excel学习1

直接ctrl cctrl v会报错位移选择粘贴时用123那个数字粘贴而不是ctrl V 只要结果不要公式 上面复制的为数值这里是复制的公式他们两个不一样 这个方法太麻烦了直接用格式刷,选择一个区域一个单元格,不要选择多个一刷就出来了 第一个计算后向下拖就行了&…

Overleaf(LaTeX文档在线编写平台)使用学习记录

一、LaTeX简概[1] LaTeX,是一种基于TEX的排版系统,是一种可以处理排版和渲染的标记语言。由美国计算机科学家莱斯利兰伯特在20世纪80年代初期开发,利用这种格式系统的处理,即使用户没有排版和程序设计的知识也可以充分发挥由TEX所…

SpringBoot整合ElasticSearch实现基础的CRUD操作

本文来说下SpringBoot整合ES实现CRUD操作 文章目录 概述spring-boot-starter-data-elasticsearch项目搭建ES简单的crud操作保存数据修改数据查看数据删除数据 本文小结 概述 SpringBoot支持两种技术和es交互。一种的jest,还有一种就是SpringData-ElasticSearch。根据…

centos7安装Redis7.2.4

文章目录 下载Redis解压Redis安装gcc依赖(Redis是C语言编写的,编译需要)编译安装src目录下二进制文件安装到/usr/local/bin修改redis.conf文件启动redis服务外部连接测试 参考: 在centos中安装redis-5.0.7 Memory overcommit must…

docker 部署及命令

一、容器概述 1、为什么要用到容器? ①容器可以屏蔽底层操作系统的差异性,让业务应用不管在哪里都是使用容器的环境运行,从而保证开发测试环境与生产环境的一致性 ②容器部署起来非常便捷和迅速,缩短开发测试部署的周期时间 2…

神经网络的学习(Neural Networks: Learning)

1.代价函数 案例:假设神经网络的训练样本有𝑚个,每个包含一组输入𝑥和一组输出信号𝑦,𝐿表示神经网络层数,𝑆𝐼表示每层的 neuron 个数(𝑆&#…

【Java-框架-SpringSecurity】单点登录(认证和授权)- 随笔

项目文件&#xff1b; 【1】 预览 文件 文件01 名称 pom.xml&#xff1b; 内容 &#xff08;01&#xff09;总的 <?xml version"1.0" encoding"UTF-8"?> <project xmlns"http://maven.apache.org/POM/4.0.0" xmlns:xsi"http:…

18.鸿蒙HarmonyOS App(JAVA)日期选择器-时间选择器

18.鸿蒙HarmonyOS App(JAVA)日期选择器-时间选择器 点击button按钮触发事件显示月份与获取的时间 Button button3 (Button) findComponentById(ResourceTable.Id_button3);button3.setClickedListener(new Component.ClickedListener() {Overridepublic void onClick(Compon…

【趣味CSS3.0】粘性定位属性Position:sticky是不是真的没用了?

&#x1f680; 个人主页 极客小俊 ✍&#x1f3fb; 作者简介&#xff1a;web开发者、设计师、技术分享博主 &#x1f40b; 希望大家多多支持一下, 我们一起学习和进步&#xff01;&#x1f604; &#x1f3c5; 如果文章对你有帮助的话&#xff0c;欢迎评论 &#x1f4ac;点赞&a…

Webpack5 基本使用 - 2

常用 loader loader 是辅助打包工具。webpack 默认只能打包 js 文件&#xff0c;打包其它模块就需要配置 loader 来告诉 webpack 该怎么去打包其它文件。loader 可以将文件从不同的语言转换为 JavaScript。一类文件如果需要多个 loader 处理&#xff0c;loader 的执行顺序是从…

SQL注入 ---> Day1 !

终于&#xff0c;我的课程开始讲SQL注入了&#xff0c;对就是那个常年在OWASP上有名的SQL注入 今天是真的冷啊&#xff0c;幸苦的小编还在写csdn 1.SQL注入原理 SQl注入其实就是将恶意的代码向服务器提交&#xff0c;但是后端又不过滤而引发的漏洞&#xff0…

2、Line Charts折线图

可视化时间趋势 现在你已经熟悉了编码环境,是时候学习如何制作自己的图表了! 在本教程中,您将学习足够的Python来创建专业外观的折线图。然后,在接下来的练习中,您将使用您的最新技能处理真实世界的数据集。 本课程数据集夸克网盘下载链接:https://pan.quark.cn/s/a235ac…

让二叉树无处可逃

志不立&#xff0c;天下无可成之事。 ——王阳明 二叉树 1、树&#xff1f;什么是树1、1、基本概念1、2、树的相关概念1、3、树的表示方式1、4、树的实际运用 2、二叉树&#xff1f;只有两个分支吗&#xff1f;2、1、基本概念2、2、二叉树的相关定义2、3、二叉树的相关性质2、4…