在深度Linux (Deepin) 20中安装Nvidia驱动
文章创作不易,麻烦大家点赞关注收藏一键三连。
在Deepin上面跑Tensorflow, pytorch等人工智能框架不是一件容易的事情。特别是如果你要使用GPU,就得有nvidia的驱动。默认情况下Deepin系统自带的是nouveau开源驱动。这是没办法用tensorflow的。下面内容是如何在Deepin 20.3中安装nvidia驱动。
下载驱动
首先仍然是下载驱动。打开 https://www.nvidia.cn/geforce/drivers/,之后在列表里面查找你的显卡和平台。这里特别要注意的是操作系统一定要选择Linux 64-Bit。语言选中文或者英文都无所谓。你后面安装的时候会发现你选了中文也是英文安装界面。

选好以后点“开始搜索”,找到对应的驱动就可以下载了。后面的步骤比较直接我就不截图了。
准备工作
我们假设下载以后是在~/Downloads目录下。安装之前检查一下显卡驱动。最简单的办法是打开深度应用商店,之后搜索并安装显卡驱动管理器(Graphics Driver Manager)。

安装好以后打开。如果你的驱动选择不是第一个集显驱动,那么把驱动切换成集显驱动。

修改好以后还需要安装几个必要的包:
sudo apt install pkg-config libglvnd-dev libglvnd-core-dev
之后把系统重启以后到grub界面按e键进行编辑。找到initrd那一行,在后面(不要换行)加上以下内容:
nouveau.modeset=0 init 3
熟悉grub的读者可能知道init 3意思是把Linux启动到命令行下面。这主要是因为nvidia驱动不能在x server启动的情况下安装。
文本模式下安装
启动到文本模式下以后,输入用户名和密码之后准备安装(下面例子中我的安装文件名称是NVIDIA-Linux-x86_64-495.44.run):
$ cd ~/Downloads/$ chmod +x NVIDIA-Linux-x86_64-495.44.run$ ./NVIDIA-Linux-x86_64-495.44.run
配置grub
安装好以后输入reboot重启。重启其实默认系统还是会启动nouveau。为了把nouveau禁用掉,进入到/etc/default/grub.d下面,找一下有没有类似10_deepin.cfg的。如果有的话修改一下,在里面内容加上"nouveau.modeset=0"。比如我的修改过以后就是:
GRUB_CMDLINE_LINUX_DEFAULT="$GRUB_CMDLINE_LINUX_DEFAULT DEEPIN_GFXMODE=\$DEEPIN_GFXMODE nouveau.modeset=0"
之后更新grub:
$ sudo update-grub
再重启登录以后,在命令行输入nvidia-smi就可以看到nvidia驱动已经被正确安装了。
安装CUDA
安装CUDA之前,首先安装一下build-essential
sudo apt-get install build-essential
这里以CUDA 11.2为例,首先还是下载:https://developer.nvidia.com/cuda-11.2.0-download-archive?target_os=Linux&target_arch=x86_64&target_distro=Debian&target_version=10&target_type=runfilelocal

可以看到在网页下面有Base Installer的指令。按照指令首先下载:
wget https://developer.download.nvidia.com/compute/cuda/11.2.0/local_installers/cuda_11.2.0_460.27.04_linux.run
下载好以后检查一下是否有执行权限,正常情况下是应该有的。如果没有可以chmod +x加上以后sudo运行。
运行以后第一个屏幕是这样的:

在光标处打字输入accept。之后选择组件:

默认情况下驱动(Driver)是选中的,因为我们已经安装好了驱动,所以没必要在这里选择,把光标用方向键移动到Driver那一行,然后按空格键取消选择(反选以后的状态就像上面图片中一样),之后光标移动到Install按回车。
安装好的文件夹在/usr/local/cuda-11.2(如果版本不同路径名称也会有差异).
之后用root身份编辑/etc/profile文件,将/usr/local/cuda-11.2/bin加入PATH环境变量中,将/usr/local/cuda-11.2/lib64加入LD_LIBRARY_PATH环境变量中。比如我的/etc/profile开头我改成了这样:
if [ "`id -u`" -eq 0 ]; thenPATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/local/cuda-11.2/bin"elsePATH="/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games:/sbin:/usr/sbin:/usr/local/cuda-11.2/bin"fiexport PATHLD_LIBRARY_PATH="/usr/local/cuda-11.2/lib64"export LD_LIBRARY_PATH
之后可以重启一下机器让配置生效。
如果要验证是否安装正确,可以将cuda目录下的samples拷贝出来进行构建(build)。如果能够构建成功不出错那么就说明安装成功了:
$ cp /usr/local/cuda-11.2/samples/ ~/samples -Rf$ cd ~/samples$ make
编译以后的二进制文件应该在~/samples/bin/x86_64/linux/release下面。可以进一步尝试运行一下这些二进制文件。
安装nvidia-docker
如果要在docker里面跑一些深度计算,那么需要安装nvidia-docker。首先还是要安装docker。Deepin自带的软件源里面已经有docker了。所以可以直接用apt进行安装:
$ sudo apt install docker-ce docker.io
之后启动docker服务:
$ sudo systemctl start docker
如果不想老是sudo,可以当前用户加入docker用户组:
$ sudo usermod -aG $USER
上面命令里面可以把$USER换成你需要的用户名。运行以后需要注销一次再重新登录以使得变更生效。
之后运行下面的命令安装nvidia-docker:
$ curl -s -L https://nvidia.github.io/nvidia-docker/gpgkey | sudo apt-key add -$ curl -s -L https://nvidia.github.io/nvidia-docker/debian10/nvidia-docker.list | sudo tee /etc/apt/sources.list.d/nvidia-docker.list$ sudo apt update && sudo apt install -y nvidia-container-toolkit
到这里所有安装就完成了。后面就应该可以用GPU跑绝大多数的人工智能框架了。
相关文章:
在深度Linux (Deepin) 20中安装Nvidia驱动
文章创作不易,麻烦大家点赞关注收藏一键三连。 在Deepin上面跑Tensorflow, pytorch等人工智能框架不是一件容易的事情。特别是如果你要使用GPU,就得有nvidia的驱动。默认情况下Deepin系统自带的是nouveau开源驱动。这是没办法用tensorflow的。下面内容是…...
“LoRA技术中参数初始化策略:为何A参数采用正态分布而B参数初始化为0”
在LoRA(Low-Rank Adaptation)中,参数A和B的初始化策略是经过精心设计的,以确保模型训练的稳定性和有效性。具体来说,参数A通常被初始化为正态分布,而参数B则初始化为0。这样的设计有以下几个优点࿱…...
C语言初阶力扣刷题——349. 两个数组的交集【难度:简单】
1. 题目描述 力扣在线OJ题目 给定两个数组,编写一个函数来计算它们的交集。 示例: 输入:nums1 [1,2,2,1], nums2 [2,2] 输出:[2] 输入:nums1 [4,9,5], nums2 [9,4,9,8,4] 输出:[9,4] 2. 思路 直接暴力…...
理解动手学深度学习的自编包d2l
跟着李沐的《动手学深度学习-PyTorch版》入门Python编程和Pytorch框架,以前是重度Matlab用户,对于Python里的各种包很不习惯。特别是,本书还自己做了一个名为d2l包,有几个问题很是困惑。今天终于弄明白了,写在这里&…...
RK3568使用opencv(使用摄像头捕获图像数据显示)
文章目录 一、opencv相关的类1. **cv::VideoCapture**2. **cv::Mat**3. **cv::cvtColor**4. **QImage**5. **QPixmap**总结 二、代码实现 一、opencv相关的类 1. cv::VideoCapture cv::VideoCapture 是 OpenCV 中用于视频捕捉的类,常用于从摄像头、视频文件、或者…...
OpenEuler学习笔记(十六):搭建postgresql高可用数据库环境
以下是在OpenEuler系统上搭建PostgreSQL高可用数据环境的一般步骤,通常可以使用流复制(Streaming Replication)或基于Patroni等工具来实现高可用,以下以流复制为例: 安装PostgreSQL 配置软件源:可以使用O…...
数学平均数应用
给定一个长度为 n 的数组 a。在一次操作中,你可以从索引 2 到 n−1中选择一个索引i,然后执行以下两个操作之一: 将 a[i−1] 减少 1,同时将 a[i1] 增加 1。 将 a[i1] 减少 1,同时将 a[i−1] 增加 1。 在每次操作后&…...
元旦和春节取名的历史变迁
在中国漫长的历史长河中的春节,真要追溯起来也只有一百多年历史——是从晚清时期才逐渐出现在国人的生活里的,而且那时不叫“春节”而叫“元旦”。只不过随着历史的发展过程,“过年”这个名词也一直在演变,直至1949年最终才定下来…...
USB鼠标的数据格式
USB鼠标的数据格式由HID(Human Interface Device)协议定义,通常包含3个字节的标准数据,具体格式如下: 字节内容描述第1字节按键状态Bit 0: 左键按下(1)<br>Bit 1: 右键按下(1…...
【Numpy核心编程攻略:Python数据处理、分析详解与科学计算】1.27 线性代数王国:矩阵分解实战指南
1.27 线性代数王国:矩阵分解实战指南 #mermaid-svg-JWrp2JAP9qkdS2A7 {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-JWrp2JAP9qkdS2A7 .error-icon{fill:#552222;}#mermaid-svg-JWrp2JAP9qkdS2A7 .erro…...
Kafka常见问题之 java.io.IOException: Disk error when trying to write to log
文章目录 Kafka常见问题之 java.io.IOException: Disk error when trying to write to log1. 问题概述2. 问题排查方向(1)磁盘空间不足(2)磁盘 I/O 故障(3)Kafka 日志文件损坏(4)Kaf…...
libOnvif通过组播不能发现相机
使用libOnvif库OnvifDiscoveryClient类, auto discovery new OnvifDiscoveryClient(QUrl(“soap.udp://239.255.255.250:3702”), cb.Build()); 会有错误: end of file or no input: message transfer interrupted or timed out(30 sec max recv delay)…...
Flink (十二) :Table API SQL (一) 概览
Apache Flink 有两种关系型 API 来做流批统一处理:Table API 和 SQL。Table API 是用于 Scala 和 Java 语言的查询API,它可以用一种非常直观的方式来组合使用选取、过滤、join 等关系型算子。Flink SQL 是基于 Apache Calcite 来实现的标准 SQL。无论输入…...
FFmpeg(7.1版本)的基本组成
1. 前言 FFmpeg 是一个非常流行的开源项目,它提供了处理音频、视频以及其他多媒体内容的强大工具。FFmpeg 包含了大量的库,可以用来解码、编码、转码、处理和播放几乎所有类型的多媒体文件。它广泛用于视频和音频的录制、转换、流媒体传输等领域。 2. F…...
基于微信小程序的辅助教学系统的设计与实现
标题:基于微信小程序的辅助教学系统的设计与实现 内容:1.摘要 摘要:随着移动互联网的普及和微信小程序的兴起,基于微信小程序的辅助教学系统成为了教育领域的一个新的研究热点。本文旨在设计和实现一个基于微信小程序的辅助教学系统,以提高教…...
单片机基础模块学习——超声波传感器
一、超声波原理 左边发射超声波信号,右边接收超声波信号 左边的芯片用来处理超声波发射信号,中间的芯片用来处理接收的超声波信号 二、超声波原理图 T——transmit 发送R——Recieve 接收 U18芯片对输入的N_A1信号进行放大,然后输入给超声…...
HTML<hgroup>标签
例子: 使用hgroup元素标记标题和段落是相关的: <hgroup> <h2>Norway</h2> <p>The land with the midnight sun.</p> </hgroup> 定义和用法: 标签<hgroup>用于包围标题和一个或多个<p&g…...
C++并发编程指南08
以下是经过优化排版后的5.3节内容,详细解释了C中的同步操作和强制排序机制。每个部分都有详细的注释和结构化展示。 文章目录 5.3 同步操作和强制排序假设场景示例代码 5.3.1 同步发生 (Synchronizes-with)基本思想 5.3.2 先行发生 (Happens-before)单线程环境多线程…...
Spring Boot - 数据库集成03 - 集成Mybatis
Spring boot集成Mybatis 文章目录 Spring boot集成Mybatis一:基础知识1:什么是MyBatis2:为什么说MyBatis是半自动ORM3:MyBatis栈技术演进3.1:JDBC,自行封装JDBCUtil3.2:IBatis3.3:My…...
python:洛伦兹变换
洛伦兹变换(Lorentz transformations)是相对论中的一个重要概念,特别是在讨论时空的变换时非常重要。在四维时空的背景下,洛伦兹变换描述了在不同惯性参考系之间如何变换时间和空间坐标。在狭义相对论中,洛伦兹变换通常…...
Zustand 状态管理库:极简而强大的解决方案
Zustand 是一个轻量级、快速和可扩展的状态管理库,特别适合 React 应用。它以简洁的 API 和高效的性能解决了 Redux 等状态管理方案中的繁琐问题。 核心优势对比 基本使用指南 1. 创建 Store // store.js import create from zustandconst useStore create((set)…...
centos 7 部署awstats 网站访问检测
一、基础环境准备(两种安装方式都要做) bash # 安装必要依赖 yum install -y httpd perl mod_perl perl-Time-HiRes perl-DateTime systemctl enable httpd # 设置 Apache 开机自启 systemctl start httpd # 启动 Apache二、安装 AWStats࿰…...
基于uniapp+WebSocket实现聊天对话、消息监听、消息推送、聊天室等功能,多端兼容
基于 UniApp + WebSocket实现多端兼容的实时通讯系统,涵盖WebSocket连接建立、消息收发机制、多端兼容性配置、消息实时监听等功能,适配微信小程序、H5、Android、iOS等终端 目录 技术选型分析WebSocket协议优势UniApp跨平台特性WebSocket 基础实现连接管理消息收发连接…...
OkHttp 中实现断点续传 demo
在 OkHttp 中实现断点续传主要通过以下步骤完成,核心是利用 HTTP 协议的 Range 请求头指定下载范围: 实现原理 Range 请求头:向服务器请求文件的特定字节范围(如 Range: bytes1024-) 本地文件记录:保存已…...
使用van-uploader 的UI组件,结合vue2如何实现图片上传组件的封装
以下是基于 vant-ui(适配 Vue2 版本 )实现截图中照片上传预览、删除功能,并封装成可复用组件的完整代码,包含样式和逻辑实现,可直接在 Vue2 项目中使用: 1. 封装的图片上传组件 ImageUploader.vue <te…...
根据万维钢·精英日课6的内容,使用AI(2025)可以参考以下方法:
根据万维钢精英日课6的内容,使用AI(2025)可以参考以下方法: 四个洞见 模型已经比人聪明:以ChatGPT o3为代表的AI非常强大,能运用高级理论解释道理、引用最新学术论文,生成对顶尖科学家都有用的…...
音视频——I2S 协议详解
I2S 协议详解 I2S (Inter-IC Sound) 协议是一种串行总线协议,专门用于在数字音频设备之间传输数字音频数据。它由飞利浦(Philips)公司开发,以其简单、高效和广泛的兼容性而闻名。 1. 信号线 I2S 协议通常使用三根或四根信号线&a…...
Kafka入门-生产者
生产者 生产者发送流程: 延迟时间为0ms时,也就意味着每当有数据就会直接发送 异步发送API 异步发送和同步发送的不同在于:异步发送不需要等待结果,同步发送必须等待结果才能进行下一步发送。 普通异步发送 首先导入所需的k…...
基于Springboot+Vue的办公管理系统
角色: 管理员、员工 技术: 后端: SpringBoot, Vue2, MySQL, Mybatis-Plus 前端: Vue2, Element-UI, Axios, Echarts, Vue-Router 核心功能: 该办公管理系统是一个综合性的企业内部管理平台,旨在提升企业运营效率和员工管理水…...
[ACTF2020 新生赛]Include 1(php://filter伪协议)
题目 做法 启动靶机,点进去 点进去 查看URL,有 ?fileflag.php说明存在文件包含,原理是php://filter 协议 当它与包含函数结合时,php://filter流会被当作php文件执行。 用php://filter加编码,能让PHP把文件内容…...
