编辑6 升级到 ubuntu 21.10 后,gl 支持的剩余问题在升级后神奇地解决了。
编辑5
我首先比较 via meld
/etc/X11
,/etc/modprobe.d
并/lib/modprobe.d
注意到在我的实际系统中存在一个nvidia-kms.conf
包含以下内容的文件:
# This file was generated by nvidia-prime
# Set value to 1 to enable modesetting
options nvidia-drm modeset=1
由于 USB 安装中缺少此文件,因此我尝试将该值设置为 0 而不是 1,成功了。
现在看来有效了。但据我所知,modset 值 1 是为了避免屏幕撕裂。所以我必须观察是否出现任何撕裂问题(到目前为止还没有注意到)。我也不明白为什么使用值 1 会阻止外部端口工作。所以可能还有另一个潜在的问题,我认为到目前为止这个问题还没有完全解决。
我有一种感觉,它可能需要对 wayland 做一些事情(实际上我不需要,因为我使用 xmonad)。
此外,输出中的 GL 部分inxi
仍然丢失并且glxgears
无法工作。我注意到我的 USB 系统中有一个文件/usr/lib/xorg/modules/libglamoregl.so
在我的实际系统中不存在。我不确定它是否只是为了复制文件而保存,并且到目前为止还没有 ubuntu 包提供此文件。该文件包含在xserver-xorg-核心包裹。重新安装它使该文件出现,但没有解析 inxi 报告或 glxgears(重新启动后)。
编辑4sudo ubuntu-drivers install
我刚刚创建了一个永久实时 USB 记忆棒并使用(版本 390) 安装了 nvidia 驱动程序。在 USB 记忆棒系统中它可以工作。
现在我的想法是找出配置之间的相关差异,以找到实际系统中的错误根源。但是我真的不知道我应该比较哪些文件或目录。你会建议什么。
编辑3
我注意到failed to load module "glamoregl" (module does not exist, 0)
,这可能解释了编辑 2 中缺少的 GL 部分。但我没有找到任何要在 ubuntu 21.04 中安装的 glamorgl 模块,也不明白这与我的主要问题(外部端口不存在)有何关系检测到。 GL 缺少某种方式似乎已得到确认,glxgears
该方式不会启动,但会给出以下错误消息:
glxgears
X Error of failed request: BadValue (integer parameter out of range for operation)
Major opcode of failed request: 154 (GLX)
Minor opcode of failed request: 3 (X_GLXCreateContext)
Value in failed request: 0x0
Serial number of failed request: 24
Current serial number in output stream: 25
编辑2
在以多种方式安装和卸载驱动程序后,我没有取得任何成功,但我注意到 inxi 输出有点不同(没有 GL 支持):
Graphics: Device-1: Intel 3rd Gen Core processor Graphics vendor: Lenovo driver: i915 v: kernel
bus ID: 00:02.0
Device-2: NVIDIA GK107GLM [Quadro K2000M] vendor: Lenovo driver: nvidia v: 390.144
bus ID: 01:00.0
Display: server: X.Org 1.20.11 driver: loaded: modesetting,nvidia
unloaded: fbdev,nouveau,vesa resolution: 1920x1080~60Hz
OpenGL: renderer: N/A v: N/A direct render: N/A
输出看起来也nvidia-smi
有点不同:
Sat Jan 1 17:29:52 2022
+-----------------------------------------------------------------------------+
| NVIDIA-SMI 390.144 Driver Version: 390.144 |
|-------------------------------+----------------------+----------------------+
| GPU Name Persistence-M| Bus-Id Disp.A | Volatile Uncorr. ECC |
| Fan Temp Perf Pwr:Usage/Cap| Memory-Usage | GPU-Util Compute M. |
|===============================+======================+======================|
| 0 Quadro K2000M Off | 00000000:01:00.0 Off | N/A |
| N/A 41C P8 N/A / N/A | 70MiB / 1999MiB | 0% Default |
+-------------------------------+----------------------+----------------------+
+-----------------------------------------------------------------------------+
| Processes: GPU Memory |
| GPU PID Type Process name Usage |
|=============================================================================|
| 0 4088 G /usr/lib/xorg/Xorg 67MiB |
+-----------------------------------------------------------------------------+
所以我完全迷失了。并不是说在我最初的问题中我使用了版本 430,现在使用了 390(这是我的卡的推荐驱动程序),但问题本质上是相同的。
编辑:在再次安装 nvidia 后(我同时使用了 noveau),我在 ubuntu 21.04 上再次遇到了同样的问题(如下所述)sudo ubuntu-drivers autoinstall
。
输出nvidia-smi
:
nvidia-smi
Tue Dec 28 20:41:50 2021
+-----------------------------------------------------------------------------+
| NVIDIA-SMI 390.144 Driver Version: 390.144 |
|-------------------------------+----------------------+----------------------+
| GPU Name Persistence-M| Bus-Id Disp.A | Volatile Uncorr. ECC |
| Fan Temp Perf Pwr:Usage/Cap| Memory-Usage | GPU-Util Compute M. |
|===============================+======================+======================|
| 0 Quadro K2000M Off | 00000000:01:00.0 Off | N/A |
| N/A 38C P8 N/A / N/A | 5MiB / 1999MiB | 0% Default |
+-------------------------------+----------------------+----------------------+
+-----------------------------------------------------------------------------+
| Processes: GPU Memory |
| GPU PID Type Process name Usage |
|=============================================================================|
| No running processes found |
+-----------------------------------------------------------------------------+
如果您需要其他日志文件或工具的输出,请告诉我,我会添加它。
原问题
我的笔记本电脑 (Thinkpad W530) 有一个 VGA 和一个迷你 DP 端口(或通过扩展坞的 DP 端口)。 Ubuntu 18.04,尤其是 xrandr 似乎无法识别 DP。例如,如果我跑步xrandr
给我
Screen 0: minimum 8 x 8, current 1920 x 1080, maximum 16384 x 16384
LVDS-1-1 connected 1920x1080+0+0 (normal left inverted right x axis y axis) 344mm x 193mm
1920x1080 60.00*+ 59.97 59.96 59.93 50.00
1680x1050 59.95 59.88
1600x1024 60.17
1400x1050 59.98
1600x900 59.99 59.94 59.95 59.82
1280x1024 60.02
1440x900 59.89
1400x900 59.96 59.88
1280x960 60.00
1440x810 60.00 59.97
1368x768 59.88 59.85
1360x768 59.80 59.96
1280x800 59.99 59.97 59.81 59.91
1152x864 60.00
1280x720 60.00 59.99 59.86 59.74
1024x768 60.04 60.00
960x720 60.00
928x696 60.05
896x672 60.01
1024x576 59.95 59.96 59.90 59.82
960x600 59.93 60.00
960x540 59.96 59.99 59.63 59.82
800x600 60.00 60.32 56.25
840x525 60.01 59.88
864x486 59.92 59.57
800x512 60.17
700x525 59.98
800x450 59.95 59.82
640x512 60.02
720x450 59.89
700x450 59.96 59.88
640x480 60.00 59.94
720x405 59.51 58.99
684x384 59.88 59.85
680x384 59.80 59.96
640x400 59.88 59.98
576x432 60.06
640x360 59.86 59.83 59.84 59.32
512x384 60.00
512x288 60.00 59.92
480x270 59.63 59.82
400x300 60.32 56.34
432x243 59.92 59.57
320x240 60.05
360x202 59.51 59.13
320x180 59.84 59.32
VGA-1-1 disconnected (normal left inverted right x axis y axis)
因此,不仅 DP 上的外接显示器无法识别,甚至端口本身似乎也无法识别(它没有显示“DP...已断开连接”之类的内容)。
如果我检查prime-select query
我得到nvidia
。我使用的是 nvidia 驱动程序 430。
我应该补充一点,外部显示器可以与实时 USB 记忆棒配合使用,并且它在过去也可以使用。然而我已经好几个月没有使用它了,所以可能是我在此期间搞砸了一些事情。因此,我不认为没有错误,而是某个地方配置错误。
我可以做什么来确定问题的根源以及如何修复它(但我不想重新安装整个系统)?
如果我要求nvidia-settings
检测外部屏幕,它也找不到任何东西。
我还尝试将 BIOS 设置从 optimus 更改为独立显卡。但后来我什至无法登录到我的图形界面(我xmonad
在没有显示管理器的情况下用作 WM,仅使用startx
)。
这里是我的/var/log/Xorg.0.log
。
输出lspci -nnk | grep -iA2 vga
:
lspci -nnk | grep -iA2 vga
00:02.0 VGA compatible controller [0300]: Intel Corporation 3rd Gen Core processor Graphics Controller [8086:0166] (rev 09)
Subsystem: Lenovo 3rd Gen Core processor Graphics Controller [17aa:21f5]
Kernel driver in use: i915
--
01:00.0 VGA compatible controller [0300]: NVIDIA Corporation GK107GLM [Quadro K2000M] [10de:0ffb] (rev a1)
Subsystem: Lenovo GK107GLM [Quadro K2000M] [17aa:21f5]
Kernel driver in use: nvidia
输出inxi -Gx
:
Graphics: Card-1: Intel 3rd Gen Core processor Graphics Controller bus-ID: 00:02.0
Card-2: NVIDIA GK107GLM [Quadro K2000M] bus-ID: 01:00.0
Display Server: X.Org 1.19.6 drivers: modesetting,nvidia (unloaded: fbdev,vesa,nouveau)
Resolution: [email protected]
OpenGL: renderer: Quadro K2000M/PCIe/SSE2 version: 4.6.0 NVIDIA 430.09 Direct Render: Yes
并sudo lshw -class video | grep driver=
给出:
configuration: driver=nvidia latency=0
configuration: driver=i915 latency=0
lsmod | grep nvidia
给出
lsmod | grep nvidia
nvidia_uvm 815104 0
nvidia_drm 45056 4
nvidia_modeset 1101824 1 nvidia_drm
nvidia 18448384 98 nvidia_uvm,nvidia_modeset
drm_kms_helper 167936 2 nvidia_drm,i915
ipmi_msghandler 53248 2 ipmi_devintf,nvidia
drm 401408 7 drm_kms_helper,nvidia_drm,i915
我还检查了lsmod vesa
是否lsmod nouveau
有回退到 vesa 或 nouveau。但这会导致没有输出。