【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…...
【蓝桥杯集训·每日一题2025】 AcWing 6123. 哞叫时间 python
6123. 哞叫时间 Week 1 2月18日 农夫约翰正在试图向埃尔茜描述他最喜欢的 USACO 竞赛,但她很难理解为什么他这么喜欢它。 他说「竞赛中我最喜欢的部分是贝茜说 『现在是哞哞时间』并在整个竞赛中一直哞哞叫」。 埃尔茜仍然不理解,所以农夫约翰将竞赛以…...

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

【办公类-90-02】】20250215大班周计划四类活动的写法(分散运动、户外游戏、个别化综合)(基础列表采用读取WORD表格单元格数据,非采用切片组合)
背景需求: 做了中班的四类活动安排表,我顺便给大班做一套 【办公类-90-01】】20250213中班周计划四类活动的写法(分散运动、户外游戏、个别化(美工室图书吧探索室))-CSDN博客文章浏览阅读874次࿰…...
求矩阵对角线元素的最大值
求主对角线元素的最大值时,让指针指向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.使…...

Debian系统简介
目录 Debian系统介绍 Debian版本介绍 Debian软件源介绍 软件包管理工具dpkg dpkg核心指令详解 安装软件包 卸载软件包 查询软件包状态 验证软件包完整性 手动处理依赖关系 dpkg vs apt Debian系统介绍 Debian 和 Ubuntu 都是基于 Debian内核 的 Linux 发行版ÿ…...

【数据分析】R版IntelliGenes用于生物标志物发现的可解释机器学习
禁止商业或二改转载,仅供自学使用,侵权必究,如需截取部分内容请后台联系作者! 文章目录 介绍流程步骤1. 输入数据2. 特征选择3. 模型训练4. I-Genes 评分计算5. 输出结果 IntelliGenesR 安装包1. 特征选择2. 模型训练和评估3. I-Genes 评分计…...

HDFS分布式存储 zookeeper
hadoop介绍 狭义上hadoop是指apache的一款开源软件 用java语言实现开源框架,允许使用简单的变成模型跨计算机对大型集群进行分布式处理(1.海量的数据存储 2.海量数据的计算)Hadoop核心组件 hdfs(分布式文件存储系统)&a…...
Java + Spring Boot + Mybatis 实现批量插入
在 Java 中使用 Spring Boot 和 MyBatis 实现批量插入可以通过以下步骤完成。这里提供两种常用方法:使用 MyBatis 的 <foreach> 标签和批处理模式(ExecutorType.BATCH)。 方法一:使用 XML 的 <foreach> 标签ÿ…...

Kafka入门-生产者
生产者 生产者发送流程: 延迟时间为0ms时,也就意味着每当有数据就会直接发送 异步发送API 异步发送和同步发送的不同在于:异步发送不需要等待结果,同步发送必须等待结果才能进行下一步发送。 普通异步发送 首先导入所需的k…...

[ACTF2020 新生赛]Include 1(php://filter伪协议)
题目 做法 启动靶机,点进去 点进去 查看URL,有 ?fileflag.php说明存在文件包含,原理是php://filter 协议 当它与包含函数结合时,php://filter流会被当作php文件执行。 用php://filter加编码,能让PHP把文件内容…...
Linux系统部署KES
1、安装准备 1.版本说明V008R006C009B0014 V008:是version产品的大版本。 R006:是release产品特性版本。 C009:是通用版 B0014:是build开发过程中的构建版本2.硬件要求 #安全版和企业版 内存:1GB 以上 硬盘…...

解析“道作为序位生成器”的核心原理
解析“道作为序位生成器”的核心原理 以下完整展开道函数的零点调控机制,重点解析"道作为序位生成器"的核心原理与实现框架: 一、道函数的零点调控机制 1. 道作为序位生成器 道在认知坐标系$(x_{\text{物}}, y_{\text{意}}, z_{\text{文}}…...

Python环境安装与虚拟环境配置详解
本文档旨在为Python开发者提供一站式的环境安装与虚拟环境配置指南,适用于Windows、macOS和Linux系统。无论你是初学者还是有经验的开发者,都能在此找到适合自己的环境搭建方法和常见问题的解决方案。 快速开始 一分钟快速安装与虚拟环境配置 # macOS/…...
MySQL基本操作(续)
第3章:MySQL基本操作(续) 3.3 表操作 表是关系型数据库中存储数据的基本结构,由行和列组成。在MySQL中,表操作包括创建表、查看表结构、修改表和删除表等。本节将详细介绍这些操作。 3.3.1 创建表 在MySQL中&#…...