深度好文:解决Ubuntu 18.04安装nvidia显卡驱动,导致内核不匹配:无需重装系统修复内核

深度好文:解决Ubuntu 18.04安装nvidia显卡驱动,导致内核不匹配:无需重装系统修复内核

目录

        • 一、问题描述
        • 二、尝试修复
        • 三、安装Nvidia驱动和CUDA并配置cuDNN
        • 四、总结

一、问题描述

昨天打算更新一下Ubuntu 18.04的显卡驱动,以支持更新版本的cuda和Pytorch。结果在安装新版本驱动的时候,显卡驱动和系统内核版本不一致,导致进不去系统了。后来参考解决Ubuntu 显卡驱动升级导致的 显卡驱动和内核版本不匹配的问题,非但没有解决问题,反而把系统里面原本的内核损坏了。(这个博客中的写得巨烂,首先排版就很烂,其次注意事项也不写清楚。事实上,对于Linux内核,最好别去动它。一个内核文件也不大,几百兆,就留着也不占什么空间,没有必要卸载旧的内核。装新的内核之后,配置启动方式就行了。)这下完蛋了,重启之后彻底进不去系统了。

二、尝试修复

进入终端模式(ctrl+alt+F1),尝试使用sudo apt install按照我以前的教程安装指定版本(5.11.0-34)的内核,结果一直失败。并且由于系统语言设置的中文,在终端模式下报错信息一直是乱码**,完全没办法定位错误。(事后复盘,我发现5.11.0-34的内核版本是针对Ubuntu 20.04LTS的,所以Ubuntu 18.04用apt install就会找不到匹配的软件包,如下图所示。)

image-20240327120301853

既然是内核的问题,还有一种方法是离线安装内核,下载指定版本内核相关文件到本地,然后安装。但是由于此前内核损坏,进系统的时候出现了bus error,导致无法识别插入的U盘。这个方法也行不通。

所以这个时候,我们需要正常显示报错信息和提示,这样我们才方便定位排查错误。具体做法可以参考:Ubuntu系统误删内核后修复方法。流程总结如下:

  1. 准备一个空的U盘,下载Ubuntu镜像制作启动盘。这里推荐使用国产开源软件ventoy。ventoy超级好用,有了它就无需反复格式化U盘,可以同时保存多个不同类型的镜像文件,并且正常使用U盘。
  2. 更改bios启动方式,进入时选择”try Ubuntu without installing“。
  3. 在进入的Ubuntu系统内挂载原系统根目录,boot目录和必要的系统目录。这一步需要用到fdisk -lmount命令。
  4. 使用chroot命令更改根目录到挂载的原系统根目录,这样就可以进入原系统了。
  5. 在原系统内使用apt(在线安装)或者dpkg(离线安装)命令安装新的内核。
  6. 安装完成之后,使用sudo update-grub来更新一下引导。
  7. 重启,进入Ubuntu高级选项,选择安装的新内核,即可进入系统。
  8. 进入系统后,别忘了更改默认启动内核。具体方法可以参考我之前的教程,提供了三种方法修改启动内核。

在这个过程中,我遇到的坑如下:

  1. 在挂载原系统目录时,根目录在一个分区上,/usr目录在另一个分区上。一开始我只挂载了根目录所在分区,没有挂载/usr目录的分区。导致我使用chroot命令之后,一直使用不了aptdpkg命令。后来,询问GPT-4才发现问题所在。(GPT is all you need!!!)

    image-20240327140310348

  2. 使用apt-get install linux-image-generic时,下载安装的内核版本时4.15.0,这个版本也比较老了。我通过这个内核进入系统之后发现无法上网,没有深究。后来通过离线方式安装了5.15.0的内核版本,离线安装的方式可以参考Linux系统-Ubuntu安装指定版本的内核。需要注意的是,下载的文件应该是不带low-latency的四个文件,而不是参考教程里面说的3个,可参考下图中GPT给出的建议。具体安装流程总结如下:

    image-20240327151404877

  3. 选择内核版本的时候,不能太高也不能太低,亲测5.8.0可用。如果版本太高,例如:5.15.0版本,可能因为依赖问题(5.15.0的内核头文件需要libc6>= 2.34,但是Ubuntu18.04里面libc6版本为 2.27)无法安装headers文件,导致后续安装显卡驱动的时候报错。ERROR: Unable to find the kernel source tree for the currently running kernel. 出现这个错误就是说明没有安装成功headers文件。关于这一点,有个博客写得蛮好的。不过,他的解决方式在我的环境里面没有work。我是直接手动安装了5.8.0的headers才成功。

三、安装Nvidia驱动和CUDA并配置cuDNN

这一部分安装我之前的教程来就可以了,没什么可说的。安装驱动的时候,记得加上--no-x-check --no-nouveau-check --no-opengl-files

这里需要注意一下,修改/etc/profile文件来添加cuda的环境变量时,一定要仔细检查,不然出啥问题了,在进系统时会出现输入密码循环登录的情况。解决方案也很简单,进入终端模式,输入用户名,密码,把/etc/profile修改回去,再重启即可。如果是个人用户使用,在~/.bashrc这种个人级别的配置文件添加cuda路径是最好的。

四、总结

折腾上面这些东西,花了我一个下午+一个晚上。中途一度想放弃重装系统,但是数据丢失的代价太大了,还是坚持下来了。以后可以多问问GPT,把情况描述清楚,GPT-4给出的答案都很靠谱,基本和自己上网搜的解决方案差不多,可以显著提升效率。

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

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

相关文章

Eclipse新建java类的操作流程

一、在左侧空白区域,点击鼠标右键。 二、点击new,选择Java Project (由于这里不知道怎么截图,就用手机拍了一张,希望不要介意) 三、 给project文件起个名字,其他都不用管,点击Finis…

云防护是怎么能帮助用户做好网络安全

在数字化时代,网络安全威胁呈现出愈发复杂和多样化的趋势。 无论是个人用户、小型企业还是大型企业,都面临着来自全球各地的网络攻击风险。这些攻击可能导致数据泄露、服务中断、财务损失甚至声誉受损。因此,采取有效的安全防护措施变得至关…

HarmonyOS 应用开发之Stage模型启动FA模型PageAbility

本小节介绍Stage模型的两种应用组件如何启动FA模型的PageAbility组件。 UIAbility启动PageAbility UIAbility启动PageAbility和UIAbility启动UIAbility的方式完全相同。 说明: 需注意FA模型中abilityName由bundleName AbilityName组成,具体见示例。 i…

不允许你不知道的 MySQL 优化实战(一)

文章目录 1、查询SQL尽量不要使用select *,而是select具体字段。2、如果知道查询结果只有一条或者只要最大/最小一条记录,建议用limit 13、应尽量避免在where子句中使用or来连接条件4、优化limit分页5、优化你的like语句6、使用where条件限定要查询的数据…

uniapp开发App(二)开通 微信授权登录功能(应用签名、证书、包名 全明白)

前言:开发App肯定要包含登陆,常用登陆方式很多,我选择微信登陆。 一、如何获得微信的授权登陆 答:申请,根据uniapp官网的提示有如下三个步骤 开通 1. 登录微信开放平台区,添加移动应用并提交审核&#xf…

C语言中的文件和文件操作

目录 为什么会有文件? 文件名 ⼆进制⽂件和⽂本⽂件? ⽂件的打开和关闭 流 标准流 ⽂件指针 ⽂件的打开和关闭 顺序读写函数介绍 对⽐⼀组函数: 文件的随机读写 fseek ftell rewind ⽂件读取结束的判定 被错误使⽤的 feof ⽂件…

PCL点云处理之重复随机采样一致性(RRANSAC法)平面拟合(二百三十七)

PCL点云处理之重复随机采样一致性(RRANSAC法)平面拟合(二百三十七) 一、算法介绍二、算法实现1.代码2.结果一、算法介绍 pcl::SAC_RRANSAC"是 PCL库中的一个方法,是 RANSAC 方法的改进版本,通过多次重复采样和模型拟合来提高鲁棒性。RRANSAC 的思想是在 RANSAC 的基…

基于深度学习的图书管理推荐系统(python版)

基于深度学习的图书管理推荐系统 1、效果图 1/1 [] - 0s 270ms/step [13 11 4 19 16 18 8 6 9 0] [0.1780757 0.17474999 0.17390694 0.17207369 0.17157653 0.168248440.1668652 0.16665359 0.16656876 0.16519257] keras_recommended_book_ids深度学习推荐列表 [9137…

Windows提权!!!

之前讲过一下提权,但是感觉有点不成体系,所以我们就成体系的来讲一下这个操作系统的提权 目录 Windows的提权 1.Widnows的内核溢出提权 1.MSF自带的提权模块(Win11都能提上来,有点牛逼) 2.CS的插件提权 3.补丁对比…

透视未来安全:PIR技术引领数据隐私新时代

1.隐语实现PIR总体介绍 隐语实现的Private Information Retrieval (PIR) 是一种隐私增强技术,它使用户能够在不暴露他们实际查询内容的情况下从远程服务器数据库中检索所需信息。以下是隐语在实现PIR方面的概要说明和技术特点: 基本概念: PI…

【蓝桥杯】矩阵快速幂

一.快速幂概述 1.引例 1)题目描述: 求A^B的最后三位数表示的整数,A^B表示:A的B次方。 2)思路: 一般的思路是:求出A的B次幂,再取结果的最后三位数。但是由于计算机能够表示的数字…

[linux初阶][vim-gcc-gdb] TwoCharter: gcc编译器

目录 一.Linux中gcc编译器的下载与安装 二.使用gcc编译器来翻译 C语言程序 ①.编写C语言代码 ②翻译C语言代码 a.预处理 b.编译 c.汇编 d.链接 ③.执行Main 二进制可执行程序(.exe文件) 三.总结 一.Linux中gcc编译器的下载与安装 使用yum命令(相当于手机上的应用…

10_MVC

文章目录 JSON常用的JSON解析Jackson的常规使用指定日期格式 MVC设计模式MVC介绍前后端分离案例(开发与Json相关接口) 三层架构三层架构介绍 JSON JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式,是存…

JUC并发编程(七)

1、不可变对象 1.1、概念 不可变类是指一旦创建对象实例后,就不能修改该实例的状态。这意味着不可变类的对象是不可修改的,其内部状态在对象创建后不能被更改。不可变类通常具有以下特征: 实例状态不可改变:一旦不可变类的对象被…

unordered系列容器OJ

目录 1、unordered系列容器 2、unordered系列容器OJ 1、重复n次的元素 2、两个数组的交集I 3、两个数组的交集II 4、存在重复元素 5、两句话中不常见的单词 1、unordered系列容器 在C标准库中,unordered系列容器是基于哈希表实现的, 用于存储唯一…

用html实现一个文章图片缩略展示

<!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>文章图片缩略展示</title><link rel"stylesheet" href"./style.css"> </head> <body> <div class&qu…

初始《string》及手搓模拟实现《string》

目录 前言&#xff1a; 为什么学习string类&#xff1f; 标准库中的string类 1. string类对象的常见构造 ​编辑 2. string类对象的容量操作 ​编辑 3. string类对象的访问及遍历操作 4. string类对象的修改操作 5. string类非成员函数 vs和g下string结构的说明 vs下s…

k8s1.28.8版本安装prometheus并持久化数据

本文参考 [k8s安装prometheus并持久化数据_/prometheus-config-reloader:-CSDN博客](https://blog.csdn.net/vic_qxz/article/details/119598466)前置要求: 已经部署了NFS或者其他存储的K8s集群. 这里注意networkpolicies网络策略问题&#xff0c;可以后面删除这个策略&#x…

LangChain使用本地LLM的简单实现

所用模型&#xff1a;stable-code-instruct-3b-Q8_0.gguf 下载链接&#xff1a;bartowski/stable-code-instruct-3b-GGUF Hugging Face 详细内容请查看&#xff1a;Introduction | &#x1f99c;️&#x1f517; Langchain 目录 LangChain 代码示例 LangChain LangChain…

再生式收音机填坑记

年前踩坑再生式收音机&#xff0c;还是得找机会把坑填上&#xff0c;最终选定了K8TND的方案&#xff0c;其实与Mr. Kitchen的也基本差不多。电路图如下&#xff1a; 实物图如下&#xff1a; 实际接收效果还不错&#xff0c;但是感觉频段上哪哪都是中国之声&#xff0c;对这种…