当前位置: 首页 > article >正文

ubuntu内核升级后的问题修复

文章目录

  • 需求
  • 当前环境
  • 禁止内核更新
  • 安装内核
  • 修复/usr/include/
    • dlocate
  • 测试

需求

升级后的常见问题

  • 驱动程序不兼容: 新内核版本可能导致某些硬件驱动程序不再兼容,尤其是专有驱动程序或第三方驱动程序。
  • 启动问题:内核更新可能导致启动问题,例如无法启动或启动缓慢。 应用程序崩溃: 依赖于特定内核版本的应用程序可能会出现崩溃或其他行为异常。
  • 图形界面问题: 显卡驱动程序与新内核不兼容可能导致图形界面故障或不稳定

当前环境

uname -r
dpkg --get-selections |grep 5.15.0-112-generic

在这里插入图片描述

禁止内核更新

apt-mark hold linux-headers-5.15.0-25-generic linux-headers-5.15.0-112-generic linux-image-5.15.0-112-generic  linux-modules-5.15.0-112-generic linux-modules-extra-5.15.0-112-generic  linux-modules-nvidia-535-5.15.0-112-generic linux-objects-nvidia-535-5.15.0-112-generic linux-signatures-nvidia-5.15.0-112-generic

在这里插入图片描述
开启内核更新

apt-mark install linux-headers-5.15.0-25-generic linux-image-5.15.0-25-generic xxxx

安装内核

sudo apt-mark hold linux-image-$(uname -r)

选择版本

sudo apt install linux-image-5.10.0-26-generic

修复/usr/include/

/usr/include 下的目录和文件包括
asm-generic: 包含与体系结构无关的内核头文件。
bits: 包含位字段定义和其他小型定义文件。
gnu: 包含 GNU 特有的头文件。
linux: 包含 Linux 内核相关的头文件。
machine: 包含特定机器架构的定义。
x86_64-linux-gnu: 包含特定于 x86_64 架构的头文件。
x86_64-linux-gnu/bits: 包含特定于 x86_64 架构的位字段定义。
net: 包含网络相关的头文件。
sys: 包含系统调用和系统相关的头文件。
time: 包含与时间相关的头文件。
wchar: 包含宽字符集相关的头文件。

对于网络编程和内核开发,以下是一些常见的头文件

sys/socket.h: 包含套接字编程相关的定义。
netinet/in.h: 包含 Internet 协议(如 IP)的定义。
netinet/tcp.h: 包含 TCP 协议的定义。
netinet/udp.h: 包含 UDP 协议的定义。
net/if.h: 包含网络接口相关的定义。
net/if_arp.h: 包含 ARP 协议的定义。
net/if_ether.h: 包含以太网相关的定义。
linux/if_packet.h: 包含原始套接字相关的定义。
# 确认内核版本
uname -r

# 卸载内核头文件包
sudo apt remove linux-headers-5.10.0-26-generic

# 清理残留的依赖
sudo apt autoremove

# 更新软件包索引
sudo apt update

# 重新安装内核头文件包
sudo apt install linux-headers-$(uname -r)

dlocate

sudo apt-get install dlocate

apt-get install --reinstall $(dlocate --package-only /usr/include)

 apt-get install --reinstall $(dlocate --package-only /usr/include)

测试

在 Ubuntu 系统中使用 apt install linux-headers-$(uname -r) 命令安装内核头文件时,这些头文件并不会直接安装到 /usr/include 目录下。相反,它们会被安装到一个特定的目录中,通常是 /usr/src 下的一个子目录里,这个子目录的命名规则与内核版本相关
为了让编译器能够找到这些头文件,通常不需要显式地移动它们到 /usr/include 目录下。现代的编译器会自动搜索标准目录和额外的目录来查找头文件。例如,GCC 会在 /usr/include 以及 /usr/src/linux-headers- 等位置查找头文件
在这里插入图片描述


http://www.kler.cn/a/298987.html

相关文章:

  • Unity全局雾效
  • 3. Kafka入门—安装与基本命令
  • 拆解一个微型气泵了解工作原理
  • python rabbitmq实现简单/持久/广播/组播/topic/rpc消息异步发送可配置Django
  • 基于MATLAB的图像增强
  • 搜索召回:倒排召回
  • AMP网站如何适配提升SEO效果?
  • 编曲术语:编曲术语中英对照表
  • 安宝特方案 | 医疗AR眼镜,重新定义远程会诊体验
  • Unity Apple Vision Pro 开发(五):PolySpatial 2.0 导入方式
  • 【我的Android进阶之旅】解决CardView四个圆角有白边的问题
  • kkFileView PDF Image Mode Preview BUG
  • 【安全漏洞】Apache Tomcat 高危漏洞版本
  • 断点回归模型
  • 银行安全用电典型产品解决方案介绍-安科瑞-叶西平
  • gdb 调试带有 fork 的进程,如何在父进程和子进程之间切换?
  • SpringBoot2:请求处理原理分析-接口参数解析原理(argumentResolvers)
  • 第11章 32位x86处理器编程架构
  • Leetcode3266. K 次乘运算后的最终数组 II
  • 【Nacos】健康检查与环境隔离
  • 【数据结构】2——二叉树遍历
  • 用hiredis连接redis
  • 如何优化谷歌排名更有效?
  • Linux之Shell命令
  • 【YouTube采集】按搜索关键词批量爬取视频数据,并封装成exe界面软件!
  • ubuntu使用命令行查看硬件信息