debian11安装Nvidia驱动及Docker运行

news2024/11/15 15:37:25

文章目录

  • 前言
    • 硬件及软件环境
  • 驱动
    • 下载驱动
    • 安装
      • 禁用xserver
      • 禁用nouveau
      • 安装依赖
      • 设置可执行并运行
      • 检查安装结果
  • Docker配置
    • Docker安装
    • nvidia-container-runtime安装[^4]
      • 命令
      • 脚本内容
      • 执行脚本
      • 安装 nvidia-container-runtime
      • 检测
    • Docker gpu 验证
  • 卸载指令
  • 总结
  • 异常处理参考链接

前言

博主由于视觉开发需求, 配置nvidia驱动并映射到docker中运行, 在本文中记录过程及遇到的问题

硬件及软件环境

   Static hostname: debian
         Icon name: computer-desktop
           Chassis: desktop
  Operating System: Debian GNU/Linux 11 (bullseye)
            Kernel: Linux 5.10.0-19-amd64
      Architecture: x86-64
     
  CPU: 12th Gen Intel(R) Core(TM) i7-12700F
  GPU: Nvidia Quadro M2000

驱动

下载驱动

根据自己的显卡型号去官网搜索对应的驱动程序. 本机选择470.161…03版本驱动.
NVIDIA 驱动程序下载 官方高级驱动搜索
在这里插入图片描述
cuda对应驱动版本要求对照表:
NVIDIA CUDA Toolkit Release Notes

在这里插入图片描述
注意!

  1. 直接使用apt-get install nvidia-driver时不可运行(can not communicate with nvidia driver 类似报错)
  2. 下载最新驱动525时不可运行(can not communicate with nvidia driver 类似报错)
  3. 安装时需屏蔽x server及nouveau1

安装

禁用xserver

sudo service gdm3 stop

输入该行指令后会进入命令行状态, 此时只有一个光标, 通过按Ctrl + Alt + F1Ctrl + Alt + F2即可跳出输入用户名密码的指令行.

禁用nouveau

sudo bash -c "echo blacklist nouveau > /etc/modprobe.d/blacklist-nvidia-nouveau.conf"
sudo bash -c "echo options nouveau modeset=0 >> /etc/modprobe.d/blacklist-nvidia-nouveau.conf"

禁用后重启计算机

sudo reboot

安装依赖

后续编译使用的依赖软件2

sudo apt-get install gcc g++ cmake pkg-config
sudo apt-get install linux-headers-$(uname -r|sed 's/[^-]*-[^-]*-//')

设置可执行并运行

chmod +x ~/Downloads/NVIDIA-Linux-x86_64-470.161.03.run

# 需要以管理员权限运行
sudo ~/Downloads/NVIDIA-Linux-x86_64-470.161.03.run 

安装完成后, 重启计算机并删除禁用nouveau时创建的blacklist文件

检查安装结果

nvidia-smi

# 输出
Thu Mar  9 14:22:29 2023       
+-----------------------------------------------------------------------------+
| NVIDIA-SMI 470.161.03   Driver Version: 470.161.03   CUDA Version: 11.4     |
|-------------------------------+----------------------+----------------------+
| GPU  Name        Persistence-M| Bus-Id        Disp.A | Volatile Uncorr. ECC |
| Fan  Temp  Perf  Pwr:Usage/Cap|         Memory-Usage | GPU-Util  Compute M. |
|                               |                      |               MIG M. |
|===============================+======================+======================|
|   0  Quadro M2000        Off  | 00000000:01:00.0  On |                  N/A |
| 63%   59C    P0    38W /  75W |    769MiB /  4041MiB |     30%      Default |
|                               |                      |                  N/A |
+-------------------------------+----------------------+----------------------+
                                                                               
+-----------------------------------------------------------------------------+
| Processes:                                                                  |
|  GPU   GI   CI        PID   Type   Process name                  GPU Memory |
|        ID   ID                                                   Usage      |
|=============================================================================|
|    0   N/A  N/A      1835      G   /usr/lib/xorg/Xorg                282MiB |
|    0   N/A  N/A      1982      G   /usr/bin/gnome-shell              110MiB |
|    0   N/A  N/A     30799      G   gnome-control-center               39MiB |
+-----------------------------------------------------------------------------+

Docker配置

Docker安装

安装可以参考此文如何建立并使用docker

nvidia-container-runtime安装3

命令

nano nvidia-container-runtime-script.sh

脚本内容

curl -s -L https://nvidia.github.io/nvidia-container-runtime/gpgkey | \
  sudo apt-key add -
distribution=$(. /etc/os-release;echo $ID$VERSION_ID)
curl -s -L https://nvidia.github.io/nvidia-container-runtime/$distribution/nvidia-container-runtime.list | \
  sudo tee /etc/apt/sources.list.d/nvidia-container-runtime.list
sudo apt-get update

执行脚本

nvidia-container-runtime-script.sh

安装 nvidia-container-runtime

sudo apt-get install nvidia-container-runtime
sudo systemctl restart docker # 重启docker

检测

which nvidia-container-runtime-hook 
/usr/bin/nvidia-container-runtime-hook

Docker gpu 验证

docker pull nvidia/cuda:11.3.1-base-ubuntu20.04
docker run --gpus all --rm -it nvidia/cuda:11.3.1-base-ubuntu20.04 bash

nvidia-smi
#输出如下, 说明运行成功:
root@8a57ae3075d7:/# nvidia-smi
Thu Mar  9 06:42:20 2023       
+-----------------------------------------------------------------------------+
| NVIDIA-SMI 470.161.03   Driver Version: 470.161.03   CUDA Version: 11.4     |
|-------------------------------+----------------------+----------------------+
| GPU  Name        Persistence-M| Bus-Id        Disp.A | Volatile Uncorr. ECC |
| Fan  Temp  Perf  Pwr:Usage/Cap|         Memory-Usage | GPU-Util  Compute M. |
|                               |                      |               MIG M. |
|===============================+======================+======================|
|   0  Quadro M2000        Off  | 00000000:01:00.0  On |                  N/A |
| 62%   53C    P0    28W /  75W |    761MiB /  4041MiB |     34%      Default |
|                               |                      |                  N/A |
+-------------------------------+----------------------+----------------------+
                                                                               
+-----------------------------------------------------------------------------+
| Processes:                                                                  |
|  GPU   GI   CI        PID   Type   Process name                  GPU Memory |
|        ID   ID                                                   Usage      |
|=============================================================================|
+-----------------------------------------------------------------------------+

卸载指令

卸载安装的驱动可以使用4:

sudo apt-get --purge remove "*nvidia*"
sudo /usr/bin/nvidia-uninstall

总结

本文用来记录Debian11在安装nvidia驱动和docker运行时遇到的一些问题, 由于是事后补写可能中间有些异常处理略有缺漏, 各位同学有问题可以留言交流.

异常处理参考链接

显卡驱动报错:NVIDIA-SMI has failed because it couldn’t communicate with the NVIDIA driver.
固件错误Possible missing firmware解决办法


  1. Debian安装英伟达(NVIDIA)驱动一站式避坑教学(Ubuntu通用) ↩︎

  2. Debian 10.2命令安装Nvidia显卡驱动成功,问题回顾 ↩︎

  3. Docker GPU 调用 ↩︎

  4. Ubuntu 卸载 Nvidia 驱动和安装最新驱动 ↩︎

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

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

相关文章

Spring Boot+Vue前后端分离项目练习07之网盘项目注册登陆页面实现

1.Axios安装和接口封装 Axios是一个易用、简洁且高效的http库, 使用Promise管理异步,支持请求和响应拦截器,自动转换JSON数据等高级配置,是在vue项目中十分常见前端请求库,使用以下指令安装。 npm install axiosnpm …

工作中git常用操作

前言 在各种版本并行,需求不断迭代的过程中,我们经常会遇到各种打断开发的场景: 场景一:当前版本功能开发到一半,上级临时要求去修复某个线上bug?你能说不吗, 那当然绝对服从组织安排 &#x…

代码随想录算法训练营day54 | 动态规划之子序列 392.判断子序列 115.不同的子序列

day54392.判断子序列1.确定dp数组(dp table)以及下标的含义2.确定递推公式3.dp数组如何初始化4.确定遍历顺序5.举例推导dp数组115.不同的子序列1.确定dp数组(dp table)以及下标的含义2.确定递推公式3.dp数组如何初始化4.确定遍历顺…

[2.2.3]进程管理——调度算法的评价指标

文章目录第二章 进程管理调度算法的评价指标(一)CPU利用率(二)系统吞吐量(三)周转时间(四)等待时间(五)响应时间小结第二章 进程管理 调度算法的评价指标 CP…

861. 翻转矩阵后的得分

861. 翻转矩阵后的得分https://leetcode.cn/problems/score-after-flipping-matrix/ 难度中等236 给你一个大小为 m x n 的二元矩阵 grid ,矩阵中每个元素的值为 0 或 1 。 一次 移动 是指选择任一行或列,并转换该行或列中的每一个值:将所…

【Flutter】开发环境配置:FlutterSDK、Android SDK、iOS SDK

文章目录 一、前言二、Dart和Flutter的关系三、本地开发环境配置1.FlutterSDK2.配置镜像站3.安装安卓工具链4.安装XCode5.Dart 配置四、配置完成五、总结一、前言 在前面的课程中,我们学习了Dart语言的基本用法,并在DartPad线上环境对代码执行。 接下来,我们学习如何在本地…

如何为Keil安装version 5版本的ARM Compiler(Use default compliler version 5)

目录1. 为什么要安装version 5编译器2. 从原来MDK5.37以下版本(MDK536)的软件中提取AC5的编译器3. 解压完成后的文件如下图,打开ARM文件夹4. 将AMRCC文件夹拷贝到你的keil安装目录的AMR文件下5. 打开Keil,点击Project→Manage→Project Items&#xff0c…

爬虫(一)基础介绍

文章目录1. 爬虫简介1.1 robots协议1.2 反爬手段1.3 请求组成1.4 响应组成1.5 POST 请求与 GET 请求2. requests库2.1 GET请求2.2 POST请求2.3 代理1. 爬虫简介 网络爬虫也叫做网络机器人,可以代替人们自动地在互联网中进行数据信息的采集与整理。它是一种按照一定的…

哪种类型蓝牙耳机佩戴最舒服?舒适度最好的蓝牙耳机推荐

如果您想在外出时听自己喜欢的音乐,您需要佩戴耳机,当前的耳机都足够小,可以将它们放在口袋里,即使它们在充电盒中也是如此,舒适度一直都是人们所追求的,舒适之余,佩戴同样稳固更加令人安心&…

ASEMI高压MOS管7N65参数,7N65图片,7N65大小

编辑-Z ASEMI高压MOS管7N65参数: 型号:7N65 漏极-源极电压(VDS):650V 栅源电压(VGS):30V 漏极电流(ID):7A 功耗(PD)…

中文数字对照表--课后程序(Python程序开发案例教程-黑马程序员编著-第4章-课后作业)

实例5:中文数字对照表 阿拉伯数字因其具有简单易写、方便使用的特点成为了最流行的数字书写方式,但在使用阿拉伯数字计数时,可以对某些数字不漏痕迹的修改成其它数字,例如,将数字“1”修改为数字“7”,将数…

Excel·VBA矩阵、求逆矩阵、解线性方程组

初等变换法求逆矩阵 vba内置函数MInverse可以计算矩阵的逆矩阵,《Office VBA 参考-WorksheetFunction.MInverse 方法 (Excel)》 初等变换法代码思路 对于一个3x3矩阵(下图3x3红色部分)右侧扩充单位矩阵(下图3x3黑色部分&#xf…

海格里斯HEGERLS料箱穿梭车生产厂家|配有高速货物提升机滚筒输送线设备的料箱四向穿梭车立体库

随着物流自动化需求的增中和自动化料箱数量的增加,现在市场对料箱四向穿梭车系统的需求正在逐渐增加,这也使得四向穿梭车在储物效率和储物空间利用率方面的优势的更加突出,其应用场景也在不断扩大。料箱四向穿梭车仓储方案已成为一种高效、智…

svg的深度利用绕过waf

目录 DOM树的构建 源码 img失败的原因 解法一 --- svg成功的原因 触发流程 实验 解法二 --- details标签 事件触发流程 实验验证 总结 首先在解这道题的开始连了解下什么是DOM树,以及DOM树的构建 DOM树的构建 我们知道JS是通过DOM接口来操作文档的&…

针对博客系统的自动化测试

针对博客系统进行web自动化测试 文章目录针对博客系统进行web自动化测试引入依赖创建出合适的目录结构AutoTestUtilsBlogLoginTestBlogListTestBLogEditTestBlogDetailTest使用套件执行关于博客系统的自动化测试的源代码已经上传至gitee链接 引入依赖 首先在pom.xml上导入依赖…

【错误记录】映射文件发生改变

遇到映射文件发生改变在项目中有的地方是使用反射机制进行的操作,可能对于类进行了某些更改,科室映射文件没有更改,采用匿名就会出现这样的问题,解决办法要么更改映射文件,要不不要使用匿名调用。JavaDocs路径报红Clas…

ruoyi-vue-plus学习2(异步日志)(@EventListener)(@Async)(线程池池相关)

ruoyi-vue-plus的日志打印是通过监听器实现的,和原版若依稍稍不同 找到登录时记录日志的方法 该方法如下 这里的参数LogininforEvent为消息类,注意,貌似高版本的spring定义消息类不需要继承ApplicationEvent类也行。直接使用普通实体类就行…

详解-序列化和反序列化

文章目录问题使用场景序列化协议TCP/IP 4 层模型的哪一层?序列化协议问题 什么是序列化和反序列化? Java对象保存在文件中/网络传输Java对象,这些场景需要用到序列化。 序列化:将Java对象或数据结构转化成二进制流反序列化:将二…

Git简单使用

Git简单使用 git初始化操作 pwd&#xff1a;显示当前目录 git init&#xff1a;把这个目录变成git可以管理的仓库 git clone&#xff1a; 从现有 Git 仓库中拷贝项目&#xff08;类似 svn checkout&#xff09;。 克隆仓库的命令格式为&#xff1a; git clone <repo&g…

【Java基础 下】 031 -- 反射 动态代理

一、什么是反射&#xff1f; 换句话说就是&#xff08;从类里拿出来&#xff09; 可以获取到&#xff1a;&#xff08;利用反射&#xff0c;我们可以获取到类中所有的东西&#xff09; 获取是先从class字节码文件中获取的 二、获取class对象的三种方式 三种方式也对应了三种阶段…