Xlib: extensão “GLX” ausente - com uma placa NVIDIA e placa de vídeo integrada

17

Eu tenho uma máquina com uma NVIDIA GeForce que não uso para fins de exibição (ou seja, o monitor não está conectado a ela) e alguns chips gráficos on-board sem brilho. (Abaixo, você encontrará a lshwlistagem relevante .)

Minhas sessões X funcionam muito bem; mas quando a maioria dos meus aplicativos X (que exigem qualquer tipo de GFX ou um kit de ferramentas) é executada, eles emitem a seguinte mensagem de erro:

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

Minha pergunta é: Como posso fazer com que meus aplicativos notem a biblioteca não NVIDIA GLX e a usem (sem remover a placa NVIDIA e sem alternar o monitor para suas portas de saída, é claro)?

Estou usando o Debian / Linux Stretch 64bit, versão do kernel 4.2.6, com o LXDE.

Saída 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)

Saída 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".

Saída 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"

Informação adicional:

  • Eu não tenho o glx-alternative-nvidiapacote instalado.
  • Se eu inicializar a partir de uma imagem ao vivo USB do Devuan ASCII, o problema não se manifesta.
  • Se eu criar um xorg.confusando Xorg :1 -configure, é isso que ele produz (2 seções 'Dispositivo', uma associada ao inteldriver, outra com nouveau); mas se eu comentar a seção nouveau e tentar executar o Xorg com essa configuração - ele não será carregado, dizendo que não consegue encontrar nenhuma tela.
einpoklum
fonte
A solução para mim foi remover bumblebeee instalar nvidia-bumblebee(no Debian Jessie, usando os pacotes backports gfx).
Skeen

Respostas:

8

Cheguei aqui após a instalação nvidia-currentdo repositório de pacotes e fiquei preso em um loop de login . Eu olhei para o logon ~/.xsession-errorse encontrei o erro mencionado:

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

Eu já tinha desinstalado nvidia-currente o problema persistiu. Eu também não tinha glx-alternative-nvidiainstalado. Como último recurso, simplesmente desinstalei tudo do nvidiameu Ubuntu (incluindo o material CUDA) e funcionou após o reinício.

villasv
fonte
Desculpe por não responder a isso antes. Não tenho nvidia-currentinstalado nem, de fato, nenhum nvidia-pacote. Mas eu tenho o CUDA mais recente instalado, com o driver que acompanha (o instalador manual da nvidia). Sei que é uma maneira feia de fazer as coisas, mas preciso da versão mais recente.
einpoklum 16/03
1

Primeiro identifique qual módulo glx está em 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"

No Debian 8 Jessie, minha solução foi remover o glx-alternative-nvidiapacote. Então, após a reinicialização:

$ 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
fonte
1
Na verdade, estou começando apenas com o módulo de comando X.Org ... veja editar.
Einpoklum
1
E como você o remove? Não está listado nos meus apt-getpacotes.
villasv 01/10/16
1
@VillasV, você precisa habilitar o contribrepositório para vê-lo. E, provavelmente, você nem o instalou e, portanto, a causa da falta de erro de extensão glx é diferente.
svlasov
Nitpick menor: por que você diz cat file | grep pattern? Por que não grep pattern file?
Timo
@Timo, apenas uma preferência pessoal. Na história do shell, acho mais fácil ver como o padrão evoluiu se durar.
svlasov
1

Eu o resolvi desinstalando o glx-alternative-nvidia

apt-get remove glx-alternative-nvidia
Gonzalo S Perilhou
fonte
Eu nem tenho o glx-alternative-nvidiapacote instalado ...
einpoklum 21/01
1

Eu tive problemas após atualizar o Debian 9 depois de clicar no prompt de reinicialização para atualizar.

Ao instalar inicialmente, segui as etapas encontradas no wiki https://wiki.debian.org/NvidiaGraphicsDrivers

Os mais importantes para mim foram ...

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

Em seguida, realizou uma reinicialização

Gabriel Gates
fonte
0

Instale o OpenGL no seu computador e, como mencionado aqui , adicione o seguinte ao seu /etc/X11/xorg.conf:

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

(Substitua nvidia-VERSIONpelo nome do diretório) Isso funcionou para mim.

Gokul NC
fonte
1
Eu não tenho o primeiro diretório. Na verdade, eu nem tenho um /etc/X11/xorg.confpor algum motivo.
einpoklum
1
Você pode tê-lo criado para você com:sudo nvidia-xconfig
Gabriel Fair
@ GabrielFair: Eu absolutamente não deveria fazer isso. Isso provavelmente fará com que meu cartão nVIDIA seja usado para o X; e mesmo que não - é conceitualmente inadequado.
einpoklum 25/01
0

Entendi "extensão" GLX "ausente" quando "dist-upgrade" meu debian (8 -> 9). A solução foi bem simples.

Faça o download do instalador do driver na 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]

Depois que o instalador fez seu trabalho, o GLX voltou.

ps: Se o usuário reposar, acho que um dpkg-reconfigure "driver_package_name" faria o mesmo.

FabricioFCarv
fonte
1
Se não me engano, isso fará com que o X use o módulo nVIDIA GLX. O que não é o que eu quero, pois não estou usando minha GPU para fins de exibição.
einpoklum 16/03