[Share Experiences] Deepin V23安装最新英伟达驱动(版本535.54)
Tofloor
poster avatar
川顺页
deepin
2023-06-17 22:21
Author

折腾背景

  • 自带的闭源驱动有时候动画有撕裂感
  • 加上安装pytorch的时候,提示找不到英伟达驱动,感觉可能deepin内置的驱动可能阉割了开发功能,所以决定安装英伟达官方提供的驱动。

教程

  1. 去官方论坛发布页面,最上面的置顶帖,帖子内容如下:
Current releases
Current production branch release: 535.54.03 (x86_64 13)
Current new feature branch release: 530.41.03 (x86_64 157)
Current beta release: 535.43.02 (x86_64 36)
  • 可以看到目前最新版是535.43.02,不过这个是beta版,也就是测试版,不是正式版,所以你去官网驱动下载页面是搜不到的,要去论坛。
  1. 点进去535的链接,进入详细页面
Release highlights since 535.43.02:

Fixed a bug that caused modesets to fail in some Wayland configurations.

Fixed a bug that caused head-mounted displays (HMDs) to display black after a modeset.

Fixed a bug that prevented SLI Mosaic controls from being displayed in the nvidia-settings control panel when using GSP Firmware.

Fixed a bug that could cause image corruption when unbinding Vulkan
sparse textures.

[README 34 | Linux x86_64 27 | Solaris 3 | FreeBSD x86_64 1 | Kernel driver source 7]
  • 点击Linux x86_64这个下载就行了。
  1. 更新前先把已经安装好的闭源驱动给卸载了。
sudo apt purge nvidia-driver nvidia-kernel-dkms nvidia-*
sudo apt autoremove
  1. 观察一下英伟达的驱动,目前还是在运行中。
lsmod | grep nvidia

# 输出
nvidia_drm             65536  4
drm_kms_helper        204800  1 nvidia_drm
nvidia_modeset       1245184  3 nvidia_drm
nvidia              56487936  92 nvidia_modeset
drm                   647168  8 drm_kms_helper,nvidia,nvidia_drm
video                  61440  2 asus_wmi,nvidia_modeset
  • 所以重启一下,才能完成生效。
sudo reboot now
  1. 观察开源驱动是否起来了,因为你卸载闭源驱动后,linux内核会自动启动开源驱动来代替,如果没输出就是没用开源驱动,否则说明开源驱动已经安装起来了
$ lsmod | grep nouveau   
nouveau              2121728  0
  • 但是我待会还要装闭源驱动,不需要这个开源驱动(开源驱动性能也不咋地)
  • 所以我需要屏蔽这个开源驱动,输入下面的命令完成这个事情。
sudo tee -a /etc/modprobe.d/blacklist-nouveau.conf > /dev/null <
  • 更新一下内核信息,让内核下次启动的时候自动屏蔽开源英伟达驱动。
sudo update-initramfs -u
  • 再次重启一下(可能重启会比较慢,因为他读不到驱动了,最慢可能需要2-3分钟才能关机)。
sudo reboot now
  • 最后再验证一下开源英伟达驱动是否正确屏蔽了(没输出任何信息就说明成功屏蔽)
lsmod | grep nouveau
  1. 安装英伟达论坛下载的最新驱动(需要提前安装好gcc/g++, dkms环境)。
  • 安装环境
sudo apt install gcc g++ dkms
  • 初步安装
chmod +x NVIDIA-Linux-x86_64-535.54.03.run
sudo ./NVIDIA-Linux-x86_64-535.54.03.run
  • 此时提示报错:
ERROR: You appear to be running an X server; please exit X before installing.  For further details, please  
         see the section INSTALLING THE NVIDIA DRIVER in the README available on the Linux driver download    
         page at www.nvidia.com.
  • 报错原因大概是已经运行了一个xorg环境了,没办法安装驱动。
  • 解决办法1
  • 按下Ctrl + Alt + F3(F2/F3/F4/F5都可以)进入tty(一个终端环境),然后输入你的账号名/密码进行登陆。
  • 然后运行下面的命令关闭桌面相关服务(可以用tab案填充输入,防止输错了)。
sudo systemctl stop lightdm.service
  • 再进入对应目录安装英伟达驱动,一路回车即可。
sudo ./NVIDIA-Linux-x86_64-535.54.03.run
  • 解决办法2(推荐)
  • 查看帮助选项,可以看出有一个高级设置-A
sudo ./NVIDIA-Linux-x86_64-535.54.03.run --help

# 输出
.....
 -A, --advanced-options
      Print usage information for the common commandline options as well as the advanced options, and then exit.
  • 查看高级设置,可以看到这选项可以跳过x server检查
sudo ./NVIDIA-Linux-x86_64-535.54.03.run -A

# 输出
......
  --no-x-check
      Do not abort the installation if nvidia-installer detects that an X server is running.  Only under very rare circumstances should this option be used.
......
  • 所以,利用--no-x-check来安装驱动,一路回车即可。
sudo ./NVIDIA-Linux-x86_64-535.54.03.run --no-x-check
  1. 验证驱动是否ok
  • 用自带的nvidia-smi查看英伟达驱动信息。
nvidia-smi

# 输出结果如下:
Sat Jun 17 13:55:14 2023       
+---------------------------------------------------------------------------------------+
| NVIDIA-SMI 535.54.03              Driver Version: 535.54.03    CUDA Version: 12.2     |
|-----------------------------------------+----------------------+----------------------+
| 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  NVIDIA GeForce RTX 40xx        Off | 00000000:01:00.0  On |                  N/A |
|  0%   34C    P5              22W / xxx W |    793MiB / xxxx MiB |     25%      Default |
|                                         |                      |                  N/A |
+-----------------------------------------+----------------------+----------------------+
                                                                                         
+---------------------------------------------------------------------------------------+
| Processes:                                                                            |
|  GPU   GI   CI        PID   Type   Process name                            GPU Memory |
|        ID   ID                                                             Usage      |
|=======================================================================================|
|    0   N/A  N/A      3524      G   /usr/lib/xorg/Xorg                          351MiB |
|    0   N/A  N/A      5677      G   /usr/bin/deepin-kwin_x11                     97MiB |
|    0   N/A  N/A      5830      G   /opt/freedownloadmanager/fdm                 37MiB |
|    0   N/A  N/A      6227      G   /proc/self/exe                              148MiB |
|    0   N/A  N/A      6916      G   /usr/bin/deepin-deepinid-client               7MiB |
|    0   N/A  N/A      7075      G   dmanHelper                                    7MiB |
|    0   N/A  N/A      7288      G   ...ures=SpareRendererForSitePerProcess      108MiB |
+---------------------------------------------------------------------------------------+
  • 观察pytorch是否正确识别英伟达驱动(我已经安装cuda 11.8,以及pytorch_cu118),这个是可选项。
python3 -c "import torch; print('GPU is OK?', torch.cuda.is_available())"
  • 输出结果为:GPU is OK? True,说明没有问题。

收尾工作(强迫症专属)

安装驱动过程中出现dkms警告。
  • 查看dkms驱动加载状态,可以看到中间的英伟达的dkms是built而不是installed,这个表示已经构建了但是没有安装
dkms status

# 输出结果
deepin-anything/0.0, 6.1.11-amd64-desktop-hwe, x86_64: installed 
nvidia/535.54.03, 6.1.11-amd64-desktop-hwe, x86_64: built 
r8125/9.011.01, 6.1.11-amd64-desktop-hwe, x86_64:installed
  • 观察驱动安装日志
cat /var/log/nvidia-installer.log
  • 截取的一部分输出,大概意思是内核里面已经有构建好了,不需要装dkms了
ERROR: Failed to run `/usr/sbin/dkms install --no-depmod -m nvidia -v 535.54.03 -k 6.1.11-amd64-desktop-hwe`: 
nvidia.ko:
Running module version sanity check.
Module version 535.54.03 for nvidia.ko
exactly matches what is already found in kernel 6.1.11-amd64-desktop-hwe.
DKMS will not replace this module.
You may override by specifying --force.
  • 不过我比较强迫症,决定还是强制安装一下,按他的说法就是加一个--force就行了。
sudo /usr/sbin/dkms install --no-depmod -m nvidia -v 535.54.03 -k 6.1.11-amd64-desktop-hwe --force
  • 最后再看一下dkms状态,ok,完美。
dkms status                                                               
# 输出结果              
deepin-anything/0.0, 6.1.11-amd64-desktop-hwe, x86_64: installed
nvidia/535.54.03, 6.1.11-amd64-desktop-hwe, x86_64: installed (original_module exists)
r8125/9.011.01, 6.1.11-amd64-desktop-hwe, x86_64: installed
Reply Favorite View the author
All Replies
2 / 2
To page
fozei
deepin
2024-04-25 08:55
#21

向楼主请教:我突然发现我虽然装好了,但是貌似显卡并没有工作,而是核心显卡在工作:

image.png

那个 No running processes found真是太扎眼了哈哈,请问我是丢了什么步骤?lsmod | grep nvidia是有好几行输出的,而 lsmod | grep nouveau是没有输出结果的

Reply View the author
川顺页
deepin
2024-04-25 11:16
#22
fozei

向楼主请教:我突然发现我虽然装好了,但是貌似显卡并没有工作,而是核心显卡在工作:

image.png

那个 No running processes found真是太扎眼了哈哈,请问我是丢了什么步骤?lsmod | grep nvidia是有好几行输出的,而 lsmod | grep nouveau是没有输出结果的

如果你是笔记本,你还需要一个独显/集显的切换配置,可以去论坛搜一下。如果你是台式机,那么请将显示器插在显卡的接口上面。

Reply View the author
fozei
deepin
2024-04-25 11:57
#23
川顺页

如果你是笔记本,你还需要一个独显/集显的切换配置,可以去论坛搜一下。如果你是台式机,那么请将显示器插在显卡的接口上面。

台式机,显示器确实插在显卡的接口上面。我在想,有没有可能,起作用的,是核显,而这时候的我独立显卡,只起到了一个导线的作用?confused

Reply View the author
川顺页
deepin
2024-04-25 14:06
#24
fozei

台式机,显示器确实插在显卡的接口上面。我在想,有没有可能,起作用的,是核显,而这时候的我独立显卡,只起到了一个导线的作用?confused

不过看着也占用了200多M的显存了,可能只是没有显示出具体程序而已,所以应该和集显无关。

Reply View the author
mirai2333
deepin
2024-08-08 14:33
#25

很好,很有精神

Reply View the author
2 / 2
To page