share:川顺页

折腾背景

自带的闭源驱动有时候动画有撕裂感
加上安装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版,也就是测试版,不是正式版,所以你去官网驱动下载页面是搜不到的,要去论坛。
2.点进去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这个下载就行了。
3.更新前先把已经安装好的闭源驱动给卸载了。

sudo apt purge nvidia-driver nvidia-kernel-dkms nvidia-*
sudo apt autoremove

4.观察一下英伟达的驱动,目前还是在运行中。

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

5.观察开源驱动是否起来了,因为你卸载闭源驱动后,linux内核会自动启动开源驱动来代替,如果没输出就是没用开源驱动,否则说明开源驱动已经安装起来了。

$ lsmod | grep nouveau   
nouveau              2121728  0

但是我待会还要装闭源驱动,不需要这个开源驱动(开源驱动性能也不咋地)
所以我需要屏蔽这个开源驱动,输入下面的命令完成这个事情。

sudo tee -a /etc/modprobe.d/blacklist-nouveau.conf > /dev/null <<EOT
# disable nvidia open driver: nouveau
blacklist nouveau
options nouveau modeset=0
EOT


更新一下内核信息,让内核下次启动的时候自动屏蔽开源英伟达驱动。

sudo update-initramfs -u


再次重启一下(可能重启会比较慢,因为他读不到驱动了,最慢可能需要2-3分钟才能关机)。

sudo reboot now


最后再验证一下开源英伟达驱动是否正确屏蔽了(没输出任何信息就说明成功屏蔽)

lsmod | grep nouveau


安装英伟达论坛下载的最新驱动(需要提前安装好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


验证驱动是否ok
用自带的nvidia-smi查看英伟达驱动信息。

nvidia-smi

image.png

观察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
dkms status                                                               

感兴趣的可以看看这里 ,有挺多的技术文

支持一下排名


慵懒的猫mi
1 声望0 粉丝