Xlib: falta la extensión "GLX" - con una tarjeta NVIDIA y gráficos integrados

17

Tengo una máquina con una GeForce de NVIDIA que no uso para fines de visualización (es decir, el monitor no está conectado a ella), y algunos chips de gráficos integrados mediocres. (A continuación encontrará la lshwlista relevante ).

Mis sesiones X funcionan bien; pero cuando se ejecutan la mayoría de mis aplicaciones X (que requieren algún tipo de GFX elegante o un kit de herramientas), emiten el siguiente mensaje de error:

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

Mi pregunta es: ¿cómo puedo hacer que mis aplicaciones noten la biblioteca GLX que no es NVIDIA y la usen (sin quitar la tarjeta NVIDIA y sin cambiar el monitor a sus puertos de salida, por supuesto)?

Estoy usando Debian / Linux Stretch 64bit, kernel versión 4.2.6, con LXDE.

Salida de 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)

Salida de 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".

Salida de 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"

Información Adicional:

  • No tengo el glx-alternative-nvidiapaquete instalado.
  • Si inicio desde un USB de imagen en vivo de Devuan ASCII, el problema no se manifiesta.
  • Si creo un xorg.confuso Xorg :1 -configure, esto es lo que produce (2 secciones de 'Dispositivo', una asociada con el intelcontrolador, otra con nouveau); pero si comento la sección nouveau e intento ejecutar Xorg con esa configuración, no se cargará, diciendo que no puede encontrar ninguna pantalla.
einpoklum
fuente
La solución para mí fue eliminar bumblebeee instalar nvidia-bumblebee(en Debian Jessie, utilizando los paquetes gfx de backports).
Skeen

Respuestas:

8

Llegué aquí después de instalar nvidia-currentdesde el repositorio de paquetes, y me quedé atascado en un bucle de inicio de sesión . Miré el inicio de sesión ~/.xsession-errorsy encontré el error mencionado:

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

Ya había desinstalado nvidia-currenty el problema persistió. Tampoco lo he glx-alternative-nvidiainstalado. Como último recurso, simplemente desinstalé todo desde nvidiami Ubuntu (incluyendo cosas de CUDA), y funcionó después del reinicio.

villasv
fuente
Perdón por no responder a esto antes. No tengo nvidia-currentinstalado, ni, de hecho, ningún nvidia-paquete. Pero tengo el último CUDA instalado, con el controlador que lo acompaña (el instalador manual de nvidia). Sé que es una forma fea de hacer las cosas, pero necesito la última versión.
einpoklum
1

Primero identifique qué módulo glx está en uso:

$ 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"

En Debian 8 Jessie, mi solución fue eliminar el glx-alternative-nvidiapaquete. Entonces, después de reiniciar:

$ 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
svlasov
fuente
1
En realidad, solo estoy obteniendo el módulo de función X.Org para empezar ... ver edición.
einpoklum
1
¿Y cómo lo quitas? No aparece en mis apt-getpaquetes.
villasv
1
@VillasV necesita habilitar el contribrepositorio para verlo. Y probablemente ni siquiera lo tenga instalado, y por lo tanto, su causa de error de extensión glx faltante es diferente.
svlasov
Minipick: ¿por qué lo dices cat file | grep pattern? ¿Por qué no grep pattern file?
Timo
@Timo, solo una preferencia personal. En la historia del shell, me resulta más fácil ver cómo evolucionó el patrón si es el último.
svlasov
1

Lo resolví desinstalando glx-alternative-nvidia

apt-get remove glx-alternative-nvidia
Gonzalo S Perilhou
fuente
Ni siquiera tengo el glx-alternative-nvidiapaquete instalado ...
einpoklum
1

Tuve problemas después de actualizar Debian 9 después de hacer clic en el indicador de reinicio para actualizar.

Al instalar inicialmente, seguí los pasos que se encuentran en la wiki https://wiki.debian.org/NvidiaGraphicsDrivers

Los más importantes para mí fueron ...

# apt-get update
# apt-get install -t stretch-backports nvidia-driver

Luego realizó un reinicio

Gabriel Gates
fuente
0

Instale OpenGL en su computadora, luego, como se menciona aquí , agregue lo siguiente a su /etc/X11/xorg.conf:

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

(Reemplace nvidia-VERSIONcon el nombre de su directorio) Esto funcionó para mí.

Gokul NC
fuente
1
No tengo el primer directorio. De hecho, ni siquiera tengo una /etc/X11/xorg.confpor alguna razón.
einpoklum
1
Puede crearlo para usted consudo nvidia-xconfig
Gabriel Fair
@GabrielFair: Absolutamente no debería hacer eso. Esto probablemente hará que mi tarjeta nVIDIA se use para X; e incluso si no lo hace, es conceptualmente inapropiado.
einpoklum
0

Obtuve la "extensión" GLX "ausente" cuando "actualicé" mi debian (8 -> 9). La solución fue bastante simple.

Descargue el instalador de su controlador en 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]

Después de que el instalador hizo su trabajo, el GLX regresó.

ps: si tu usuario repos, creo que un dpkg-reconfigure "driver_package_name" haría lo mismo.

FabricioFCarv
fuente
1
Si no me equivoco, esto hará que X use el módulo nVIDIA GLX. Lo cual no es lo que quiero, ya que no estoy usando mi GPU para fines de visualización.
einpoklum