更新linux内核方法

2023-11-15

背景:买了块网件的A6210无线网卡,用的是mt7612u芯片,插到deepin下不能识别,ubuntu 18.04下同样不能识别,查过内核版本号,用的都是4.15的内核,去Github查了Linux内核仓库,确认4.15内核里没有mt7612u的驱动,Github上有几个其他的驱动试了试居然会编译出错,后来我查到OpenWRT的mt76驱动是支持mt7612u的,而且这个驱动在4.19的时候就被合并到Linux主分支了。查了内核代码后确实在mediatek的文件夹下找到了mt76的源代码,那么现在,等4.19内核的推送?算了,等到4.19怕是几个月以后了吧,看看Ubuntu内核版本报告http://kernel.ubuntu.com/~kernel-ppa/reports/versions.html就知道进度了,所以最后我决定直接安装4.19的内核,而不是自己编译驱动安装,好处嘛,就是快(免编译)、干净(直接装)、靠谱(内核自带驱动)。

进入正题,安装新内核的操作步骤:

  1. 下载最新内核,进入Ubuntu主线内核仓库http://kernel.ubuntu.com/~kernel-ppa/mainline/,注意虽然这是Ubuntu的内核仓库但是是可以直接安装到deepin的(都是用deb封装的包,而且,我都试过了),这里面有好多内核版本,自己挑一个喜欢的点进去,我点的是v4.19.6,点进去以后会有说明,我们用的64位deepin版本自然是需要“Build for amd64”下面的这几个了,下载
    linux-modules-xxx-generic_xxx_amd64.deb(内核驱动包)、
    linux-image-unsigned-xxx-generic_xxx_amd64.deb(内核镜像包)、
    linux-headers-xxx_all.deb(内核头文件包1)、
    linux-headers-xxx-generic_xxx_amd64.deb(内核头文件包2)、
    这四个deb文件,然后直接按顺序用“深度软件包管理器”安装就行,安装新内核不用担心老内核会被删除,只是会增加一个启动菜单选项,若新内核启动失败那么在启动菜单的第二项进去选择老内核启动就行了,无安全隐患,如果想卸载自己安装的内核就直接卸载上面几个对应的deb包名就行了。
  2. 下载最新固件,本来第一步就已经成功安装好内核了,一般情况下重启后系统就已经用的是新安装的内核了,可如果有朋友像我这样需要最新驱动的话,就要看看是不是要手动安装固件了,因为原来的固件包是跟老内核对应的,有些新驱动需要的固件就没有安装到系统,进入Linux固件仓库https://git.kernel.org/pub/scm/linux/kernel/git/firmware/linux-firmware.git/tree,这个目录下的文件就对应着系统盘/lib/firmware/文件夹下的文件,那怎样知道自己缺少哪些固件呢?可以在终端里执行sudo update-initramfs -u命令,如果缺少固件命令会输出“W: Possible missing firmware /lib/firmware/xxx/xxx.bin for module XXX”,一般把要用的驱动XXX的固件.bin补齐就行了,其他用不到的驱动固件可以不要,当然强迫症的可以全部补齐,补齐方法就是到Linux固件仓库找到对应的.bin文件下载后放到系统盘对应的文件夹里,最后别忘了再执行一次sudo update-initramfs -u命令更新系统。注意喽,自己下载的固件在未来可能会跟系统新的固件包冲突,若是存在同名文件的话新固件包的安装会报错,这个时候就需要把之前下载的固件手动删除了。

关于安装新内核后可能出现的启动延时问题:
这个问题是一个不兼容的驱动造成的,通过sudo systemctl --failed命令的输出可以了解到systemd-modules-load服务启动失败,不兼容的驱动是mincores,这个驱动是深度引进的warm-sched延时加载功能的依赖驱动,因为4.19内核API头文件的更改造成编译不通过,进而导致systemd-modules-load服务找不到要加载的内核模块,不断重试造成启动延时。
mincores驱动的源文件路径是/usr/src/mincores-0.2.0/mincores.c,我暂时还没深入研究,有兴趣的朋友可以研究研究该如何修改。
附上编译出错信息:
make: 进入目录“/usr/src/linux-headers-4.19.7-041907-generic”
CC [M] /var/lib/dkms/mincores/0.2.0/build/mincores.o
In file included from ./include/linux/idr.h:15:0,
from ./include/linux/kernfs.h:14,
from ./include/linux/sysfs.h:16,
from ./include/linux/kobject.h:20,
from ./include/linux/module.h:17,
from /var/lib/dkms/mincores/0.2.0/build/mincores.c:1:
/var/lib/dkms/mincores/0.2.0/build/mincores.c: 在函数‘dump_mapping’中:
/var/lib/dkms/mincores/0.2.0/build/mincores.c:122:43: 错误:‘struct address_space’没有名为‘page_tree’的成员
radix_tree_for_each_contig(slot, &addr->page_tree, &iter, next_start) {
^
./include/linux/radix-tree.h:598:45: 附注:in definition of macro ‘radix_tree_for_each_contig’
slot || (slot = radix_tree_next_chunk(root, iter,
^~~~
make[1]: *** [scripts/Makefile.build:310:/var/lib/dkms/mincores/0.2.0/build/mincores.o] 错误 1
make: *** [Makefile:1517:module/var/lib/dkms/mincores/0.2.0/build] 错误 2
make: 离开目录“/usr/src/linux-headers-4.19.7-041907-generic”
复制代码

以上就是安装新内核和驱动固件的操作方法,目前我的deepin有了新驱动的加持,感觉更加给力了,希望各位想用新内核的坛友可以耍得愉快。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

更新linux内核方法 的相关文章

  • Web 本地应用程序 Apache:运行 shell 脚本

    我开发了一个 shell 脚本 我想用它创建一个 UI 我决定使用带有本地服务器的 Web 界面 因为我对 HTML PHP 的了解很少 比 QT 或 Java 的了解更多 我只是希望我的 html 可以在我的计算机上运行 shell 脚本
  • 套接字发送并发保证

    如果我在两个进程 或两个线程 之间共享一个套接字 并且在这两个进程中我尝试发送一条阻塞的大消息 大于下划线协议缓冲区 是否可以保证这两个消息将按顺序发送 或者消息可以在内核内部交错吗 我主要对 TCP over IP 行为感兴趣 但了解它是
  • bash 或 sh 中的“=”和“==”运算符有什么区别

    我意识到 和 运算符都可以在 if 语句中使用 例如 var some string if var some string then doing something fi if var some string then doing some
  • 如何重命名共享库以避免同名冲突?

    我找到了一个图书馆 libjson http sourceforge net projects libjson 我正在尝试将其构建为共享库并在项目中使用 建造很简单 修复 Makefile 错误后 SHARED 1 make install
  • 无法在 R 中安装插入符号包(在我的 Linux 机器中)

    我在尝试在 R 中安装插入符号包时遇到以下错误 g error tmp Rtmp2Tos7n R INSTALL2e6e30153a74 nloptr nlopt 2 4 2 lib libnlopt cxx a No such file
  • 使用无效命令进行 fork 会导致 valgrind 中的内存泄漏

    我有以下代码 它在分叉内执行无效命令 以下代码在 valgrind 中返回内存泄漏 include
  • 从 Java 读取 /dev/input/js0

    我正在尝试阅读 dev input js0来自Java 但我不断得到 java io IOException Invalid argument at java io FileInputStream read0 Native Method a
  • 类似 wget 的 BitTorrent 客户端或库? [关闭]

    这个问题不太可能对任何未来的访客有帮助 它只与一个较小的地理区域 一个特定的时间点或一个非常狭窄的情况相关 通常不适用于全世界的互联网受众 为了帮助使这个问题更广泛地适用 访问帮助中心 help reopen questions 是否有任何
  • 使用 linux perf 工具测量应用程序的 FLOP

    我想使用 perf Linux 性能计数器子系统的新命令行接口命令 来测量某些应用程序执行的浮点和算术运算的数量 出于测试目的 我使用了我创建的一个简单的虚拟应用程序 请参见下文 因为我找不到任何为测量 FP 和整数运算而定义的 perf
  • 访问 Linux 线程(pthreads)的本地堆栈

    我目前正在实现一个使用多线程但对总内存消耗有要求的应用程序 我希望有一个主线程执行 I O 并有几个工作线程执行计算 目前 我在主堆栈上有几个可供工作人员访问的数据结构 我使用 OpenMP 进行工作分配 由于主 工作者模式不能很好地与 O
  • 在 C 中使用 sqrtf():“未定义对‘sqrtf’的引用”

    我正在使用Linux Ubuntu 12 04 https en wikipedia org wiki Ubuntu version history Ubuntu 12 04 LTS 28Precise Pangolin 29 Precis
  • 操作系统崩溃的常见原因[关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我有兴趣了解 操作系统崩溃 不限于Windows崩溃 最常见的技术原因 从操作系统编程的角度 有哪些 我正在寻找一个不像 打开太多应用
  • 在单个命令中使用前缀重命名文件夹中的所有文件

    重命名带有前缀的文件夹中的所有文件 Unix 假设一个文件夹有两个文件 a txt b pdf 那么它们都应该从一个命令重命名为 Unix a txt Unix b pdf 如果您的文件名包含没有空格并且你没有任何子目录 你可以使用一个简单
  • bash双括号问题

    我对 bash 脚本非常陌生 在使用双括号时遇到了问题 我似乎无法让它们在 Ubuntu Server 11 10 中工作 我的下面的脚本位于 if test sh 中 bin bash if 14 14 then echo FOO fi
  • Mono 和 WebRequest 速度 - 测试

    在 mono 4 6 2 linux 中 我注意到 wget 下载文件的速度与webclient DownloadString 所以我做了一个小测试来调查 为什么 wget 明显比 C 快 根据我自己的实验 使用 wget 下载 手动读取文
  • Bash 中 $() 和 () 之间的区别

    当我打字时ls l echo file 支架的输出 这只是简单的回显 被获取并传递到外部ls l命令 就等于简单的ls l file 当我打字时ls l echo file 我们有错误 因为不能嵌套 内部外部命令 有人可以帮助我理解之间的区
  • Alsa 带有来自调制解调器的 PCM 接口

    我有一个基于 imx28 CPU 的定制板 CPU 的串行端口连接到调制解调器的 PCM 输出 我必须为调制解调器的 PCM 接口开发一个驱动程序 使其成为 ALSA SoC 的一部分 您能指出内核树 中与我的设置重新组合的一些驱动程序吗
  • 使用netcat将unix套接字传输到tcp套接字

    我正在尝试使用以下命令将 unix 套接字公开为 tcp 套接字 nc lkv 44444 nc Uv var run docker sock 当我尝试访问时localhost 44444 containers json从浏览器中 它不会加
  • 原生 Linux 应用程序可像 ResHacker 一样编辑 Win32 PE

    我想运行自动修改 dll服务 用户提交特定的 dll 我在服务器上修改它 然后用户可以下载 dll的修改版本 是否有任何本机 Linux 应用程序提供常见的 Win32 PE 修改功能 例如图标 字符串 加速器 对话等 至少提供命令行或脚本
  • 将 stdout 作为命令行 util 的文件名传递?

    我正在使用一个命令行实用程序 该实用程序需要传递文件名以将输出写入 例如 foo o output txt 它唯一写入的东西stdout是一条消息 表明它运行成功 我希望能够通过管道传输写入的所有内容output txt到另一个命令行实用程

随机推荐

  • python 连接MySQL数据库

    方式一 pymysql 下载mysql驱动模块 pip install pymysql python 链接mysql示例 导入mysql连接驱动模块 import pymysql host ip地址 port 端口号 user 数据库用户名
  • 【华为OD统一考试B卷

    在线OJ 已购买本专栏用户 请私信博主开通账号 在线刷题 运行出现 Runtime Error 0Aborted 请忽略 华为OD统一考试A卷 B卷 新题库说明 2023年5月份 华为官方已经将的 2022 0223Q 1 2 3 4 统一
  • 链表算法的一些领会

    有些题目是一节一节的处理链表 比如reverseBetween ListNode head int m int swapPairs ListNode head reverseInKGroup ListNode head int k 主要考虑
  • docker操作

    一 docker常用操作 1 docker基本命令 批注 第9条 若不写版本号 默认使用lastest 最新版本 建议拉取镜像带上版本号 第10条 其中q是当下id队列的意思 比如查看所有的容器的id docker ps a q docke
  • 华为OD机试真题 Java 实现【支持优先级的队列】【2023 B卷 100分】

    一 题目描述 实现一个支持优先级的队列 高优先级先出队列 同优先级时先进先出 如果两个输入数据和优先级都相同 则后一个数据不入队列被丢弃 队列存储的数据内容是一个整数 二 输入描述 一组待存入队列的数据 包含内容和优先级 三 输出描述 队列
  • 如何设置电脑的固定IP地址

    大家在上网时电脑的IP地址往往都是自动选择的 但在局域网内有时会方便共享文件和监控流量等操作时需要固定的IP地址 下面将简单介绍如何手设置电脑的固定IP地址 步骤 单击电脑网络连接图标 打开网络和共享中心 点击本地连接 点击详细信息 即可看
  • vue列表渲染,鼠标点击改变样式

    话不多说 看下面的代码吧 HTML div ul class nav li item li ul p list ind p div 注 别忘记先引入vue js
  • 淘宝滑块x82y-226流程分析(不涉及逆向)

    分析目标 微信公众号 y小白的笔记 https mp weixin qq com s Py7I6RG7UT9EtdpXlV98aA 只分析验证码加载流程 不说具体细节 版本 226 目标参数slidedata n 成功返回 code 0 r
  • webstorm快速配置react

    以下都是废话 建议看菜鸟教程 也推荐这一个链接 它是React几种基本配置方案 你可以根据需求选择合适的配置 默认你装了node js和npm还有ws2018 2 4 首先在设置 setting 里搜索lang 语言与框架 找到并JavaS
  • 怎样用Java求水仙花数和水仙花数的数量

    首先我们了解一下水仙花数的定义 一个各个位上的数字三次方之和等于他本身的三位数 因此 为了求水仙花数 我们的程序会有以下几个需求 1 首先表示出所有的三位数 用循环表示 这里用for循环示例 2 然后表示出其个位 十位 百位 3 当这个三位
  • Elasticsearch知识点

    目录 1 什么是Elasticsearch 2 Elasticsearch的特点 3 Elasticsearch基础概念 4 Elasticsearch基本数据类型 看这里 5 Elasticsearch基本检索类型 5 1 检索和过滤 5
  • python编译javascript_Js2Py - 把js代码翻译成python代码。也让你可以在python环境里运行js代码。...

    Pure Python JavaScript Translator Interpreter Everything is done in 100 pure Python so it s extremely easy to install an
  • top 命令解释和案例

    文章目录 Top结果 Task分析 CPU分析 内存分析 Top结果 在Linux系统中 top命令用于实时监控系统的性能和进程活动 当你在终端运行top命令时 会显示一个实时的进程列表和系统性能指标 top结果的详细描述如下 第一行 显示
  • Elasticsearch的配置及常见错误

    1 下载Elasticsearch到d盘 在elasticsearch yml中配置两项内容 其中cluster name对应springboot项目中application properties里elasticsearch配置的 elas
  • Java 日期 不同月按周分组

    日期按月 按周次分组 今天接到需求 要求按月份分开周次 12月31号和新一年的1月1号拆开两个组 2020 12 第五周 2020 12 28 2020 12 31 2021 01 第一周 2021 01 01 2021 01 03 咋一看
  • 设计模式——反射

    本文说明 在学习 Java EE互联网轻量级框架整合开发 此书时 里面提到了几种设计模式 我在学习这几种设计模式时写了笔记 放上来让大家共同学习 如果有错误 望指出 本章由两部分组成 1 基本概念 关键代码讲解 2 完整例子 基本概念 关键
  • vue3-实战-04-管理后台表单校验-layout-菜单组件封装

    目录 1 自定义校验规则 2 layout组件静态页面搭建 3 logo组件封装 4 左侧菜单静态组件搭建 4 1 动态获取菜单数据 4 2 封装菜单动态展示组件 4 3 配置菜单名称 隐藏 图标属性 4 4 菜单刷新定位当前菜单 5 内容
  • python大数据毕业设计题目100例

    文章目录 0 前言 1 python 算法类 毕设选题 2 python 数据挖掘 毕设选题 3 python 大数据处理 云计算 区块链 毕设选题 4 python 网络安全 毕设选题 5 python 游戏设计 动画设计类 毕设选题 适
  • mysql求两个表的不同记录

    问题是 现在有两个表 一个是记录昨天的记录 一个是记录今天的记录 如何求 1 新增的记录 今天有 昨天没有的记录 2 减少的记录 今天没有 昨天有的记录 求解该类问题 需要用到sql的连接查询 为了简单起见 使用user1表和user2表来
  • 更新linux内核方法

    背景 买了块网件的A6210无线网卡 用的是mt7612u芯片 插到deepin下不能识别 ubuntu 18 04下同样不能识别 查过内核版本号 用的都是4 15的内核 去Github查了Linux内核仓库 确认4 15内核里没有mt76