【linux基础】ubuntu系统NVIDIA驱动安装
前言
在安装GPU环境下的软件工具,特别是CUDA/CUDNN等,一定要先把GPU环境搭建好。
NVIDIA驱动安装会遇到各种问题,真希望黄教主可以将各个工具如何安装使用讲解的更加细致、清楚一些,有时候按照官网的步骤安装也会遇到各种问题。
NVIDIA驱动的安装一定要与显卡类型、linux内核版本匹配,驱动安装好之后,软件工具的安装版本也一定要与驱动版本、内核版本匹配,这个容易出问题。
nvidia显卡驱动安装方式有三种:使用ubuntu附加驱动的方式;使用命令行方式安装;使用.run文件的方式进行安装;
博主使用*.run文件安装NVIDIA驱动,可以参考NVIDIA官网here。
操作过程
run文件安装驱动
首先,需要验证本地环境是否适合安装NVIDIA驱动,安装之前需要一些准备工作,参考here;
然后,安装Nvidia显卡的官方驱动和系统自带的nouveau驱动冲突,需要禁用Nouveau驱动Disable the Nouveau drivers 。
1)创建一个文件/etc/modprobe.d/blacklist-nouveau.conf,文件内容如下。
blacklist nouveau options nouveau modeset=0
2) 重新生成initramfs内核;
sudo update-initramfs -u
3)使用Alt+Ctrl+F1退出图形模式,进入命令行模式。
4)关闭图像界面模式;
sudo service lightdm stop
5) 运行CUDA Toolkit的run文件。
sudo sh cuda_xxx.run
运行的过程中,记得其中的OpenGl选项选择no,特别注意选择yes/no的时候要仔细点。
6) 安装完成之后需要重启图像界面,但是在进入图形模式之前,需要开启lightdm,一定要记住.
sudo service lightdm start
7) 使用Alt+Ctrl+F7退出命令行模式,进入图形模式。
另外,在安装驱动和CUDA之前需要将之前安装的文件卸载。
基于CUDA Toolkit的run文件安装时,卸载驱动方法如下:
# Use the following command to uninstall a Toolkit runfile installation: $ sudo /usr/local/cuda-X.Y/bin/uninstall_cuda_X.Y.pl # Use the following command to uninstall a Driver runfile installation: $ sudo /usr/bin/nvidia-uninstall
8) 安装之后需要查看是否有正确的文件权限。
Check that the device files/dev/nvidia* exist and have the correct (0666) file permissions. These files are used by the CUDA Driver to communicate with the kernel-mode portion of the NVIDIA Driver. Applications that use the NVIDIA driver, such as a CUDA application or the X server (if any), will normally automatically create these files if they are missing using the setuidnvidia-modprobe tool that is bundled with the NVIDIA Driver. However, some systems disallow setuid binaries, so if these files do not exist, you can create them manually by using a startup script such as the one below:
查看命令
ls /dev/nvidia*
如果没有需要创建如下文件,文件名自定义。

#!/bin/bash /sbin/modprobe nvidia if [ "$?" -eq 0 ]; then # Count the number of NVIDIA controllers found. NVDEVS=`lspci | grep -i NVIDIA` N3D=`echo "$NVDEVS" | grep "3D controller" | wc -l` NVGA=`echo "$NVDEVS" | grep "VGA compatible controller" | wc -l` N=`expr $N3D + $NVGA - 1` for i in `seq 0 $N`; do mknod -m 666 /dev/nvidia$i c 195 $i done mknod -m 666 /dev/nvidiactl c 195 255 else exit 1 fi /sbin/modprobe nvidia-uvm if [ "$?" -eq 0 ]; then # Find out the major device number used by the nvidia-uvm driver D=`grep nvidia-uvm /proc/devices | awk '{print $1}'` mknod -m 666 /dev/nvidia-uvm c $D 0 else exit 1 fi
9) 安装完成之后可能会出现界面分辨率不正常的问题,可参考here;
也可能遇到无法进入图像界面的情况,可尝试使用以下命令。
使用Alt+Ctrl+F1进入命令行模式,然后kill系统进程。
sudo pkill Xorg or sudo restart lightdm
命令行方式安装
ubuntu-drivers devices # ubuntu检测n卡的可选驱动 sudo apt install nvidia-driver-515 # 根据自己的n卡可选驱动下载显卡驱动
博主设置远程虚拟桌面之后,使用命令行方式安装nvidia驱动,重启之后远程连接,使用nvida-smi似乎没问题,但是NoMachine连接的时候显示有两个桌面,不能使用cuda,不能查找到nvidia设备。之后关闭远程虚拟桌面的配置文件,重启之后可以使用cuda。猜想,应该先安装nvidia驱动,之后再配置远程虚拟桌面,才能正常使用。
还有明明安装的是nvidia-driver-515,但是执行nvidia-detector命令之后的结果却是nvidia-driver-520,怪哉!
命令行方式安装nvidia driver之后的卸载操作
# 卸载驱动 sudo apt-get --purge remove nvidia* sudo apt autoremove # remove Nvidia driver sudo apt-get --purge remove "*nvidia*" # remove cuda toolkit sudo apt-get --purge remove "*cublas*" "cuda*"
关闭远程虚拟桌面,卸载nvidia driver之后重装驱动,重新配置远程虚拟桌面,可以正常进入系统,但是主机连接的显示器,一直存在files、blocks和红黄绿条条的画面,不知道之前不鞥你进入系统是不是就是这个原因引起的。。。但是为什么呢????不敢再使用远程虚拟桌面了,以后尽量不使用吧。。。
但是如果不使用远程虚拟桌面,那么主机必须时刻连接显示器并打开。。。
总结
目前博主已经多次安装过CUDA和NVIDIA,期间遇到过各种意想不到的问题,参考过很多博客,特别注意一点安装NVIDIA驱动之后一定不能随随便便更新系统环境,因为不小心系统NVIDIA驱动就被更新了,这时候就惨了,你需要重新安装NVIDIA驱动和CUDA等,安装的时候最好是参考NVIDIA官网,结合着博客,进行操作。
参考
1. https://oldpan.me/archives/pytorch-gpu-ubuntu-nvidia-cuda90 ;
2. https://docs.nvidia.com/cuda/archive/9.0/cuda-installation-guide-linux/index.html#runfile-nouveau;
3. https://blog.csdn.net/u011884290/article/details/52082809;
4. https://kernel.ubuntu.com/~kernel-ppa/mainline/v4.13/;
5. https://developer.nvidia.com/cuda-toolkit-archive;
6. 官网;
7. tensorflow各个版本的CUDA以及Cudnn版本对应关系;
8. 【ubuntu环境配置】超详细ubuntu20.04/22.04安装nvidia驱动/CUDA/cudnn;
完
心正意诚,做自己该做的事情,做自己喜欢做的事情,安静做一枚有思想的技术媛。
版权声明,转载请注明出处:https://www.cnblogs.com/happyamyhope/
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术
· .NET周刊【3月第1期 2025-03-02】