深度好文:解决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.hqwc.cn/news/573643.html

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

相关文章

使用OpenXlab下载数据集(推荐)

OpenXLab浦源面向人工智能领域开发者和使用者,提供一站式AI开发平台。提供包括应用开发,模型免费托管,数据集下载等服务 官方网址:https://openxlab.org.cn/datasets?lang=zh-CN 提供了6622种数据集, 涉及计算机视觉、自然语言处理、多模态、通用机器学习、音频识别以及其他…

互联网公司裁员现象调查:探寻背后原因与应对策略

近年来,随着互联网行业的快速发展,裁员现象日益引起广泛关注。本文通过对互联网公司裁员现象的调查,分析背后原因,探讨应对策略,以期为互联网企业和求职者提供参考。 近年来,我国互联网行业历经高速发展&am…

软件项目的上线和维护流程

软件项目的上线和维护流程是软件开发生命周期中至关重要的阶段,它确保了软件产品能够在实际环境中稳定运行,并根据用户反馈进行持续改进。以下是软件项目上线和维护的一般流程,希望对大家有所帮助。北京木奇移动技术有限公司,专业…

【一】TensorFlow神经网络模型构建之神经元函数及优化方法

TensorFlow神经网络模型构建主要涉及如下几块:神经元函数、卷积函数、池化函数、分类函数、优化方法。下面分别对这几块进行展开说明: 神经元函数及优化方法 神经网络之所以能解决非线性问题(如语音、图像识别等),本…

《计算机工程与应用》投稿经验2024

要按照官网格式写论文,这会节省很多时间。审稿费120元,本人计算机视觉方向,9页,没有打折,版面费5000,彩图和表格过多的原因。版权协议等论文录用之后再交即可,一审二审的时候不用交,…

如何使用Python进行网络安全与密码学【第149篇—密码学】

👽发现宝藏 前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。【点击进入巨牛的人工智能学习网站】。 用Python进行网络安全与密码学:技术实践指南 随着互联网的普及,网络…

基于javaweb(springboot)汽车配件管理系统设计和实现以及文档报告

基于javaweb(springboot)汽车配件管理系统设计和实现以及文档报告 博主介绍:多年java开发经验,专注Java开发、定制、远程、文档编写指导等,csdn特邀作者、专注于Java技术领域 作者主页 央顺技术团队 Java毕设项目精品实战案例《1000套》 欢迎点赞 收藏 ⭐…

LinkedList讲解指南

咦咦咦,各位小可爱,我是你们的好伙伴——bug菌,今天又来给大家普及Java SE相关知识点了,别躲起来啊,听我讲干货还不快点赞,赞多了我就有动力讲得更嗨啦!所以呀,养成先点赞后阅读的好…

Java编程语言全面指南:历史、特性、环境搭建步骤

一、背景 在数字化的时代浪潮中,Java显得尤为璀璨,它不仅仅是由Sun Microsystems公司孕育而出的一种编程语言,更是一种融汇简洁性、面向对象的设计、分布式编程能力、稳健与安全性、平台独立性、可移植性、多线程处理能力和动态性于一体的…

Python图像处理——计算机视觉中常用的图像预处理

概述 在计算机视觉项目中,使用样本时经常会遇到图像样本不统一的问题,比如图像质量,并非所有的图像都具有相同的质量水平。在开始训练模型或运行算法之前,通常需要对图像进行预处理,以确保获得最佳的结果。图像预处理…

远程todesk 和向日葵连接ubuntu无法连接

问题 今天远程用todesk 和向日葵连接对方ubuntu22.04 LTS的 电脑,无法连接,一开始以为是防火墙问题,后来发现不是,找了半天资料最后解决。 原因 没有安装X11桌面环境,还是原先的wayland 解决方案 ctrl alt T …

内网笔记之代理Socks协议、路由不出网

#知识点: 1、代理软件使用-Win&Linux 2、代理协议使用-Socks4/5 3、CS&MSF-网络通讯&控制上线 本次实验目标如下: 只有win7能访问外网 msf如下: 拿到win7权限后,需要添加路由(MSF需要添加路由&#…