Xlib:缺少扩展名“ GLX”-具有NVIDIA卡和板载图形


17

我有一台装有NVIDIA GeForce的机器(我没有将其用于显示目的)(即显示器未连接到显示器),以及一些乏味的板载图形芯片。(在下面找到相关lshw列表。)

我的X会话工作正常;但是当我的大多数X应用程序(需要任何形式的GFX或工具包)运行时,它们会发出以下错误消息:

Xlib:  extension "GLX" missing on display ":0".

我的问题是:如何使我的应用注意到非NVIDIA GLX库并使用它(当然,无需卸下NVIDIA卡,也无需将显示器切换到其输出端口)?

我正在使用带有LXDE的Debian / Linux Stretch 64位,内核版本4.2.6。

输出lshw -c display

  *-display               
       description: VGA compatible controller
       product: GK106 [GeForce GTX 650 Ti Boost]
       vendor: NVIDIA Corporation
       physical id: 0
       bus info: pci@0000:02:00.0
       version: a1
       width: 64 bits
       clock: 33MHz
       capabilities: pm msi pciexpress vga_controller bus_master cap_list rom
       configuration: driver=nvidia latency=0
       resources: irq:17 memory:f6000000-f6ffffff memory:e0000000-e7ffffff memory:e8000000-e9ffffff ioport:e000(size=128) memory:f7000000-f707ffff
  *-display
       description: VGA compatible controller
       product: Xeon E3-1200 v2/3rd Gen Core processor Graphics Controller
       vendor: Intel Corporation
       physical id: 2
       bus info: pci@0000:00:02.0
       version: 09
       width: 64 bits
       clock: 33MHz
       capabilities: msi pm vga_controller bus_master cap_list rom
       configuration: driver=i915 latency=0
       resources: irq:30 memory:f7400000-f77fffff memory:d0000000-dfffffff ioport:f000(size=64)

输出glxinfo

Xlib:  extension "GLX" missing on display ":0".
Xlib:  extension "GLX" missing on display ":0".
Xlib:  extension "GLX" missing on display ":0".
Xlib:  extension "GLX" missing on display ":0".
Xlib:  extension "GLX" missing on display ":0".
Xlib:  extension "GLX" missing on display ":0".
Xlib:  extension "GLX" missing on display ":0".
Error: couldn't find RGB GLX visual or fbconfig
Xlib:  extension "GLX" missing on display ":0".
Xlib:  extension "GLX" missing on display ":0".
Xlib:  extension "GLX" missing on display ":0".
Xlib:  extension "GLX" missing on display ":0".
Xlib:  extension "GLX" missing on display ":0".
Xlib:  extension "GLX" missing on display ":0".
Xlib:  extension "GLX" missing on display ":0".
Xlib:  extension "GLX" missing on display ":0".
Xlib:  extension "GLX" missing on display ":0".
Xlib:  extension "GLX" missing on display ":0".

输出cat /var/log/Xorg.0.log | grep glx

[    19.287] (II) LoadModule: "glx"
[    19.787] (II) Loading /usr/lib/xorg/modules/extensions/libglx.so
[    22.727] (II) Module glx: vendor="X.Org Foundation"

附加信息:

  • 我没有glx-alternative-nvidia安装软件包。
  • 如果我从Devuan ASCII的实时映像USB引导,则不会出现问题。
  • 如果我创建一个xorg.conf使用Xorg :1 -configure是它产生(2“设备”部分,一个与相关联的intel驱动器,另一个用nouveau); 但是,如果我注释掉nouveau部分,并尝试使用该配置运行Xorg,它将无法加载,表示找不到任何屏幕。

对我来说,解决方案是删除bumblebee和安装nvidia-bumblebee(在Debian Jessie上,使用backports gfx软件包)。
Skeen 2013年

Answers:


8

nvidia-current从软件包存储库安装后,我到达了这里,并陷入了登录循环。我查看了登录信息~/.xsession-errors,发现了提到的错误:

Xlib: extension "GLX" missing on display ":0".

我已经卸载nvidia-current了,问题仍然存在。我也没有glx-alternative-nvidia安装。作为最后的选择,我只是从nvidiaUbuntu上卸载了所有内容(包括CUDA东西),并且在重新启动后就可以使用了。


抱歉,您之前没有对此进行回复。我还没有nvidia-current安装,实际上也没有任何nvidia-软件包。但是我确实安装了最新的CUDA,以及随附的驱动程序(来自nvidia的手动安装程序)。我知道这是做事的丑陋方式,但我确实需要最新版本。
einpoklum

1

首先确定正在使用哪个glx模块:

$ cat /var/log/Xorg.0.log | grep glx
[     3.622] (II) LoadModule: "glx"
[     3.624] (II) Loading /usr/lib/xorg/modules/extensions/libglx.so
[     3.705] (II) Module glx: vendor="NVIDIA Corporation"

在Debian 8 Jessie中,我的解决方案是删除glx-alternative-nvidia软件包。因此,重新启动后:

$ cat /var/log/Xorg.0.log | grep glx
[     3.581] (II) LoadModule: "glx"
[     3.582] (II) Loading /usr/lib/xorg/modules/extensions/libglx.so
[     3.592] (II) Module glx: vendor="X.Org Foundation"

$ glxinfo | grep "OpenGL renderer"
OpenGL renderer string: Mesa DRI Intel(R) Haswell Desktop

1
实际上,我实际上只是从X.Org功能模块开始……请参阅编辑。
einpoklum's

1
以及如何删除它?它没有在我的apt-get包裹中列出。
villasv

1
@VillasV,您需要启用contrib存储库才能看到它。而且可能甚至没有安装它,因此丢失glx扩展错误的原因也有所不同。
svlasov

小nitpick:为什么这么说cat file | grep pattern?为什么不grep pattern file呢?
Timo '18

@Timo,只是个人喜好。在shell历史中,我发现更容易看到模式在最后运行时如何演变。
svlasov '18年



0

在您的计算机上安装OpenGL,然后如此处所述,将以下内容添加到您的计算机中/etc/X11/xorg.conf

Section "Files"
    ModulePath "/usr/lib/nvidia-VERSION/xorg"
    ModulePath "/usr/lib/xorg/modules"
EndSection

nvidia-VERSION用您的目录名替换)这对我有用。


1
我没有第一个目录。实际上,/etc/X11/xorg.conf由于某种原因,我什至没有。
einpoklum

1
您可以通过sudo nvidia-xconfig
Gabriel Fair

@GabrielFair:我绝对不应该那样做。这可能会使我的nVIDIA卡用于X。即使不会,从概念上讲也是不合适的。
einpoklum

0

当我“远程升级”我的Debian(8-> 9)时,得到了“扩展名” GLX”丢失的信息。解决方案非常简单。

在NVIDIA上下载驱动程序安装程序

service lightdm stop
#(ALT+F1) + your credentials
sudo nvidia-installer --uninstall
sudo ./NVIDIA-Linux-x86_64-340.102-custom.run #my vga GT218M [GeForce 310M]

安装程序完成工作后,GLX返回。

ps:如果您使用用户回购协议,我认为dpkg-reconfigure“ driver_package_name”会做同样的事情。


1
如果我没记错的话,这将使X使用nVIDIA GLX模块。这不是我想要的,因为我没有将GPU用于显示目的。
einpoklum
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.