视觉入门篇——深度学习环境部署(Ubuntu系统安装nvidia显卡驱动)

部署运行你感兴趣的模型镜像

提示:在看此栏文章之前,你应该安装了Ubuntu双系统并完成了相关初配置,之所以没有设置成系列文章就是希望大家可以静下心来仔细去读这些文字,而不是无脑跟着图片进行操作,有些很多需要注意的东西都被我穿插在字里行间



前言

根据我目前参加过的大部分比赛来看,大部分视觉是直接使用的基于深度学习的目标检测等模型,所以要想快速上手做好一个识别部分,就要学会“炼丹”。
接下来的几篇就教你如何配置一个用于比赛的深度学习环境。这里主要介绍的是在ubuntu环境下的部署,windows系统的话看后续的反响吧~


一、安装显卡驱动的必要性?

这里的显卡专指nvidia公司的相关显卡。
之前安装系统的时候就讲过,如果我们没有进行联网操作那么就不会自动安装nvidia显卡驱动。但是我们仍然可以成功进入ubuntu桌面显示,这是因为我们在使用默认的显卡驱动——nouveau
nouveau驱动是nvidia公司的开源驱动,是nvidia显卡在ubuntu系统中的默认显卡驱动。它随着内核自动加载,并不需要额外安装。但是这种开源显卡并不能支持nvidia显卡的功能。以至于大家无法去调节桌面显示的亮度。常常面临死亡亮度。
安装nvidia公司闭源显卡不仅可以调节亮度,还能让我们的显卡发挥其应有的功效

安装驱动前,请将你的电脑切换为独显模式

二、安装步骤

前期工作:禁用默认显卡驱动

伸出你的左手看看手心之中是否有着这样一个印记~这说明你6翻了
在这里插入图片描述
那么我们要如何确定你是否在使用默认显卡驱动呢?
诶,你问到点子上了,请在终端中输入以下命令

lsmod | grep nouveau

如果出现类似的输出,那么说明你在使用默认显卡哦~
在这里插入图片描述
那么这个时候我们就需要将其禁用了,请输入以下指令

sudo gedit /etc/modprobe.d/blacklist.conf

/etc/modprobe.d/blacklist.conf是一个系统级别的配置文件,用于将某些内核模块加入黑名单,阻止它们在系统启动时自动加载,我们的目的就是让内核不要加载默认的显卡驱动,而是为接下来的专用驱动加载做准备。
接着再文本编辑器的最后添加以下命令

blacklist nouveau
options nouveau modeset=0

在这里插入图片描述
然后常规操作,保存并退出(别告诉我不知道保存命令,那说明你没仔细看之前的文章),用以下命令去更新我们的更改

sudo update-initramfs -u

这个时候让我们重启电脑去应用一下,都用终端了,就别用鼠标那么low的东西了,让我们输入强制重启命令吧

sudo reboot

重启后再输入下面的命令,就发现没有任何输出了

lsmod | grep nouveau

这个时候你以为前期工作做完了吗?
并没有,让我们去尝试卸载一下可能自带的老旧的nvidia驱动吧

sudo apt purge nvidia*

卸载完就正式结束了前期工作,大部分没有必要,但是如果你先期安装过显卡驱动的话,未卸载干净的驱动可能会导致你安装错误哦~

安装方法一:run文件暴力安装

1、下载run文件

这个方法我比较常用,但是其实还是比较麻烦的,只不过我习惯了
首先,让我们火狐浏览器去访问中国nvidia网址https://www.nvidia.cn/
为什么是中国nvidia那是因为网址结尾是cn,这说明服务器在中国,下载文件速度就会很快啦~后续下载安装CUDA和CUDNN的时候就能体现出来速度了
在这里插入图片描述

首页有个非常明显的驱动两个字,就怕你找不到~

在这里插入图片描述

然后输入自己的显卡版本,别告诉我你不知道你显卡版本是多少,我的是3060的笔记本,算上比较早的了,点击查找就可以了,注意选择的是linux版本哦,大家现在的电脑一般都是64位的

在这里插入图片描述

然后就可以查看驱动并下载了,这里显示的是最新的驱动版本,大家也可以选择其他版本,版本与内核相关,太新的版本与内核不是特别匹配,可能安装没几天就掉了需要重新安装,这个大家自己选择就好

在这里插入图片描述

这里我下载最新的驱动,大小大概几百MB很快下载完,下载位置默认是在你的下载目录里面,请将其复制或者剪切到主目录(不然会后悔),如果不知道如何操作请去学习,复制粘贴在文件操作时与windows系统快捷键一样

在这里插入图片描述

2、授权并安装依赖

此时,在主目录下打开终端并给run文件进行授权,之前说到linux系统更加看重权限,如果不授权无法进行打开,大家根据自己的驱动文件名进行对应修改即可

sudo chmod a+x NVIDIA-Linux-x86_64-535.179

此时,我们需要安装驱动的相关依赖gcc,g++,make,cmake都是c或者c++的编译器等可见c/c++在驱动届的地位

sudo apt install gcc
sudo apt install g++
sudo apt install cmake
sudo apt install make

默认Y回车安装即可。
如果不安装的话,在下面的操作时就会出现以下类似的报错
在这里插入图片描述
这说明gcc没安装

3、安装驱动

此时我们要按下三个键:Ctrl+Alt+F3,进入命令行界面
也可以终端输入,效果一样

sudo init 3

此时会发现电脑突然黑屏,只有左上角显示
在这里插入图片描述

这里需要输入我们的用户名和密码,密码输入仍然不可见(这也是为什么我说用户名和电脑名尽量一样,这里其实是显示的电脑名我记得,这时候我们直接照抄然后回车即可)

上述依赖的安装也可以在此界面进行操作,你可以把它当做一个终端界面(但是中文可能会乱码并不一定显示,那是因为我没有配置完语言支持,如果配置好了语言支持那也可以显示中文,我懒就算了,这也算为什么让大家先复制run文件到主目录,不然你都不好输命令去复制或移动)
在这里插入图片描述
在命令行界面中输入sudo ./NVIDIA-Linux-x86_64-535.179 即可开启安装,如果命令失败看看自己有没有给文件授权,如果没有的话要重新授权哦
接下来你可能会遇到一些问题选项,这里我会给出解释并给出参考答案。

1、Multiple kernel module types are available for this systems. Which would you like to use?
使用 ​NVIDIA 官方提供的 .run安装包(如 NVIDIA-Linux-x86_64-xxx.run)​​ 在较新系统(尤其是使用 ​Linux 5.x / 6.x 内核,特别是 Ampere / Ada / Hopper 架构显卡,如 RTX 30/40 系列)上安装 NVIDIA 驱动时,安装程序提供的一个 ​重要选项。它允许 NVIDIA 驱动更好地与现代 Linux 发行版和内核模块系统(如 DKMS)协同工作。
这里选择NVIDIA Proprietary
2、An alternate method of installing the NVIDIA driver was detected.(This is usually a package provided by your distributor.) A driver installed via that method may integrate better with you system than a driver installed by naidia-installer
检测到你的系统使用了另一种方式安装 NVIDIA 驱动。通过这种方式安装的驱动,可能会比通过 ‘nvidia-installer’(也就是你正在运行的 NVIDIA 官方 .run 文件)安装的驱动,与你的系统集成得更好。​这说明你可能使用或间接使用了我马上说的其他种方法去安装驱动。
直接Continue installation
3、Please review the message provided by the maintainer of this alternate installation method and decide how to proceed
检测到你可能已经用了别的方法(通常是 Ubuntu 官方软件源)安装了 NVIDIA 驱动,那个方法可能是更安全、更兼容的。决定到底是要继续(.run 安装程序)安装,原因跟2相似
直接Continue installation
4、Would you like to register the kernel module source with DKMS? …
是否希望将 NVIDIA 驱动的内核模块源码注册到 DKMS(Dynamic Kernel Module Support)中。DKMS​ 是 Linux 系统中的一项机制,用于在每次内核升级后,自动重新编译并安装第三方内核模块(比如 NVIDIA 驱动)​,以确保它们在新内核下依旧能够正常工作
直接YES
5、Install NVIDIA’s 32-bit compatibility libraries?
是否要安装 NVIDIA 提供的 32 位(x86)兼容库?​
不玩游戏的话就没必要弄了,这里选择NO
6、Would you like to run the nvidia-xconfig utility to automatically update you X configuration file so that the NVIDIA X driver will be used when you restart X? Any pre-existing X configuration file will be backed up.
你是否要它自动修改你的 X 服务器配置(通常是 /etc/X11/xorg.conf或相关文件),让系统在启动图形界面时默认使用 NVIDIA 显卡驱动,而不是默认的(比如开源驱动或集成显卡驱动)
直接YES

如果你是第一次安装驱动,大概率会遇到这些问题,如果不是第一次可能还会需要比如检测到你已经安装了nvidia驱动内核问你是否继续安装之类的问题,相信大家应该能够自主区分

当你看到诸如此类:
Your X configuration file has been successfully updated. Installation of the NVIDIA Accelerated Graphics Driver for Linux-x86_64 (version:535.113.01) is now complete.
就说明你的显卡驱动安装好了,此时我们可以使用nvidia-smi命令去查看
在这里插入图片描述

输出以下内容基本上就说明你安装完了
接着sudo reboot重启,打开设置,找到关于就发现显卡这栏显示为NVIDIA

在这里插入图片描述
至此,显卡驱动安装完毕

安装方法二、图像化界面安装

看到方法一那么一堆操作,可能就有人要问了,学长学长,是不是我每次安装显卡驱动都要这样操作呢?实际上除了禁用默认驱动和安装依赖的话,如果多次安装显卡驱动的话,确实是这个操作(我以前就是这么干的,装了十几遍就熟练了)
那就有人要问了,学长学长,你这个方法太吃操作了,有没有更简单一点的操作?
那我就要回答了,有的兄弟。但是方法一其实更加接近安装的本质。接下来给大家带来一种简便操作。

1、检测推荐显卡版本

输入以下命令,即可找到recommend的显卡驱动版本

ubuntu-drivers devices

在这里插入图片描述
这里可以看到455驱动是被推荐的。

2、附加驱动安装显卡驱动

不知道大家还记不记得图形化界面操作换源的时候,选项中出现了附加驱动的选项,这里我们点进去
在这里插入图片描述

这里因为我已经使用了方法一进行安装驱动了,所以显示该设备正在使用手动安装的驱动,这里给出了很多显卡驱动版本,大家下拉选择刚才输出的版本然后应用更改就可以了

在这里插入图片描述
怎么样,是不是非常简单并且不吃操作~

安装方法三、官方工具安装驱动

方法二已经非常简便了,那有人就要问了,学长学长,有没有更简单的操作,最好一个命令就能完成的傻瓜式操作?
诶~有的兄弟
如果你确实看不懂上面的任何一个方法,还有一个nvidia官方的自动安装驱动工具,甚至你都不需要进行默认驱动的禁用!!!

sudo ubuntu-drivers autoinstall 

是的你没有看错,就这一条,然后Y确定一直等着就行,它会自动给你下载最新版本并且符合你当前显卡的驱动
并且这个方法经过了我的验证,确实可以实现,不过不是最新版本,差一点点。
在这里插入图片描述

三、可能遇到的问题

  • 对于nvidia新显卡例如5060在ubuntu22.04系统上使用run文件进行安装时可能发生的报错
    在这里插入图片描述
    按回车之后显示

在这里插入图片描述
这里我们使用vim去看一下报错log

在这里插入图片描述
这是一个典型的GCC编译器版本不匹配问题。内核是用GCC 12编译的,但你当前环境中只有GCC 11,导致NVIDIA驱动编译失败。
解决办法
安装gcc-12并指定gcc-12执行.run文件即可

sudo apt install gcc-12
sudo CC=gcc-12 ./NVIDIA-LINUX*****.run

总结

大家选择了哪方法安装呢?欢迎在评论区留言讨论没有涉及到的问题,接下来应该是CUDA等强大工具的安装部署,大家敬请期待

您可能感兴趣的与本文相关的镜像

PyTorch 2.5

PyTorch 2.5

PyTorch
Cuda

PyTorch 是一个开源的 Python 机器学习库,基于 Torch 库,底层由 C++ 实现,应用于人工智能领域,如计算机视觉和自然语言处理

<think>我们正在讨论如何为系统选择合适的内核模块类型。用户的问题集中在“which kernel module type is suitable for my system”。根据之前的引用,特别是引用[1]和[3],我们了解到内核模块需要匹配特定的内核版本。同时,引用[2]提到了模块参数的传递方式。 然而,用户的问题比较宽泛,我们需要更具体的信息。通常,内核模块类型的选择取决于你的具体需求。常见的内核模块类型包括: 1. 设备驱动程序(Character devices, Block devices, Network devices) 2. 文件系统 3. 网络协议 4. 系统调用等 由于用户没有提供具体需求,我们可以给出一般性建议: 步骤1:确定你的内核版本 使用命令:`uname -r` 获取当前运行的内核版本。因为模块必须针对特定的内核版本编译。 步骤2:明确模块的功能 - 如果你要添加一个新的设备支持,那么选择设备驱动模块。 - 如果你要实现一个自定义文件系统,那么选择文件系统模块。 - 等等。 步骤3:考虑模块的加载方式 根据引用[2],模块参数可以通过内核命令行传递(对于内置模块)或者通过modprobe命令传递(对于可加载模块)。所以,你需要决定: - 可加载模块(Loadable Kernel Module, LKM):可以在系统运行时动态加载和卸载,适合开发和调试。 - 内置模块(Built-in):编译进内核镜像,随内核一起启动,适合关键功能。 步骤4:编写模块 参考引用[3],开始编写一个简单的内核模块,并编写Makefile。确保Makefile中的KERNELRELEASE变量与你的内核版本匹配(引用[1])。 步骤5:调试 引用[4]提到了一种调试方法:将调试的虚拟机导出为镜像并在本地服务器上运行,这样可以在本地屏幕上看到内核日志。 步骤6:文件系统相关(如果适用) 如果模块涉及文件系统,引用[5]提供了文件系统实现的一些信息,特别是关于FAT文件系统的分配方式。 因此,在没有具体需求的情况下,我们建议从可加载模块(LKM)开始,因为它灵活且易于调试。 相关问题: 1. 如何编写一个简单的Linux内核模块? 2. 如何传递参数给内核模块? 3. 如何调试内核模块? 4. 如何将模块编译进内核(而不是可加载模块)? 5. 内核模块与内置模块的主要区别是什么?</think>### 选择适合系统的内核模块类型 内核模块类型的选择取决于系统需求和功能目标,以下是关键考虑因素及建议: 1. **可加载模块 (Loadable Kernel Module - LKM)** - **适用场景**:动态扩展内核功能(如设备驱动、文件系统支持),无需重启系统。 - **优势**:灵活加载/卸载,节省内存资源,适合开发和调试[^3]。 - **要求**:需严格匹配内核版本(通过`uname -r`获取),模块签名需与内核配置一致[^1]。 - **示例**:外设驱动(USB设备)、临时网络协议支持。 2. **内置模块 (Built-in Module)** - **适用场景**:关键功能(如启动必备驱动、安全模块),需随内核启动立即生效。 - **优势**:启动速度快,无运行时加载开销。 - **配置**:通过内核编译选项(如`make menuconfig`)将模块直接编译进内核[^2]。 - **参数传递**:模块参数需在内核启动命令行指定(如`root=/dev/sda1 module.param=value`)[^2]。 3. **文件系统模块** - **适用场景**:支持特定文件系统(如FAT、ext4、NTFS)。 - **优化建议**:频繁访问的文件系统(如FAT)可启用内存缓存提升性能[^5]。 - **示例**:嵌入式系统需定制只读文件系统时选择对应模块。 **决策流程**: ```mermaid graph TD A[功能是否必需?] -->|是| B[是否需启动即用?] A -->|否| C[选择LKM] B -->|是| D[内置模块] B -->|否| C ``` **验证步骤**: 1. 检查当前内核版本: ```bash uname -r # 输出示例:5.15.0-86-generic ``` 2. 查看现有模块: ```bash lsmod | grep -i "模块名" ``` 3. 测试模块加载: ```bash sudo modprobe 模块名 # 加载LKM ``` ---
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值