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
观察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
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。