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

【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显卡驱动

四、总结

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

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

相关文章:

  • 【登月计划】 DAY2 中期:产品研发与设计验证(4-6)--《设计图纸如何从电脑飞进生产线?揭秘研发系统的 “暗箱操作”》
  • 苍穹外卖day8 地址上传 用户下单 订单支付
  • 网络安全-防御 第三次作业(图像配置和拓扑测试后续)
  • 接口测试-API测试中常用的协议(中)
  • 电脑连接wifi成功但上不了网 电脑网络故障解决方法
  • 什么是bundle?什么是chunk?什么是module?
  • HOW - 服务接口超时时间和建议策略
  • 新手向:SpringBoot后端查询到数据,前端404?(附联调时各传参方式注解总结-带你一文搞定联调参数)
  • Qt的QToolBox样式设置
  • 科普:“git“与“github“
  • 基于Spring Security 6的OAuth2 系列之十七 - 高级特性--设备授权码模式
  • Coze怎么发送消息到飞书
  • stm32hal库寻迹+蓝牙智能车(STM32F103C8T6)
  • HTML/CSS中交集选择器
  • Linux 进程地址空间第二讲动态库地址
  • 每日学习Java之一万个为什么?
  • vue打包
  • Ubuntu编译ZLMediaKit
  • 数据结构——模拟栈例题B3619
  • 使用 Docker 部署 Spark 集群