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

【OS安装与使用】part3-ubuntu安装Nvidia显卡驱动+CUDA 12.4

文章目录

  • 一、待解决问题
    • 1.1 问题描述
    • 1.2 解决方法
  • 二、方法详述
    • 2.1 必要说明
    • 2.2 应用步骤
      • 2.2.1 更改镜像源
      • 2.2.2 安装NVIDIA显卡驱动:nvidia-550
        • (1)查询显卡ID
        • (2)PCI ID Repository查询显卡型号
        • (3)安装显卡驱动
        • (4)检测驱动安装是否成功
      • 2.2.3 安装NVIDIA显卡计算平台:CUDA 12.4
        • (1)查看可安装CUDA最高版本
        • (2)查看设备安装的操作系统版本、linux内核版本、硬件架构
        • (3)安装CUDA 12.4
        • (4)检测CUDA安装是否成功
  • 三、疑问
    • 3.1 显卡驱动安装好后,CUDA安装报错。
    • 3.2 显卡驱动安装时,报错“build kernel module error ”
  • 四、总结


一、待解决问题

1.1 问题描述

新装了ubuntu 22.04 LTS 系统后,除了系统自带的基础软件外,都是空白。
为了运行MARL算法,安装其必要的基础运行环境。

1.2 解决方法

(1)更改镜像源
(2)安装NVIDIA显卡驱动:nvidia-550
(3)安装NVIDIA显卡计算平台:CUDA 12.4

二、方法详述

2.1 必要说明

暂无

2.2 应用步骤

2.2.1 更改镜像源

(1)登录清华镜像源网站,并基于ubuntu版本复制内容。
链接:清华大学开源软件镜像站
在这里插入图片描述(2)进入sourcelist文件路径,备份原文件,并更改镜像源

cd /etc/apt/
sudo cp -i sources.list sources-backup.list
ls
sudo gedit sources.list

将镜像链接内容复制,并保存
在这里插入图片描述(3)应用镜像源

sudo apt update

2.2.2 安装NVIDIA显卡驱动:nvidia-550

(1)查询显卡ID
lspci | grep -i nvidia

在这里插入图片描述

(2)PCI ID Repository查询显卡型号

链接:PCI ID Repository Nvidia 显卡型号查询
下拉到底部,有个搜索框,输入显卡ID
在这里插入图片描述

(3)安装显卡驱动

使用ubuntu自带的Software&Updates工具安装

#检测可安装的驱动程序
ubuntu-drivers devices

在这里插入图片描述
选择推荐的 nvidia-driver-550 版本驱动。

在正式开始安装之前,先更新一下make、gcc、g++。
(这里更新gcc-12、g+±12的原因是nvidia-550要求最新版本的gcc、g++)

#查看当前gcc版本,果然为11.4
gcc --version
#安装依赖项
sudo apt-get install build-essential
sudo apt-get install make
#安装gcc-12
sudo apt-get install gcc-12
sudo apt install g++-12
sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-12 12
sudo update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-12 60
g++ --version
gcc --version

安装之前查看是否已有安装nvdia驱动,有的话直接删除。

nvidia-smi
#卸载Nvidia驱动及相关组件
sudo apt-get remove --purge '^nvidia-.*'
sudo apt-get autoremove
#自动下载安装nvidia-550驱动程序
sudo apt-get install -y cuda-drivers-550

安装过程弹出UEFI secure boot阻拦,大致意思是:

在安装 NVIDIA 显卡驱动时遇到此错误是因为启用了 UEFI 安全启动,导致系统无法加载第三方驱动程序。
然后,按照提示说:
(1)会生成一个MOK密钥,然后需要录入到固件内。
(2)过程中会设置一个password。
(3)重启后可选择 “Enroll MOK”(录入密钥) 或者 “Change Secure Boot”(改变安全启动项)的选项。

在这里插入图片描述

❓什么是UEFI安全启动呢?

说白了,其实就是设备的一种安全机制。它通过验证启动组件的数字签名来防止未经授权的软件(如恶意软件或未经授权的驱动程序)在系统启动时运行。

由于,我们是双系统,直接关闭Secure Boot可能会存在风险,先尝试 “Enroll MOK”的选项。

设置一个password。
在这里插入图片描述
程序跑完,直接重启

sudo reboot

重启后,进入“蓝色”界面,选择“Enroll MOK”
在这里插入图片描述下一个页面选择 “Continue” ,再选择 “Yes”
在这里插入图片描述输入 设置好的Password,没有报错的话直接选择 Reboot。
在这里插入图片描述重启!
在这里插入图片描述

(4)检测驱动安装是否成功
nvidia-smi

看到驱动版本为550.120,并且有对应的可安装的CUDA最高版本为 12.4

在这里插入图片描述

查看软件&更新内的驱动使用情况

software-properties-gtk

在这里插入图片描述

至此,nvidia-550显卡驱动安装成功。

2.2.3 安装NVIDIA显卡计算平台:CUDA 12.4

(1)查看可安装CUDA最高版本
nvidia-smi

看到驱动版本为550.120,并且有对应的可安装的CUDA最高版本为 12.4

在这里插入图片描述
也可以上官方网站上查看驱动型号下支持的CUDA版本。
链接:https://docs.nvidia.com/cuda/cuda-toolkit-release-notes/index.html#cuda-toolkit-major-component-versions

在这里插入图片描述

(2)查看设备安装的操作系统版本、linux内核版本、硬件架构
lsb_release -a
uname -rp

在这里插入图片描述
在这里插入图片描述

(3)安装CUDA 12.4

前往nvidia官网下载CUDA安装包,链接:CUDA Toolkit发行版下载
在这里插入图片描述
选择对应系统版本和硬件架构。

在这里插入图片描述

按照指令安装

wget https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2204/x86_64/cuda-ubuntu2204.pin
sudo mv cuda-ubuntu2204.pin /etc/apt/preferences.d/cuda-repository-pin-600
wget https://developer.download.nvidia.com/compute/cuda/12.4.1/local_installers/cuda-repo-ubuntu2204-12-4-local_12.4.1-550.54.15-1_amd64.deb
sudo dpkg -i cuda-repo-ubuntu2204-12-4-local_12.4.1-550.54.15-1_amd64.deb
sudo cp /var/cuda-repo-ubuntu2204-12-4-local/cuda-*-keyring.gpg /usr/share/keyrings/
sudo apt-get update
sudo apt-get -y install cuda-toolkit-12-4

安装无报错后,重启

sudo reboot
(4)检测CUDA安装是否成功

CUDA官方也给出安装和检测教程。
链接:https://docs.nvidia.com/cuda/cuda-quick-start-guide/index.html#debian-installer
在这里插入图片描述设置环境变量,这里由于安装的是12.4,对应修改一下。
打开编辑 ~/.bashrc 文件。

sudo gedit ~/.bashrc

将下面环境变量代码添加至最后一行,并点击“保存”。

#cuda12.4 envirionment
#cuda12.4 environment
export PATH=/usr/local/cuda-12.4/binKaTeX parse error: Expected '}', got 'EOF' at end of input: {PATH:+:{PATH}}
export LD_LIBRARY_PATH=/usr/local/cuda-12.4/lib64${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}

在这里插入图片描述

应用环境变量,生效

#让环境变量生效
source ~/.bashrc

使用下面代码,能够查看CUDA版本,即安装成功

nvcc -version
./__nvcc_device_query

在这里插入图片描述
其中,89与我设备GPU型号RTX 4060匹配。

89 代表你的 GPU 架构版本为 8.9
在 NVIDIA 的 CUDA 开发中,GPU 架构通过计算能力(Compute Capability)来定义,通常以 sm_XX 或 compute_XX 的形式表示。
sm_89 表示 GPU 的架构版本为 8.9。这是 NVIDIA 对 Ada Lovelace 架构 的计算能力标识,如 RTX 4060 等显卡。

💐💐💐 完结撒花! 💐💐💐

三、疑问

3.1 显卡驱动安装好后,CUDA安装报错。

报错信息如下:
在这里插入图片描述感觉是显卡驱动存在问题,尝试卸载显卡驱动重新下载推荐的驱动版本。

#检测可安装的驱动程序
ubuntu-drivers devices

在这里插入图片描述
选择推荐的 nvidia-driver-550 版本驱动。

#卸载Nvidia驱动及相关组件
sudo apt-get remove --purge '^nvidia-.*'
sudo apt-get autoremove
sudo apt install nvidia-driver-550

3.2 显卡驱动安装时,报错“build kernel module error ”

解决流程:
(1)卸载原先驱动

#查看当前已安装驱动
ubuntu-drivers devices
#卸载Nvidia驱动及相关组件
sudo apt-get remove --purge '^nvidia-.*'
sudo apt-get autoremove

(2)前往nvidia官网查找对应驱动
链接:https://www.nvidia.cn/drivers/lookup/
在这里插入图片描述找到对应驱动下载,我依然下载535版本的驱动。
在这里插入图片描述开始安装驱动

sudo apt update && sudo apt upgrade
sudo chmod 777 NVIDIA-Linux-x86_64-535.183.01.run
sudo ./NVIDIA-Linux-x86_64-535.183.01.run 

安装过程中,提示需关闭 Nouveau ,程序自动创建了一个文件,然后重启。重启后继续执行安装文件,看到如下报错:
在这里插入图片描述
去对应文件查找原因,发现第一条报错信息如下:

cc: error: unrecognized command-line option ‘-ftrivial-auto-var-init=zero’

在这里插入图片描述网上搜索了一下,咨询大模型,原因如下:

该错误通常是由于 GCC(GNU Compiler Collection)版本不兼容导致的。Nvidia 显卡驱动程序在安装过程中需要编译内核模块,而某些较新的内核版本需要更高版本的 GCC 才能正确编译。

开始升级GCC版本

#查看当前gcc版本,为11.4
gcc --version
#安装gcc-12
sudo apt-get install gcc-12
sudo apt install g++-12
sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-12 12
sudo update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-12 60
g++ --version
gcc --version

至此,再尝试安装nvidia显卡驱动

四、总结

  • 安装新的软件或系统时,注意记录,以便分析!!!
  • 安装过程最好按照软件的官方教程!!!
  • 安装过程遇到错误不要随意搜索,仔细分析过程中的报错信息,按图索骥!!!

相关文章:

【OS安装与使用】part3-ubuntu安装Nvidia显卡驱动+CUDA 12.4

文章目录 一、待解决问题1.1 问题描述1.2 解决方法 二、方法详述2.1 必要说明2.2 应用步骤2.2.1 更改镜像源2.2.2 安装NVIDIA显卡驱动:nvidia-550(1)查询显卡ID(2)PCI ID Repository查询显卡型号(3&#xf…...

【蓝桥杯集训·每日一题2025】 AcWing 6123. 哞叫时间 python

6123. 哞叫时间 Week 1 2月18日 农夫约翰正在试图向埃尔茜描述他最喜欢的 USACO 竞赛,但她很难理解为什么他这么喜欢它。 他说「竞赛中我最喜欢的部分是贝茜说 『现在是哞哞时间』并在整个竞赛中一直哞哞叫」。 埃尔茜仍然不理解,所以农夫约翰将竞赛以…...

JAVA中常用类型

一、包装类 1.1 包装类简介 java是面向对象的语言,但是八大基本数据类型不符合面向对象的特征。因此为了弥补这种缺点,为这八中基本数据类型专门设计了八中符合面向面向对象的特征的类型,这八种具有面向对象特征的类型,就叫做包…...

【办公类-90-02】】20250215大班周计划四类活动的写法(分散运动、户外游戏、个别化综合)(基础列表采用读取WORD表格单元格数据,非采用切片组合)

背景需求: 做了中班的四类活动安排表,我顺便给大班做一套 【办公类-90-01】】20250213中班周计划四类活动的写法(分散运动、户外游戏、个别化(美工室图书吧探索室))-CSDN博客文章浏览阅读874次&#xff0…...

求矩阵对角线元素的最大值

求主对角线元素的最大值时,让指针指向A[N-1][N-1],指针以(N1)为单位递增,就可以指向对角线每个元素; 求次对角线元素的最大值时,让指针指向A[0][N-1],指针以(N-1)为单位递增,就可以指向副对角线…...

NoSQL之redis数据库

案例知识 关系与分关系型数据库 关系型数据库:Oracle,MySQL,SQL Server 非关系型数据库:Redis,MongDB Redis文件路径 配置文件:/etc/redis/6379.conf 日志文件:/var/log/redis_6379.log 数据文…...

【R语言】非参数检验

一、Mann-Whitney检验 在R语言中,Mann-Whitney U检验(也称为Wilcoxon秩和检验)用于比较两个独立样本的中位数是否存在显著差异。它是一种非参数检验,适用于数据不满足正态分布假设的情况。 1、独立样本 # 创建两个独立样本数据…...

【力扣Hot 100】栈

1. 有效的括号 给定一个只包括 (,),{,},[,] 的字符串 s ,判断字符串是否有效。 有效字符串需满足: 左括号必须用相同类型的右括号闭合。左括号必须以正确的顺序闭合。每个右括号都有一个对应…...

HTTP 与 HTTPS:协议详解与对比

文章目录 概要 一. HTTP 协议 1.1 概述 1.2 工作原理 1.3 请求方法 1.4 状态码 二. HTTPS 协议 2.1 概述 2.2 工作原理 2.3 SSL/TLS 协议 2.4 证书 三. HTTP 与 HTTPS 的区别 四. 应用场景 4.1 HTTP 的应用场景 4.2 HTTPS 的应用场景 概要 HTTP(Hy…...

C++编程语言:抽象机制:模板和层级结构(Bjarne Stroustrup)

目录 27.1 引言(Introduction) 27.2 参数化和层级结构(Parameterization and Hierarchy) 27.2.1 生成类型(Generated Types) 27.2.2 模板转换(Template Conversions) 27.3 类模板层级结构(Hierarchies of Class Templates) 27.3.1 模板对比接口(Templates as Interf…...

建筑兔零基础自学python记录22|实战人脸识别项目——视频人脸识别(下)11

这次我们继续解读代码,我们主要来看下面两个部分; 至于人脸识别成功的要点我们在最后总结~ 具体代码学习: #定义人脸名称 def name():#预学习照片存放位置path M:/python/workspace/PythonProject/face/imagePaths[os.path.join(path,f) f…...

在使用export default 导出时,使用的components属性的作用?

文章目录 析与思考回答 析与思考 在 Vue.js 中,使用 export default 导出组件时,通常会通过 components 选项将子组件也导出出来(其实是将子组件进行局部注册) 。这涉及到 Vue.js 组件的注册机制。为了更清晰地理解这个问题&…...

以太网交换基础(涵盖二层转发原理和MAC表的学习)

在当今的网络世界中,以太网交换技术是局域网(LAN)的核心组成部分。无论是企业网络、学校网络还是家庭网络,以太网交换机都扮演着至关重要的角色。本文将详细介绍以太网交换的基础知识,包括以太网协议、帧格式、MAC地址…...

Vue 实现通过URL浏览器本地下载 PDF 和 图片

1、代码实现如下: 根据自己场景判断 PDF 和 图片,下载功能可按下面代码逻辑执行 const downloadFile async (item: any) > {try {let blobUrl: any;// PDF本地下载if (item.format pdf) {const response await fetch(item.url); // URL传递进入i…...

【2025最新计算机毕业设计】基于SpringBoot+Vue非遗传承与保护研究系统【提供源码+答辩PPT+文档+项目部署】

作者简介:✌CSDN新星计划导师、Java领域优质创作者、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和学生毕业项目实战,高校老师/讲师/同行前辈交流。✌ 主要内容:🌟Java项目、Python项目、前端项目、PHP、ASP.NET、人工智能…...

组合总和力扣--39

目录 题目 思路 剪枝优化 代码 题目 给你一个 无重复元素 的整数数组 candidates 和一个目标整数 target ,找出 candidates 中可以使数字和为目标数 target 的 所有 不同组合 ,并以列表形式返回。你可以按 任意顺序 返回这些组合。 candidates 中的…...

echarts tooltip高亮某个值,某一项选中高亮状态

需求: 当有多组数据的时候,常常需要对比同一x轴的不同线上的点的数据,并且当数据组过多的时候,也就是线过多的时候,需要明确知道我们当前选中的线是哪条。 解决方案: 通过设置显示x轴的tooltip可以显示同…...

Vue 3:基于按钮切换动态图片展示(附Demo)

目录 前言1. Demo2. 升级Demo3. 终极Demo 前言 原先写过类似的知识点: 详细分析el-breadcrumb 面包屑的基本知识(附Demo)详细分析el-card中的基本知识(附Demo) 本篇博客将介绍如何通过点击按钮切换不同的图片&#…...

【Java】泛型与集合篇 —— 泛型

目录 泛型泛型的核心作用泛型类型(类)定义与使用类型参数命名约定泛型方法定义与调用与泛型类的区别通配符上界通配符下界通配符有界类型参数类型擦除类型擦除过程影响好处泛型 泛型的核心作用 泛型是 Java 实现代码复用和类型安全的重要机制。它允许在类、接口和方法中定义…...

【JAVA:list中再定义一个list对象,循环赋值不同的list数据,出现追加重复数据问题】

问题描述: list中再定义一个list对象,循环赋值不同的list数据,结果全部都累加到每条数据中了,每条数据中都出现重复数据。 问题解决: 1.创建树结构方法信息 2.创建一个新的 List 对象,避免引用问题 3.使…...

(LeetCode 每日一题) 3442. 奇偶频次间的最大差值 I (哈希、字符串)

题目:3442. 奇偶频次间的最大差值 I 思路 :哈希,时间复杂度0(n)。 用哈希表来记录每个字符串中字符的分布情况,哈希表这里用数组即可实现。 C版本: class Solution { public:int maxDifference(string s) {int a[26]…...

HTML 语义化

目录 HTML 语义化HTML5 新特性HTML 语义化的好处语义化标签的使用场景最佳实践 HTML 语义化 HTML5 新特性 标准答案&#xff1a; 语义化标签&#xff1a; <header>&#xff1a;页头<nav>&#xff1a;导航<main>&#xff1a;主要内容<article>&#x…...

《通信之道——从微积分到 5G》读书总结

第1章 绪 论 1.1 这是一本什么样的书 通信技术&#xff0c;说到底就是数学。 那些最基础、最本质的部分。 1.2 什么是通信 通信 发送方 接收方 承载信息的信号 解调出其中承载的信息 信息在发送方那里被加工成信号&#xff08;调制&#xff09; 把信息从信号中抽取出来&am…...

Java 加密常用的各种算法及其选择

在数字化时代&#xff0c;数据安全至关重要&#xff0c;Java 作为广泛应用的编程语言&#xff0c;提供了丰富的加密算法来保障数据的保密性、完整性和真实性。了解这些常用加密算法及其适用场景&#xff0c;有助于开发者在不同的业务需求中做出正确的选择。​ 一、对称加密算法…...

如何理解 IP 数据报中的 TTL?

目录 前言理解 前言 面试灵魂一问&#xff1a;说说对 IP 数据报中 TTL 的理解&#xff1f;我们都知道&#xff0c;IP 数据报由首部和数据两部分组成&#xff0c;首部又分为两部分&#xff1a;固定部分和可变部分&#xff0c;共占 20 字节&#xff0c;而即将讨论的 TTL 就位于首…...

Unity | AmplifyShaderEditor插件基础(第七集:平面波动shader)

目录 一、&#x1f44b;&#x1f3fb;前言 二、&#x1f608;sinx波动的基本原理 三、&#x1f608;波动起来 1.sinx节点介绍 2.vertexPosition 3.集成Vector3 a.节点Append b.连起来 4.波动起来 a.波动的原理 b.时间节点 c.sinx的处理 四、&#x1f30a;波动优化…...

Reasoning over Uncertain Text by Generative Large Language Models

https://ojs.aaai.org/index.php/AAAI/article/view/34674/36829https://ojs.aaai.org/index.php/AAAI/article/view/34674/36829 1. 概述 文本中的不确定性在许多语境中传达,从日常对话到特定领域的文档(例如医学文档)(Heritage 2013;Landmark、Gulbrandsen 和 Svenevei…...

蓝桥杯 冶炼金属

原题目链接 &#x1f527; 冶炼金属转换率推测题解 &#x1f4dc; 原题描述 小蓝有一个神奇的炉子用于将普通金属 O O O 冶炼成为一种特殊金属 X X X。这个炉子有一个属性叫转换率 V V V&#xff0c;是一个正整数&#xff0c;表示每 V V V 个普通金属 O O O 可以冶炼出 …...

HarmonyOS运动开发:如何用mpchart绘制运动配速图表

##鸿蒙核心技术##运动开发##Sensor Service Kit&#xff08;传感器服务&#xff09;# 前言 在运动类应用中&#xff0c;运动数据的可视化是提升用户体验的重要环节。通过直观的图表展示运动过程中的关键数据&#xff0c;如配速、距离、卡路里消耗等&#xff0c;用户可以更清晰…...

回溯算法学习

一、电话号码的字母组合 import java.util.ArrayList; import java.util.List;import javax.management.loading.PrivateClassLoader;public class letterCombinations {private static final String[] KEYPAD {"", //0"", //1"abc", //2"…...