206. Linux中显卡相关
Tips:
- 请在
bash
Shell上执行以下命令,zsh
可能达不到预期结果
安装
安装步骤
添加源
如果需要安装新版本的驱动可以先添加源:
1
2sudo add-apt-repository ppa:graphics-drivers/ppa
sudo apt update禁用开源驱动nouveau
前面提到,Ubuntu默认是使用开源驱动nouveau的。因此在安装NVIDIA驱动前需要禁用nouveau,方法如下:
连续执行以下两条命令
1
2sudo bash -c "echo blacklist nouveau > /etc/modprobe.d/blacklist-nvidia-nouveau.conf"
sudo bash -c "echo options nouveau modeset=0 >> /etc/modprobe.d/blacklist-nvidia-nouveau.conf"这两条命令将在文件
/etc/modprobe.d/blacklist-nvidia-nouveau.conf
中写入禁用nouveau的配置,当然也可以直接找到这个文件用编辑器(vim或者gedit)把配置写进去。然后可以执行以下命令验证以上的指令输入到
/etc/modprobe.d/blacklist-nvidia-nouveau.conf
这个文件中:1
cat /etc/modprobe.d/blacklist-nvidia-nouveau.conf
如果显示以下信息就表示已经成功禁用了:
1
2blacklist nouveau
options nouveau modeset=0
执行
ubuntu-drivers devices
, 如下所示:1
2
3
4
5
6
7
8
9
10
11== /sys/devices/pci0000:00/0000:00:01.0/0000:01:00.0 ==
modalias : pci:v000010DEd00001C8Csv00001028sd00000798bc03sc00i00
vendor : NVIDIA Corporation
model : GP107M [GeForce GTX 1050 Ti Mobile]
driver : nvidia-driver-390 - third-party free
driver : nvidia-driver-430 - distro non-free
driver : nvidia-driver-415 - third-party free
driver : nvidia-driver-435 - distro non-free
driver : nvidia-driver-440 - third-party free recommended
driver : nvidia-driver-410 - third-party free
driver : xserver-xorg-video-nouveau - distro free builtin选择
recommended
(推荐的) 安装1
sudo apt install -y alsa nvidia-driver-440
可使用下面命令,查看是否安装成
lshw -numeric -C display
输出:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26WARNING: you should run this program as super-user.
*-display
description: VGA compatible controller
product: GP107M [GeForce GTX 1050 Ti Mobile] [10DE:1C8C]
vendor: NVIDIA Corporation [10DE]
physical id: 0
bus info: pci@0000:01:00.0
version: a1
width: 64 bits
clock: 33MHz
capabilities: vga_controller bus_master cap_list rom
configuration: driver=nvidia latency=0
resources: irq:128 memory:de000000-deffffff memory:c0000000-cfffffff memory:d0000000-d1ffffff ioport:e000(size=128) memory:df000000-df07ffff
*-display
description: VGA compatible controller
product: Intel Corporation [8086:591B]
vendor: Intel Corporation [8086]
physical id: 2
bus info: pci@0000:00:02.0
version: 04
width: 64 bits
clock: 33MHz
capabilities: vga_controller bus_master cap_list rom
configuration: driver=i915 latency=0
resources: irq:127 memory:dd000000-ddffffff memory:b0000000-bfffffff ioport:f000(size=64) memory:c0000-dffff
WARNING: output may be incomplete or inaccurate, you should run this program as super-user.lspci -vnn | grep VGA
输出:
1
200:02.0 VGA compatible controller [0300]: Intel Corporation Device [8086:591b] (rev 04) (prog-if 00 [VGA controller])
01:00.0 VGA compatible controller [0300]: NVIDIA Corporation GP107M [GeFor
手动安装
使用官方的 NVIDIA 驱动进行手动安装
下载 NVIDIA 官方驱动,https://www.nvidia.cn/Download/index.aspx?lang=cn
停止可视化桌面:sudo telinit 3
在相应路径下安装 NVIDIA 驱动:
1 | $ sudo bash ./NVIDIA-Linux-x86_64-440.31.run |
按提示安装即可,重启完成!
QAs
Failed to initialize NVML: Driver/library version mismatch
问题描述
用户执行nvidia-smi命令时遇到报错:Failed to initialize NVML: Driver/library version mismatch。
可能原因
用户在升级或者降级NVIDIA驱动时如果未按照升级或降级NVIDIA驱动进行操作,导致之前加载的旧的驱动未卸载干净,并与新的驱动冲突,引发驱动未正常加载。
NVIDIA驱动库版本与系统内核模块不一致。要修复此问题,我们只需删除当前的 nvidia 驱动程序并重新安装正确的 NVIDIA 驱动程序版本即可。我们可以参考以下步骤来修复这个错误。
解决方案
方案1
步骤1:检查内核版本
使用命令行查询当前显卡驱动使用的内核版本
1
2
3$ cat /proc/driver/nvidia/version
NVRM version: NVIDIA UNIX x86_64 Kernel Module 535.129.03 Thu Oct 19 18:56:32 UTC 2023
GCC version: gcc version 11.4.0 (Ubuntu 11.4.0-1ubuntu1~22.04)NVRM版本内核模块为535.129.03,系统内核为22.04。
步骤2:删除 Nvidia 驱动程序
让我们清除包括 nvidia-common 在内的所有 NVIDIA 软件包,运行以下命令。
1 | $ sudo apt purge nvidia-* |
如果相关包已被清除,则以下命令的输出将为空。
1 | $ dpkg -l | grep -i nvidia |
步骤3:查找可用的驱动程序版本
我们可以使用Ubuntu自带的驱动管理工具ubuntu-drivers devices来查询当前版本Ubuntu推荐的驱动。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15$ ubuntu-drivers devices
== /sys/devices/pci0000:00/0000:00:01.0/0000:01:00.0/0000:02:08.0/0000:03:00.0 ==
modalias : pci:v000010DEd000013BBsv000010DEsd00001098bc03sc00i00
vendor : NVIDIA Corporation
model : GM107GL [Quadro K620]
driver : nvidia-driver-535 - distro non-free recommended
driver : nvidia-driver-450-server - distro non-free
driver : nvidia-driver-390 - distro non-free
driver : nvidia-driver-525 - distro non-free
driver : nvidia-driver-525-server - distro non-free
driver : nvidia-driver-470-server - distro non-free
driver : nvidia-driver-470 - distro non-free
driver : nvidia-driver-535-server - distro non-free
driver : nvidia-driver-418-server - distro non-free
driver : xserver-xorg-video-nouveau - distro free builtin输出结果如上,有一行出现了“recommended”,说明系统推荐了这个驱动,即nvidia-driver-535。
步骤 4:重新安装正确的驱动程序
要安装推荐的驱动程序,请运行以下命令。
1
$ sudo apt install nvidia-driver-535
另外,您还可以执行以下命令来自动安装推荐版本的驱动程序。此时,机器上会自动安装上述推荐版本的驱动程序。
1
$ sudo ubuntu-drivers autoinstall
步骤5:重新启动系统
重新启动计算机以使更改生效。
1
$ sudo reboot
步骤6:验证问题是否已修复
最后,在我们重新启动机器后,请输入以下命令测试驱动安装。如下图所示,可以看到推荐版本的驱动安装成功。
1
$ nvidia-smi
方案2 (没试过)
此问题原因是NVIDIA 内核驱动版本与系统驱动不一致,可参考以下步骤解决。
查看内核加载了哪些涉及GPU的模块。
1
lsmod | grep nvidia
查看下有哪些进程使用了 nvidia*。
1
sudo lsof -n -w /dev/nvidia*
卸载对应的GPU在内核中的模块或者启动的进程。
1
2
3
4
5
6
7rmmod nvidia_drm
rmmod nvidia_modeset
rmmod nvidia
kill -9 xxx重启nvidia-smi。
1
nvidia-smi
connection timed out Could not connect to ppa.launchpad.net:80
When I experience this (occasionally with no network changes), I find that using apt-get instead of apt works.